Mehrere Werte in Radio-Group übergeben

erpelinho

Grünschnabel
Hallo,

weiß grad nich ob ich mich nur zu doof anstelle aber mal ne Frage.

Hab n Formular, dass dynamisch erstellt wird.
Code:
<form action="download.php" method="POST">
   <input type="hidden" name="token" value="<?php echo $token;?>">
   Choose the data you want to download:<br><br>
   <?php				
   while ($row = pg_fetch_row($result)) {
	<input type="radio" name="download" value="<?php print $row[3];?>">
	<input type="hidden" name="user" value="<?php print $row[0];?>">
	<input type="hidden" name="schema" value="<?php print $row[1];?>">
   <?php
   }
?>
</form>
Der Wer von $_POST['rdownload'] ändert sich ja immer Korrekt auf den Wert von $row[3].

Frage: Aber wie kann ich da jetzt noch weitere Werte übergeben? $_POST['user'] und $_POST['schema'] werden ja immer überschrieben bei jedem Schleifendurchlauf, sollen aber jeweils unterschiedliche Werte repräsentieren je nach Wahl des Radios.

Vielen Dank
Eric
 
Zuerst mal würde ich dir wegen der Übersicht empfehlen die ganzen <?PHP ... ?> wegzulassen.

Code:
<?php

print <<<END
<form action="download.php" method="POST">
<input type="hidden" name="token" value="$token">
Choose the data you want to download:<br><br>
END;

while ($row = pg_fetch_row($result)) {

print <<<END
<input type="radio" name="download" value="$row[3]">
<input type="hidden" name="user" value="$row[0]">
<input type="hidden" name="schema" value="$row[1]">
END;

}

?>
</form>

Ansonsten verstehe ich die Frage nicht.
Willst du bei Änderung der Auswahl vom Radio interaktiv die Werte der hidden Felder ändern?
Wenn ja, das geht nur mit JavaScript.
Oder willst du einen Radio-Button mit mehreren Auswahlmöglichkeiten?
Dann musst du mehrere input Felder vom Typ radio mit dem selben Namen machen.

http://de.selfhtml.org/html/formulare/auswahl.htm#radiobuttons
 
Hm naja um es deutlicher zu machen:

Schleifendurchlauf 1:
<input type="radio" name="download" value="key1">
<input type="hidden" name="user" value="info1a">
<input type="hidden" name="schema" value="info1b">

Schleifendurchlauf 2:
<input type="radio" name="download" value="key2">
<input type="hidden" name="user" value="info2a">
<input type="hidden" name="schema" value="info2b">

Schleifendurchlauf 3:
<input type="radio" name="download" value="key3">
<input type="hidden" name="user" value="info3a">
<input type="hidden" name="schema" value="info3b">

So hat aber nach der Schleife $_POST['user'] den Wert 3a. Wenn man aber key1 auswählt, will ich ja info1a haben.
 
In dem Fall musst du schon die Feldnamen verschieden wählen und nach submit die passenden Werte auslesen.
Wenn du das in einer Schleife machst, kannst du den Schleifenzähler als Teil vom Feldnamen verwenden.

Code:
$counter = 0;
while ($row = pg_fetch_row($result)) {
$counter++;
print <<<END
<input type="radio" name="download" value="key1_$counter">
<input type="hidden" name="user$counter" value="info1a">
<input type="hidden" name="schema$counter" value="info1b">
END;
}

Du musst nur als Trennzeichen ein Zeichen wählen, was im string nicht vorkommen kann, dann kannst du im Script was die Daten empfangen soll mit ein paar schmutzigen Tricks das Ganze schön kurz auslesen.

Code:
$temp = explode("_",$_POST['download']);
$userfield = "user".$temp[1];
$schemafield = "schema".$temp[1];

$download = $temp[0];
$user = $_POST[$userfield];
$schema = $_POST[$schemafield];
 
Zuletzt bearbeitet:
Hmm ich hab mir überlegt, dass et vllt noch einfacher geht, in dem ich auf die hidden fields verzichte und den value des radios gleich mit nem besonderen zeichen konkateniere.

Code:
<input type="radio" name="download" value="<?php print $row[3].";".$row[0].";".$row[1];?>">
 
Zurück