PHP-MySQL - mysqli liefert einen Datensatz zu wenig
Hallo zusammen,
ich habe eine einfache (und nicht normalisierte) Tabelle in MySQL mit dem Namen "elemente".
In dieser befinden sich die Spalten id(PK, AI, U) | typ | beschreibung | inhalt | position
Nun wollte ich es per PHP schaffen, dass die Position nach jedem DELETE, UPDATE etc. angepasst wird, einfach nur, weil ich zu blöd bin, später die Elemente in der Tabelle anders in die gewünschte Reihenfolge zu bringen.
Folgender Code liefert aber statt der bisher vorhandenen 7 Datensätze nur 6 (zur Info: ich habe generell Schwierigkeiten mit diesem mysqli, die entsprechende for-Schleife brachte sogar nur 5 Ergebnisse - meine letzter PHP-Session liegt 6 Jahre zurück):
Ich hoffe, ich habe mich halbwegs klar ausgedrückt. Es soll schließlich niemand seine Kristallkugel suchen müssen
LG
W-S
ich habe eine einfache (und nicht normalisierte) Tabelle in MySQL mit dem Namen "elemente".
In dieser befinden sich die Spalten id(PK, AI, U) | typ | beschreibung | inhalt | position
Nun wollte ich es per PHP schaffen, dass die Position nach jedem DELETE, UPDATE etc. angepasst wird, einfach nur, weil ich zu blöd bin, später die Elemente in der Tabelle anders in die gewünschte Reihenfolge zu bringen.
Folgender Code liefert aber statt der bisher vorhandenen 7 Datensätze nur 6 (zur Info: ich habe generell Schwierigkeiten mit diesem mysqli, die entsprechende for-Schleife brachte sogar nur 5 Ergebnisse - meine letzter PHP-Session liegt 6 Jahre zurück):
$result = mysqli_query($link, "SELECT id, position FROM elemente ORDER BY elemente.position ASC");
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if (!empty($row))
{
$i = 0;
while($row = $result->fetch_array())
{
if ($link->query('UPDATE elemente SET position = ' . $i . ' WHERE id=' . $row['id'] . ';') == TRUE)
{
$erfolg = "Der gewählte Datensatz wurde erfolgreich aktualisiert.";
}
else
{
echo '<br>';
echo 'UPDATE elemente SET position = ' . $i . ' WHERE id=' . $row['id'] . ';';
echo '<br>';
}
$i++;
}
}
Ich hoffe, ich habe mich halbwegs klar ausgedrückt. Es soll schließlich niemand seine Kristallkugel suchen müssen
LG
W-S
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 308771
Url: https://administrator.de/contentid/308771
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
in this line of your code
So if you want to know if there are records use the
You can also reset the cursor to the top of the resultset with
Regards
in this line of your code
2. $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
you are already consuming the first record of the resultset! So you start with fetching the second record in your while loop, because the cursor is at the beginning of the second record.So if you want to know if there are records use the
mysqli_affected_rows()
or mysqli_num_rows()
function instead of fetching one row of data before the if.You can also reset the cursor to the top of the resultset with
mysqli_data_seek($result,0)
before the while, but that's normaly not required if you do it right.Regards