tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
548
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Budda Budda ist offline Mitglied Gold
    Registriert seit
    May 2003
    Ort
    Northeim [Niedersachsen]
    Beiträge
    137
    Hallo.

    Ich habe eine MySQL-DB in der ich eine Tabelle mit über ein PHP-Formular editieren möchte. Solange nur ein Datensatz in der Tabelle steht, wird dieser auch korrekt geupdatet. Nur sobald mehrere drin stehen werden alle mit den Werten des ersten Datensatzes überschrieben. Ich finde bloß den Fehler nicht ...

    hier ist das Fomular
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    <?php 
                    $result = mysql_query("SELECT * FROM journal WHERE kategorie=4 order by id desc", $conn);       
                    
                    while($row = mysql_fetch_row($result))
                    { 
                        echo"<tr><td><input type=checkbox name=update value=", $row[0], "><input type=text class=text2 name=titel value='", $row[1], "'></td><td><input type=text class=text2 name=link value=", $row[2], "></td></tr>";
                    }
                ?>
    row0 ist die ID, row1 der Titel und row2 ein Link. Ich lese die vorhandenen Werte aus in Textfelder und durch das markieren einer Checkbox soll der Datensatz aktualisiert werden.

    und hier die Abfrage
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    include("dbopen.php");
            
            $up_titel = $_POST['titel'];
            $up_link = $_POST['link'];
            $checked = $_POST['update'];
            
            $remove = mysql_query("UPDATE journal SET titel = '$up_titel', hyperlink = '$up_link', kategorie = 4 WHERE id=$checked") or die (mysql_error());
            $selected_action = 0;
            mysql_close();

    Ich hoffe ihr könnt mir ein bisschen weiterhelfen.

    danke, Budda
     

  2. #2
    Avatar von Mirko D
    Mirko D Mirko D ist offline Mitglied Brokat
    Registriert seit
    May 2004
    Ort
    Wesseling / Köln
    Beiträge
    422
    PHP-Code:
    $remove mysql_query("UPDATE journal SET titel = '$up_titel', hyperlink = '$up_link', kategorie = '4' WHERE id='".mysql_escape_string($checked)."'") or die (mysql_error()); 
    Versuchs mal so

    Gruß Mirko
     
    Der Sinn des Lebens liegt nicht darin über den Sinn des Lebens nachzudenken

    >>MG Forum

  3. #3
    Budda Budda ist offline Mitglied Gold
    Registriert seit
    May 2003
    Ort
    Northeim [Niedersachsen]
    Beiträge
    137
    Danke für die Antwort Mirko, aber das ist der Fehler nicht. Der Inhalt der Variablen ist falsch, die enthalten immer die Werte von dem ersten Datensatz ...
     

  4. #4
    Budda Budda ist offline Mitglied Gold
    Registriert seit
    May 2003
    Ort
    Northeim [Niedersachsen]
    Beiträge
    137
    ... außer Mirko weiß niemand einen Lösungsansatz?!
     

  5. #5
    dummdidummoei dummdidummoei ist offline Mitglied
    Registriert seit
    Feb 2004
    Beiträge
    14
    hatte ein wenig nachdenken müssen

    also folgendes problem er wird bei dir immer den letzten datensatz nehmen da bei dir die felder in der schleife gleich heissen ...


    er updatet zwar die richtige ID aber er verwendet die Werte die er im Form als letztes hat.

    deine Möglichkeit 1 wäre folgende...

    das ganze zuvor in eine liste packen und mit click auf einen titel zum eingabeformular springen und die id übergeben
    dann hast du genau nur mehr einen datensatz mit genau einer id zu bearbeiten

    Möglichkeit 2 wäre:

    deine feld namen einen counter hinzuzufügen

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <?php 
                    $result = mysql_query("SELECT * FROM journal WHERE kategorie=4 order by id desc", $conn);       
                    $cnt=0;
                    while($row = mysql_fetch_row($result))
                    { 
                        echo"<tr><td><input type=\"checkbox\" name=\"update".$cnt."\"  value=\"".$row[0]."\"><input type=\"text\" class=\"text2\" name=\"titel".$cnt."\" value=\"".$row[1]."\"></td><td><input type=\"text\" class=\"text2\" name=\"link".$cnt."\" value=\"".$row[2]."\"></td></tr>";
                     $cnt++;
                    }
                ?>

    jetzt sollte damit kein feld mehr wie ein anderes heissen udn damit eindeutig sein

    deine möglichkeit wäre jetzt über eine schleife im abzuarbeiteneden Script festzustellen welcher Eintrag jetzt gecheckt ist und welcher nicht...
    natürlich solltest du über ein hidden field dann die höhe des counters mitübergeben;

    ich find das generell keine gute lösung aber wie heissts so schön man soll reisende nicht aufhalten =)
    Geändert von dummdidummoei (01.07.04 um 16:37 Uhr)
     

Ähnliche Themen

  1. Format für alle Datensätze ändern
    Von savior01 im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 10.04.08, 10:51
  2. Update aller Datensätze
    Von TimoTH im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 21.05.07, 08:21
  3. Alle Datensätze einer Woche
    Von CyrusOne im Forum ASP
    Antworten: 33
    Letzter Beitrag: 22.08.06, 11:00
  4. Alle Datensätze aus Access auslesen
    Von ExtremeSnail im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 05.05.04, 15:59
  5. update datensätze fehler
    Von Shooter2k im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 17.10.03, 16:56