Danke fürs Lesen!PHP inkrementieren alle IDs in einer CSV
Ich habe eine App, mit der Menschen Elemente in einer CSV hinzufügen, bearbeiten und löschen können. Ich habe einen Fehler gefunden, bei dem, wenn es nicht eindeutige IDs gibt und Sie versuchen, sie zu bearbeiten oder zu löschen, sie alle bearbeiten oder löschen, während das System die Tabelle durchsucht, um die ID zu finden, die auch der des Objekts entspricht Bei der Verwendung muss der Benutzer in der Lage sein, die ID zu ändern
Die Lösung, die ich gefunden habe, ist ziemlich einfach, sollte der Benutzer ein Objekt bearbeiten und seine ID zu einer bereits bestehenden ändern, dann wird das System nimm alle Objekte mit einer ID größer oder gleich der neuen ID und inkrementiere sie alle um eins.
Der folgende Code ist meine if-Anweisung, die prüft, ob die ID existiert bereits
if($exists == "true") //does the $newImageID already exist in the gallery?
{
$table = fopen($fullURL,'r'); //$fullURL is the location of the CSV tested and works
$temp_table_two = fopen($tempURL,'w');
while (!feof($temp_table_two)) {
$getid = fgetcsv($temp_table_two, 1024);
if($getid[0] >= $newImageID)
{
// $getid[0]++; //increase id in temp_table_two by 1 if it is > $newImageID
echo $getid[0];
}
}
fclose($table);
fclose($temp_table);
rename($tempURL,$fullURL);
}
Dieser Code findet nach fopen und vor fclose. Im Kontext ist $ exists entweder "true" oder "false" (wird später in boolean geändert), die while-Schleife analysiert meine $ temp_table (a fopen) und ob das erste Spaltenobjekt (die ID) gleich oder größer ist als der in der neuen ID, dann wird es inkrementiert. Dies bedeutet, dass das neue Objekt wird „geschlitzten in“ sozusagen und schiebt den Rest nach unten
Seltsamer meiner Anfrage nach einem langen Spinner Zeitüberschreitung wird, nachdem ich diesen Code ausführen, und ich habe keine Ahnung, was das Problem ist
Vielen Dank für Ihre Hilfe im Voraus
EDIT: ich habe die Quelle des Problems ist die while-Schleife selbst zu finden, soll ich alles aus als solchen Kommentar:
while (!feof($temp_table_two)) {
$getid = fgetcsv($temp_table_two, 1024);
// if($getid[0] >= $newImageID)
// {
// // $getid[0]++; //increase id in temp_table_two by 1 if it is > $newImageID
// echo $getid[0];
// }
}
der Code immer noch nicht funktioniert Das Einzige, was noch laufen muss, ist th e-Schleife, die nichts
EDIT 2 macht: Nach einer Antwort, habe ich mit der temporären Tabelle entfernt und arbeite nur aus der Tabelle selbst, diese if-Anweisung vor dem Hinzufügen der neuen Daten mit seiner ID ausgeführt wird
if($exists == "true") //does the $newImageID already exist in the gallery?
{
$table = fopen($fullURL,'r+');
while (!feof($table)) {
$getid = fgetcsv($table, 1024);
if($getid[0] >= $newImageID)
{
echo $getid[0];
$getid[0]++; //increase id in temp_table_two by 1 if it is > $newImageID
}
}
fclose($table);
}
Der Code läuft nicht mehr ab, aber die Elemente in $ getid [0] werden nicht inkrementiert. Ich habe sie wiederholt und es hallt alle IDs gleich oder größer als meine $ newImageID, aber die $ getid [0] ++; scheint die CSV überhaupt nicht zu beeinflussen
können Sie hinzufügen, was initialisiert '$ temp_table' auf Ihre Frage? –
@JohnJoseph Ich habe den Code wie gewünscht geändert, ich testete $ tempURL und es löst den Speicherort meiner CSV – Jordan
Versuchen Sie, den Modus der fopen von 'w' zu 'r +' –