Form mit Link und verstecktem Feld versenden

Registrierer

Erfahrenes Mitglied
Ich hab hier ein triviales Problem:
Ich schicke ein Formular mittels JS ab, und versuche die zugehörige ID zu übermitteln.
Das klappt SO jedoch nicht:
PHP:
<form name="testForm" action="" method="post">
<?php
$art  = mysql_query("SELECT id FROM ".$artikel." ");
while($art_zeile = mysql_fetch_array($art))  {
  echo '<a href="#" onclick="javascript:document.forms[\'testForm\'].submit()">'.$art_zeile['id'].'</a><br>
        <input type="hidden" name="test" value="'.$art_zeile['id'].'">';
}
?>
</form>

Die DB Ausgabe ist:
Code:
Array
(
    [test] => Array
        (
            [0] => 52
            [1] => 55
            [2] => 56
            [3] => 69
        )

)
Egal welchen Link ich klicke, ich erhalte immer die letzte ID 69 in der Variable test!

Wie komme ich an die ID des jeweiligen Links?
 
Naja, was erwartest du denn auch? Du weist einem Namen mehrere Werte zu, was aber nicht möglich ist. Für einen der Werte muss sich der Browser nun einmal entscheiden, und das ist in diesem Fall eben immer der letzte. Du solltest vor dem Absenden das Feld auswählen, welches du auch absenden möchtest. Oder du löst es so hier:
PHP:
<form method="post" action="" name="testForm">
<?php
  $art = mysql_query('SELECT id FROM ' . $artikel);
  while ($row = mysql_fetch_array($art)) {
?>
  <button type="submit" name="test" value="<?php echo $row['id'] ?>"><?php echo $row['id'] ?></button>
<?php
  }
?>
CSS:
button {
  border: none;
  background: none;
}
 
... und meine Lösung hat noch den Vorteil, dass du dafür kein JavaScript brauchst. JavaScript ist eine sehr schöne Sache, aber wenn es eine Lösung gibt, die ohne funktioniert, sollte man stets diese wählen.
 
Da gibt Dir der Sachse voll Recht!
JS ist manchmal ne hilfreiche Krücke um komfortabler ans Ziel zu kommen.
Ohne ist besser, und das betrifft nicht nur JS ;-)
 
Zurück