SQL Update in einer WHILE Schleife

#1
Hallo,

ich stehe mal wieder vor einem Problem und hoffe, dass ich es hier halbwegs vernünftig erklärt bekomme. In einer Tabelle wird die "ID", "Text" und "Status" gespeichert. Diese Liste lasse ich mir anzeigen und will nun in jeder ausgegebenen Zeile einen Button haben mit dem ich den Status der jeweiligen Zeile ändern kann.

PHP:
//-- SQL Abfrage Liste
$sql1 = "SELECT * FROM tabelle WHERE status ='1'";
$ausgabe = mysql_query($sql1) or die('Konnte die Abfrage nicht durchführen, weil ' . mysq_error());
while($row = mysql_fetch_array($ausgabe)){
echo "<tr>
<td>{$row['id']}</td>
<td>{$row['text']}</td>
<td>{$row['status']}</td>
<td><input type='submit' name='status' value='aendern'/></td></tr>";
}

Hier die Update Funkion wie ich sie mir überlegt habe. Hier müsste ich noch ein 'WHERE id=' anfügen. Weiß aber nicht genau wie die Abfrage richtig aussehen muss und wo sie hin geschrieben werden muss. Weswegen frage ich jetzt hier um rat.

PHP:
//-- SQL Abfrage bezahlt
if(isset($_POST['status']){
$sql2 = "UPDATE tabelle SET status='2'";
$bezahlt = mysql_query($sql2) or die("Fehler: ".mysql_error());
}
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#2
Hi,

Die mysql_*-Funktionen sind schon seit Jahren deprecated (veraltet) und wurden mit PHP 7 bereits entfernt. Bitte stattdessen mysqli oder PDO verwenden.
Dein Update-Script weiss nicht, welcher Button gedrückt wurde, weil du mehrere Buttons mit der gleichen ID hast (übrigens ungültiges HTML).

Bau dir ein extra Form in jeder Zeile mit einem Hidden-Feld für die ID. Bei deinem obigen Beispiel also in etwa so:
PHP:
echo "...
<td>
  <form action=\"updateScript.php\">
    <input type=\"hidden\" name=\"id\" value=\"{$row['id']}\" />
    <input type=\"submit\" name=\"status\" value=\"aendern\"/>
  </form>
</td></tr>";
Die einfachen Anführungszeichen sind bei HTML meines Wissens nach auch nicht Standardkonform.

Grüsse,
BK