[MySQL] Jeden DB-Eintrag einzeln änderbar per Formular (Idee eines Adminbereichs)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL] Jeden DB-Eintrag einzeln änderbar per Formular (Idee eines Adminbereichs)

    Hallo liebe Community,

    Ich habe eine Art Wunschliste geschrieben, in die man mittels Formular seinen Namen, den Wunsch und seine Email-Adresse eintragen kann. Ich habe es nun schon hinbekommen, diese Daten in die DB zu schreiben und auch wieder auszugeben. So weit, so gut:

    PHP-Code:
    if(!empty($deinwunsch))
        {
        
    $deinname $_POST['deinname'];
        
    $deinwunsch $_POST['deinwunsch'];
        
    $bemerkung $_POST['bemerkung'];
        
    $emailaddy $_POST['email'];
        if(!
    mysql_query("INSERT INTO `wishlist` SET `name`='".$deinname."', `wunsch`='".$deinwunsch."', `bemerkung`='offen', `aktdatum`=NOW(), `addy`='".$emailaddy."' ")) 
        die(
    'Fehler! SQL-Befehl ist falsch (_post)'); 
        } 
    Jetzt schwebt mir aber eine Art Admin-Bereich vor, um sich nicht immer wieder in der DB anzumelden zu müssen. Es sollen also alle Einträge in Textareas ausgegeben werden, was ich auch hinbekomme.

    JEDOCH soll sich hinter jeder Textarea ein Button befinden, der die jeweilige Textarea und somit den Eintrag in der DB aktualisiert, wenn etwas neues reingeschrieben wurde.
    Das habe ich nun schon probiert, allerdings ändert er gleich alle Einträge des selben Feldes in der DB, wenn ich nur einen Eintrag ändere.

    Daher dachte ich mir, ich muss IDs dynamisch vergeben für jede Textarea, leider weiß ich nicht wie das geht bzw. ob es noch eine andere Möglichkeit gibt.

    Mein derzeitiger Code:
    PHP-Code:
    if(!empty($bemerkung))
        {
        
    $bemerkung $_POST['bemerkung'];
    if(!
    mysql_query("UPDATE `wishlist` SET `bemerkung`='".$bemerkung."' WHERE `bemerkung`= 'offen' ")) 
         die(
    'Fehler! SQL-Befehl ist falsch (_post)'); 
        }

    $sql 'SELECT * FROM wishlist ORDER BY aktdatum desc';

        if(!
    $res_id mysql_query($sql))
        {
         echo 
    "Fehler! SQL-Befehl ist falsch (Query)";
        }

        echo 
    "<table border=\"0\" cellspacing=\"2\" cellpadding=\"3\" align=\"left\">";
        echo 
    "<tr>";
        echo 
    "<td style=\"border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#AF1020\" width=\"110\"><SPAN class=\"text\"><b>Name</b></SPAN></td>";
        echo 
    "<td style=\"border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#AF1020\"><SPAN class=\"text\"><b>Wunsch</b></SPAN></td>";
        echo 
    "<td width=\"400\" style=\"border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#AF1020\"><SPAN class=\"text\"><b>Status</b></SPAN></td>";
        echo 
    "</tr>";
        while (
    $test mysql_fetch_array($res_id))
        {
         echo 
    '<tr>';
         echo 
    '<td width="120" valign="top"><SPAN class="text">» '.$test['name'].'</SPAN></td>';
         echo 
    '<td align="justify" valign="top"><SPAN class="text">'.$test['wunsch'].'</SPAN></td>';
         echo 
    '<td width="400"><textarea rows="2" name="bemerkung" style="border: 1px solid #FFD700;padding-left: 5 ;font-size: 12; color: #000000; background-Color: #FFD700;width:390px;">'.$test['bemerkung'].'</textarea></td>';
         echo 
    '</tr>';
        }
        echo 
    "</table><BR><BR><BR>"
    LG
    Oli

  • #2
    Erstmal bitte den Code umbrechen!

    PHP-Code:
    if(!empty($bemerkung)) {
        
    $bemerkung $_POST['bemerkung']; 
    Wenn du register_globals=on fährst, kannst du dir die Zuweisung schenken. Wenn nicht, wird der Zweig sowieso nicht betreten.
    Btw. sollte register_globals=off sein.

    Zum Problem: Benenne die Textareas mit name="bemerkung[<ID-des-Datensatzes]" und erzeuge die UPDATE-Query mit einer Schleife über $_POST['bemerkung']. Allerdings nicht mit "WHERE bemerkung='offen'" sondern über die IDs der Datensätze - die kannst du mit einem hidden input durch das Formular schleifen.

    Kommentar

    Lädt...
    X