PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP select option in while Schleife -> weitere Variable ins $_POST übergeben


daflow
2007-12-10, 21:59:49
In einem Pulldownmenue soll ein Wert zur Auswahl angezeigt werden über eine whileSchleife (s.u.) klappt wunderbar lässt sich auch mit $_Post wunderbar ansprechen... ich bräuchte aber auch eine weitere Variable(die CPID) im $_POST... sämtliche Versuche über eine hidden inputVariable diese in der whileschleife mitzuübergeben, haben mit aber das OptionValue zerlegt... :/
Vorschläge Ideen?


<td><select name=cpname>
<?php
//Selektion und Anzeige aller Applikationsverantwortlicher im Pulldownmenue
$rescp=odbc_exec($connid,"select CPNAME,CPID from APPL.CONTPERSON");
while (odbc_fetch_row($rescp))
{
$cpname=odbc_result($rescp,"CPNAME");
$cpid=odbc_result($rescp,"CPID");
print "<option value=\"$cpname\">$cpname </option>";
}
?>
</select></td>
</tr>

<tr>
<td><input type="submit" name="add" value="Beziehung hinzufügen" /></td><td>
</td>

darph
2007-12-10, 22:21:21
Die ID ist der eindeutige Bezeichner, Primärschlüssel, der Person, nicht ihr Name. Also muß die Value der Einträge auch diese ID sein, nicht der Name. Den Namen mußt du nicht mit in den nächsten Schritt schicken. Den kannst du dir anhand der ID auf der nächsten Seite ja wieder holen. Der ist ja hier nur wichtig, damit der User weiß, wen (= welche ID) er auswählen soll.

btw:
$string = '<option value="'.$cpid.'">'.$cpname.'</option>'; dann klappt das auch mit dem Syntaxhighlighting und es minimiert Fehleranfälligkeit wegen wilder Rumescaperei. Oder besser gleich sprintf()

daflow
2007-12-10, 22:28:01
Die ID ist der eindeutige Bezeichner, Primärschlüssel, der Person, nicht ihr Name. Also muß die Value der Einträge auch diese ID sein, nicht der Name. Den Namen mußt du nicht mit in den nächsten Schritt schicken. Den kannst du dir anhand der ID auf der nächsten Seite ja wieder holen. Der ist ja hier nur wichtig, damit der User weiß, wen (= welche ID) er auswählen soll.

btw:
$string = '<option value="'.$cpid.'">'.$cpname.'</option>'; dann klappt das auch mit dem Syntaxhighlighting und es minimiert Fehleranfälligkeit wegen wilder Rumescaperei. Oder besser gleich sprintf()

Ja wenn ich nur einen Parameter mitgeben kann ist die CPID als Identifier sicherlich sinnvoller, aber da ich im Post-Part auch den Cpname ausgeben will, wärs halt schön, wenn ich den mir gleich aus dem select mitnehmen könnte statt im Post teil nochmal auf die Tabelle zuzugreifen und den Namen zu holen, aber wenn das nicht möglich ist, isses ja OK, will ja nur keine unnötigen Schritte im Programm haben ;)

Matthias2x
2007-12-16, 01:32:58
nun ein dropdown-menü ist sicher nicht unbedingt geeignet für das was du vor hast .. aber wenn es denn sein muß dann probier doch einfach mal beide werte mit ins option feld einzufügen, etwa so:

<option value="' . $cpid . '|' . $cpname . '">' . $cpname . '</option>


du müsstest dann allerdings im auswertenden code den übergabewert von $_POST['cpname'] ersteinmal auseinandernehmen da er ja in etwa so aussieht "ID|Wert", das geht etwa so:

list($cp_id, $cp_name) = split('|', $_POST['cpname']);


ist vielleicht nicht sehr elegant, doch dann hast du beide werte zur verfügung .. die ID in $cp_id und den Wert in $cp_name