Antworten auf deine Fragen:
Neues Thema erstellen

Mehrere Einträge mit einem Query in der Datenbank ändern?

Daniel_Knecht

PSD-Mitglied

Hallo,
ich habe eine Tabelle welche so Lang ist wie viel Einträge in der Datenbank vorhanden sind.
Die Tabelle kann ich auch bequem mit einem Klick auf einen Button erweitern. Das alles Klappt alles Super.

Doch nun möchte ich alle Einträge in dieser while-Schleife mit ein mal ändern auch wenn nur ein Teil der Einträge geändert wurden.
Hier hab ich aber das Problem da ich nicht weiter komme. Ich hab keine Ahnung wie ich das anstelle. Ich hoffe hier könnt ihr mir weiter helfen :)

Meine Tabelle:
PHP:
<table width="100%" border="0" cellspacing="0" cellpadding="0">';
                $pcs = mysql_query("SELECT * FROM pcs ORDER BY uID ASC");
                while($row = mysql_fetch_assoc($pcs)) {
                    echo '<tr>
                        <input type="hidden" name="id" value='.$row['ID'].' />
                        <td width="30px"><div class="colRow_left"><input type="value" name="uid" value="'.$row['uID'].'" /></div></td>
                        <td width="120px"><div class="colRow_right">'.$row['type'].'</div></td>
                        <td width="20px"></td>
                        <td><div class="colRow_left"><input type="value" name="value_pc1" value="'.$row['value_pc1'].'" /></div></td>
                    </tr>';
                }
            echo '</table>

Wie muss nun der Query-Befehl aussehen?
PHP:
if (isset($_POST['pcsUpdate_1'])) {
        //???
    }

Die Normalen Querys zum INSERT, UPDATE, DELETE etc. sind kein Problem aber das... :D
 

Daniel_Knecht

PSD-Mitglied

Die beiden Seiten habe ich auch schon besucht. Doch irgendwie ändert er entweder gar nichts in der Datenbank oder er fügt eine neue Leere Zeile hinzu was er ja aber nicht soll.

PHP:
if (isset($_POST['pcsUpdate_1'])) {
        $id = $_POST['id'];
        $uid = $_POST['uid'];
        $value_pc1 = $_POST['value_pc1'];
       
        $sql = 'INSERT INTO pcs (uID, value_pc1) VALUES (\''.$uid.'\', \''.$value_pc1.'\')
                ON DUPLICATE KEY UPDATE uID=VALUES(uID), value_pc1=VALUES(value_pc1)';
        if (!mysql_query($sql)) {
            exit(mysql_error());
        }
    }
 

lachender_engel

Aktives Mitglied

Lass' Dir $sql mit echo ausgeben, nimm sie (die Query) und führe sie (dei Query) mit phpMyAdmin direkt aus. Dann bekommst Du den Fehler angezeigt (den wir hier, in Ermangelung einer Glaskugel nicht vorher sehen können).
 

Daniel_Knecht

PSD-Mitglied

Wenn ich es doch aber sage.

Wenn ich diesen Befehl so in phpmyadmin eingebe meckert er zwar das er die Schlüsselwörter ON, DUPLICATE und KEY nicht kennt führt den Befehl aber trotzdem aus.
PHP:
INSERT INTO pcs (uID, value_pc1) VALUES (7, 'test') ON DUPLICATE KEY UPDATE uID=VALUES(uID), value_pc1=VALUES(value_pc1)

ID der eingefügten Zeile: 7 (Die Abfrage dauerte 0.0624 Sekunden.)
 
A

Aladin47

Guest

Hallo,

ich habe Dein Problem nicht ganz verstanden, bitte erläutere es noch einmal.

Gruss.
 

Daniel_Knecht

PSD-Mitglied

Also:
Ich lese aus der Datenbanktabelle alle Zeilen aus und lasse mir diese Anzeigen. 2 Spalten jeder Zeile sollen jedoch Bearbeitbar sein (input Felder).
Ich möchte nun das alle Felder/Zeilen (egal ob Bearbeitet oder nicht) mit einem Query Befehl in der Datenbank Aktualisiert werden (also UPDATE table etc.). Das aus dem Grund da immer verschiedene Einträge mal gleichzeitig geändert werden können.

Mein Problem ist nun das ich Anfangs nicht wusste wie ich das mit einem Query Befehl anstelle. Mit dem oben geposteten Befehl passiert jedoch nichts. Er Aktualisiert die Datenbank nicht und ein Fehler kommt auch nicht. Wenn ich jedoch den Query direkt in phpMyAdmin eingebe sagt er das er "ON DUPLICATE KEY" nicht kennt aber er führt den Befehl trotzdem aus jedoch wieder ohne eine Änderung.

Ich hoffe das war ein wenig verständlicher ;)
 
A

Aladin47

Guest

Hallo,

ja, diese Beschreibung ist für mich nachvollziehbar.

Und mit einer einzigen Update-Anweisung geht das nicht. Der Grund liegt im Aufbau der Anweisung selbst.
Also die Anweisung nur einmal im Script ausführen meine ich.

Syntax (mysql):

Update tabelle set spalte = wert bedingung

ich würde die Update-Anweisung in eine Schleife packen und zeilenweise durchlaufen lassen.
Dazu wäre es sinnvoll, die Werte die Du aus dem HTML zurück bekommst in ein Array umzuwandeln, das man dann durchläuft.

Muster:

Schleife Beginn
Update tabelle set spalte1 = value1, spalte2 = value2 where spalte0 = identwert
Schleife Ende

Da Du ein Formular verwendest, stehen die Werte wahrscheinlich in der POST Variablen.

Ich würde mir die Post-Variable mal pur ausgeben, um zu schauen, was da eigentlich aus dem Formular zurück kommt. Und dann weitersehen. :)

Gruss
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben