formularversand mit change()

providerwelt

Mitglied
Hallo

Ein kleines Problem, mein Script fragt Daten ab trägt diese Auswahlfelder ein wenn man einen Eintrag auswählt wird mit change() Formular abgesendet hier gibst immer mind. 10 Datensätze.

Egal welches Selectelement ich zum Versenden anklick es werden immer die POST-daten vom ersten Select gesendet ich habe keine Idee mehr was ich da machen muss.

Vielleicht hat einer von euch eine Idee.

PHP:
<?php
include('data_a.php');

$_POST[organist] == $_POST[organist].'1';
if(isset($_POST[organist]) and $_POST[datensatz] == 1) {
    print $_POST[organist]." | ".$_POST[datensatz]." | ".$_POST[id]."<br>";
}

#datensätze abfragen
$abfrage_c = "SELECT * FROM orgel_plan where status='04' ORDER BY timestamp";
$ergebnis_c = mysqli_query($db, $abfrage_c);
while($row_c = mysqli_fetch_array($ergebnis_c)) {

$tage = array("So","Mo","Di","Mi","Do","Fr","Sa");
$tag = date("w", $row_c[timestamp]);
#echo $tage[$tag]
$datum = date("d.m - H:i",$row_c[timestamp]);
    $test = $row_c[organist];

print $row_c[id] ?> | <?php print $tage[$tag].' '.$datum ?> | <?php print $row_c[dienstleiter] ?> |

<form method="post" id="myform">
<input name="id" type="hidden" value="<?php print $row_c[id] ?>">
<input name="datensatz" type="hidden" value="<?php print $row_c[datensatz] ?>">
<?php
if(empty ($test) == TRUE) {
#wenn dbeintrag vorhanden GRÜN
?>
<select style="background-color:#FB0206; color:#ffffff;" name="organist<?php print $row_c[datensatz] ?>" onchange="change()">
<option value="" selected="selected"> Organist auswählen </option>
<?php
#abfrage beauftragte
$abfrage_b = "SELECT * FROM beauftragte where orgel_dirigentenplan='1' and orgelspieler='1' ORDER BY id";
$ergebnis_b = mysqli_query($db, $abfrage_b);
while($row_b = mysqli_fetch_array($ergebnis_b)) {
      $organist2 = $row_b[amt]." ".$row_b[name];
?>
<option value="<?php print $organist2 ?>"> <?php print $organist2 ?> </option>
<?php } ?>
</select> |
<?php
}else{
?>
<select style="background-color:#01AB0A; color:#ffffff;" name="organist" onchange="change()">
<option value="<?php print $row_c[organist] ?>" selected="selected"> <?php print $row_c[organist] ?> </option>
<?php
#abfrage beauftragte
$abfrage_b = "SELECT * FROM beauftragte where orgel_dirigentenplan='1' and orgelspieler='1' ORDER BY id";
$ergebnis_b = mysqli_query($db, $abfrage_b);
      while($row_b = mysqli_fetch_array($ergebnis_b)) {
      $organist2 = $row_b[amt]." ".$row_b[name];
?>
<option value="<?php print $organist2 ?>"> <?php print $organist2 ?> </option>
<?php } ?>
</select>
<?php
} #ende if ?>
| <br><br>
</form><?php
} #ende while schleife
?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
function change(){
    document.getElementById("myform").submit();    
}
</script>
 
Du sprichst die Formulare über eine einheitliche ID an. Eine ID muss jedoch dokumentweit eindeutig sein. Ist das nicht der Fall, wird i. allg. das erste Element gefunden.
Einfache Lösung: Die Id um einen Index erweitern:
PHP:
$idx = 0;
while($row_c=mysqli_fetch_array($ergebnis_c)){
// ...
<form method="post" id="myform<?php echo $idx; ?>">
// ...
<select style="background-color:#FB0206; color:#ffffff;" name="organist<?php print $row_c[datensatz] ?>" onchange="change("myform<?php echo $idx++; ?>")">
// ...
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script>
function change(idform){
    document.getElementById(idform).submit();
}
</script>
 
Zuletzt bearbeitet:
Oh, da ist mir ein Fehler mit den Hochkommas unterlaufen. So sollte es richtig sein:
Code:
<select style="background-color:#FB0206; color:#ffffff;" name="organist<?php print $row_c[datensatz] ?>" onchange='change("myform<?php echo $idx++; ?>")'>
 

Neue Beiträge

Zurück