Formular zur Auswertung der Daten aus der DB

anenad

Grünschnabel
Hall zusammen,

ich hoffe ich bin richtig hier, bin neu im Forum und auch php technisch relativ unerfahren. Habe auch schon das erste Problem, ich bastele an einem Upload Portal, man kann dort ein Video hochladen, muss dabei Daten wie Name, Vorname, Email usw. mitangeben, soweit so gut. Jetzt wollte ich ein Formular zur Auswertung dieser Einträge basteln, in dem ich die Daten aus der DB (MySQL) in einem Formular auslese, anzeigen lasse und ich habe nach jeder Zeile vier Buttons angehängt (im meinem Fall jetzt vier Submit Buttons) mit denen man sich das Video anzeigen lassen kann und dann entscheiden soll ob das Video in Ordnung ist, nicht angezeigt werden soll oder gar gelöscht werden soll.

Auch hier ist die funktionalität nicht so das Problem, nur wenn ich jetzt einen Button drücke werden die Werte von allen Einträge geändert, wie kann ich den Buttons klar machen das Sie nur die Zeile bearbeiten sollen in der Sie sich gerade befinden?

Hier mein php code:

PHP:
 if (isset($_REQUEST['Button1']))

 {

echo "Button1";

 }

 else if (isset($_REQUEST['Button2']))


 {

//Das hier funktioniert und bearbeitet dann halt immer die erste Zeile, das muss man doch //irgendwie veralgemeinern können?

 @mysql_query("UPDATE testDB SET status = 'Approved' WHERE ID='1'");

 }

 else if (isset($_REQUEST['Button3']))


 {
 @mysql_query("UPDATE testDB SET status = 'Decline'");

 }

 else if (isset($_REQUEST['Button4']))


 {
 @mysql_query("UPDATE testDB SET status = 'Delete'");

 }

 @mysql_query($sql_insert, $link);

 @mysql_close($link);


  $abfrage = "SELECT * FROM testDB WHERE country='CountryID'";
  $ergebnis = mysql_query($abfrage);


while($row = mysql_fetch_object($ergebnis))
    {
 echo '<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="5"
style="margin-left: 10px; margin-top: 0px;"> <form
        action="'.htmlspecialchars($_SERVER['PHP_SELF'
        ]).'" method="get" name="uploadform">';

 echo ' <tr>
 <th>ID: '. $row->ID.'</th>
 <th>Firstname: '. $row->firstname.'</th>
 <th>Surname: '. $row->lastname.'</th>
 <th>Nickname: '. $row->nic.'</th>
 <th>Country: '. $row->country.'</th>
 <th>Email: '. $row->email.'</th>
 <th>Upload date: '. $row->ts.'</th>
 <th>Status: '. $row->status.'</th>
 <th><input type="submit" name="Button1" id="'. $row->ID.'" value="See
video"/></th>
 <th><input type="submit" name="Button2" id="'. $row->ID.'"
value="Approve"/></th>
 <th><input type="submit" name="Button3" id="'. $row->ID.'"
value="Decline"/></th>
 <th><input type="submit" name="Button4" id="'. $row->ID.'"
value="Delete"/></th></tr>
 <tr><td>&nbsp;</td></tr>';
    echo '</form></TABLE>';
 }

mysql_free_result($ergebnis);

?>
Wenn mir da jemand helfen könnte, wäre ich sehr dankbar irgendwie finde ich nichts was funtkioniert.

Grüße,
 
Zuletzt bearbeitet von einem Moderator:
Ja das kann man verallgemeinern. PHP hat ja die Anweisung bekommen immer die erste ID zu bearbeiten wenn das script läuft. Ändere mal das hier :
PHP:
 @mysql_query("UPDATE testDB SET status = 'Approved' WHERE ID='1'");
in das:
PHP:
 @mysql_query("UPDATE testDB SET status = 'Approved' WHERE ID = '$id'");
 
Hi Groooveman,

so hatte ich das auch schon ausprobiert, da tut sich dann garnichts. Ich hatte auch schon versucht das Form runter zu nehmen, sprich das für jede Zeile ein eigenes Form geschrieben wird. Das hat aber auch nichts gebracht.

Irgendwas scheint er da nicht zu mögen, aber was?! Ich mein die ID ist der Primary Key den ich jedem neuem Eintrag fortlaufend mitgebe. Danach müsste ich doch irgendwie unterscheiden können in welcher Zeile der Button gedrückt wird.
 
Zuletzt bearbeitet:
HTML:
<th><input type="submit" name="action" value="See video"/></th>
 <th><input type="submit" name="action" value="Approve"/></th>
 <th><input type="submit" name="action" value="Decline"/></th>
 <th><input type="submit" name="action" value="Delete"/></th></tr>
...
<input type="hidden" name="itemId" value="<?php echo $row->id; ?>" />

Je nachdem welche Submit Button gedrückt wird hat $_REQUEST['action'] dann den entsprechenden Wert.

PHP:
switch ($_REQUEST['action']) {
  case 'See video':
    echo "Button1";
    // Dein Code hier
    break;
  case 'Approve':
    mysql_query('UPDATE `testDB` SET `status`="Approved" WHERE `ID`='.(int)$_REQUEST['itemId']);
    // Dein Code hier
    break;
  case 'Decline':
    // Dein Code hier
    break;
  case 'Delete':
    // Dein Code hier
    break;
}
 
Zuletzt bearbeitet:
Hi Napofis,

danke hat so funktioniert, ich musste nur das value beim hidden feld etwas abändern.

--> <input type="hidden" name="itemId" value="'. $row->ID.'" />

Danke nochmal!
 
Zurück