Mehrer Zeilen gleichzeitig Updaten!!

pressi2

Mitglied
hallo!

Ich möchte gerne mehrer Zeilen in einer Tabelle gleichzeitig updaten, funktioniert aber nicht hier mein Code:

PHP:
<form method="post" action="speichern.php?id=<?php echo $_POST['ID']; ?>">
<table width="100%" border="0">
  <tr>
    <td><strong>ID</strong></td>
    <td><strong>Mannschaft</strong></td>
	<td><strong>Mannschaft-kurz </strong></td>
    <td><div align="center"><strong>Spiele</strong></div></td>
	<td><div align="center"><strong>S</strong></div></td>
    <td><div align="center"><strong>U</strong></div></td>
    <td><div align="center"><strong>N</strong></div></td>
	<td><div align="center"><strong>Tore +</strong></div></td>
    <td><div align="center"><strong>Tore -</strong></div></td>
	<td><div align="center"><strong>Punkte</strong></div></td>
  </tr>
  
  <?php $result = mysql_query("SELECT * FROM $table ORDER BY punkte DESC, (tore_plus-tore_minus) DESC", $linkin);
			while($row_tab = mysql_fetch_array($result)) { ?>
  <tr>
    <td><?php echo $row_tab['ID']; ?><input type="hidden" name="ID" value="<?php echo $row_tab['ID']; ?>" /></td>
    <td><input name="mannschaft" type="text" size="15" value="<?php echo $row_tab['mannschaft']; ?>"></td>
    <td><input name="mannschaft_kurz" type="text" size="15" value="<?php echo $row_tab['mannschaft_kurz']; ?>"></td>
    <td><input name="spiele" type="text" size="2" maxlength="2" value="<?php echo $row_tab['spiele']+1; ?>"></td>
    <td><input name="siege" type="text" size="3" maxlength="3" value="<?php echo $row_tab['siege']; ?>"></td>
    <td><input name="unendschieden" type="text" size="3" maxlength="3" value="<?php echo $row_tab['unendschieden']; ?>"></td>
    <td><input name="niederlagen" type="text" size="3" maxlength="3" value="<?php echo $row_tab['niederlagen']; ?>"></td>
    <td><input name="tore_plus" type="text" size="4" maxlength="4" value="<?php echo $row_tab['tore_plus']; ?>"></td>
    <td><input name="tore_minus" type="text" size="4" maxlength="4" value="<?php echo $row_tab['tore_minus']; ?>"></td>
    <td><input name="punkte" type="text" size="3" maxlength="3" value="<?php echo $row_tab['punkte']; ?>"></td>
  </tr>
  <?php } ?>
</table>
<input value="Speichern" type="submit">
 </form>

und dann diesen:

PHP:
 mysql_query("UPDATE ".$table." SET mannschaft='".$_POST['mannschaft']."', mannschaft_kurz='".$_POST['mannschaft_kurz']."', spiele='".$_POST['spiele']."', siege='".$_POST['siege']."', unendschieden='".$_POST['unendschieden']."', niederlagen='".$_POST['niederlagen']."', tore_plus='".$_POST['tore_plus']."', tore_minus='".$_POST['tore_minus']."', punkte='".$_POST['punkte']."' WHERE ID='".$_GET['id']." '", $linkin);

Es wird immer nur eine Mannschaft aktualisiert!

Ich möchte aber mehrere gleichzeitig insgesamt sind es 12 !!

kann mir jemand helfen?

mfg pressi
 
Zuletzt bearbeitet:
Hallo Pressi

Das liegt daran, dass dein SQL Statement genau darauf getrimmt wird nur eines zu bearbeiten.
Dieser Teil hier:
PHP:
WHERE ID='".$_GET['id']."
sagt SQL nämlich, dass nur diese eine Manschaft upgedatet werden soll.

Du hast in deinem Formular schon einen Fehler.

Überleg mal.
Du nennst die Felder manschaft, ...

Wird das in einer Schleife ausgeführt ist es genau wie eine PHP Variable.
Der Feldwert wird ständig neu gesetzt.

So sieht der Code ja dann aus:
Code:
<input type="text" value="MeineManschaft" name="manschaft" />
<input type="text" value="MeineManschaft3" name="manschaft" />
<input type="text" value="MeineManschaft8" name="manschaft" />
<input type="text" value="MeineManschaft4" name="manschaft" />
<input type="text" value="MeineManschaft5" name="manschaft" />

Der Wert, den du dann bei einem $_POST['manschaft'] zurück bekommst ist dann MeineManschaft5 ;)

Du musst alle Feldnamen als "Arrays" definieren.
Das sieht dann so aus:
<input type="text" value="MeineManschaft" name="manschaft[]" />
(also einfach eine [ auf und dann eine ] zu - wie bei PHP :))

Und dann kannst du diese mit for durchlaufen.


Hoffe ich konnte dir helfen.
Simon
 
PHP:
$c_elements = count($_POST['ID']);

for($i = 0; $i < $c_elements; $i++)
 {
    // jetzt dein Update.
    // der aktuelle Manschafts wert ist zum Beispiel: 
     $name = $_POST['manschafts_name'][$i];

    // der Rest funktioniert genau gleich
 }
 
Genau da wo du "dann diesen" hast

PHP:
mysql_query("UPDATE ".$table." SET mannschaft='".$_POST['mannschaft']."', mannschaft_kurz='".$_POST['mannschaft_kurz']."', spiele='".$_POST['spiele']."', siege='".$_POST['siege']."', unendschieden='".$_POST['unendschieden']."', niederlagen='".$_POST['niederlagen']."', tore_plus='".$_POST['tore_plus']."', tore_minus='".$_POST['tore_minus']."', punkte='".$_POST['punkte']."' WHERE ID='".$_GET['id']." '", $linkin)
 
stimmt das so?

PHP:
	$c_elements = count($_POST['ID']);

for($i = 0; $i < $c_elements; $i++)
 {
mysql_query("UPDATE ".$table_tab." SET mannschaft='".$_POST['mannschaft'][$i]."', mannschaft_kurz='".$_POST['mannschaft_kurz'][$i]."', spiele='".$_POST['spiele'][$i]."', siege='".$_POST['siege'][$i]."', unendschieden='".$_POST['unendschieden'][$i]."', niederlagen='".$_POST['niederlagen'][$i]."', tore_plus='".$_POST['tore_plus'][$i]."', tore_minus='".$_POST['tore_minus'][$i]."', punkte='".$_POST['punkte'][$i]."' WHERE ID='".$_GET['id']." '", $linkin);
 }
 
Zurück