Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Po funkcji "DELETE" rekordy dodają się w losowych miejscach
Forum PHP.pl > Forum > Przedszkole
Weles
Witam!
Mam pewien problem z usuwaniem rekordów w MySql przez PHP.

Robię to w ten sposób:
  1. mysql_query("DELETE FROM posty WHERE autor='$dall[id]'");


Po wykonaniu tego zapytania, gdy ktoś pisze nowy post - to te posty lecą do tabeli nie na sam koniec, tylko w losowym miejscu w danej tabeli, np. rekord wlatuje do środka gdzie są wszystkie rekordy zamiast na koniec, ID jest najnowsze z autoincreement - tylko tak jak mówię jest ten problem że rekord wlatuje gdzie chce..

Proszę o pomoc!
Pozdrawiam.
konrados
A po czym to stwierdzasz? W phpmyadminie? No to posortuj tam wg. id i będziesz miał na końcu.

Poza tym raczej:

  1. mysql_query("DELETE FROM posty WHERE autor='{$dall[id]}' ");


(Dołożyłem {} wokół zmiennej, bo musi być skoro to tabelka)
Weles
Cytat(konrados @ 27.05.2012, 13:48:20 ) *
A po czym to stwierdzasz? W phpmyadminie? No to posortuj tam wg. id i będziesz miał na końcu.

Poza tym raczej:

  1. mysql_query("DELETE FROM posty WHERE autor='{$dall[id]}' ");


(Dołożyłem {} wokół zmiennej, bo musi być skoro to tabelka)


@Stwierdzam to po tym, że nowe posty napisane w danym temacie nie są na końcu wątku tylko np. w środku się post wsadza teraz, więc pomyślałem żeby sprawdzić to w programie "Navicat" (program taki jak phpmyadmin) i się okazało że teraz rekordy wlatują w losowe miejsca i przez to mam taki problem..
Nie chcę używać ORDER by ID bo wszystko było normalnie dobrze, tylko usuwając przez PHP się dzieje taki problem nie wiem czemu..

A co do tego {} to już ktoś mi kiedyś pisał o tym i sprawdzałem i nie działało bo wybijało błąd serwera, a tak jak ja piszę zawsze '$dall[id]' zawsze mi działało bezproblemowo.
konrados
Nie no musisz jakoś sortować, możesz by id a możesz wg. daty dodania posta (nowe pole byś musiał dodać).

Cytat
A co do tego {} to już ktoś mi kiedyś pisał o tym i sprawdzałem i nie działało bo wybijało błąd serwera, a tak jak ja piszę zawsze '$dall[id]' zawsze mi działało bezproblemowo.


A jesteś pewien, że to działa (i.e. usuwa dany post)? Bo albo mam jakieś zaćmienie umysłu, albo to zwyczajnie nie może działać... Może się kto inny wypowie.
Weles
Cytat(konrados @ 27.05.2012, 13:55:57 ) *
Nie no musisz jakoś sortować, możesz by id a możesz wg. daty dodania posta (nowe pole byś musiał dodać).



A jesteś pewien, że to działa (i.e. usuwa dany post)? Bo albo mam jakieś zaćmienie umysłu, albo to zwyczajnie nie może działać... Może się kto inny wypowie.


Tak, działa na 100% bo przecież znikają z forum te posty i nie ma ich w bazie danych, i odkąd piszę strony kilka lat to zawsze tak usuwam rekordy i zawsze działa.

@Dodam że jeśli skopiuję tą tabelkę, usunę pierwotną i zmienię nazwę skopiowanej na normalną to rekordy lecą już normalnie na koniec (...) ale takie wyjście to nie wyjście, przecież nie będę kopiował za każdym usunięciem posta tabeli...
konrados
Cytat
Tak, działa na 100% bo przecież znikają z forum te posty i nie ma ich w bazie danych


A, faktycznie, {} byłyby potrzebne gdyby w zmiennej $dall[id] id było w apostrofach.

A co do błędnego sortowania to myślę jednak, że powinieneś dołożyć po prostu ORDER BY id, no spróbuj i zobacz czy zadziała.
Crozin
O ile się nie mylę ani standard SQL, ani sam MySQL nie gwarantuje żadnego konkretnego porządku zwracanych wierszy w przypadku braku klauzuli ORDER BY.
Weles
Cytat(konrados @ 27.05.2012, 14:08:16 ) *
A, faktycznie, {} byłyby potrzebne gdyby w zmiennej $dall[id] id było w apostrofach.

A co do błędnego sortowania to myślę jednak, że powinieneś dołożyć po prostu ORDER BY id, no spróbuj i zobacz czy zadziała.


Tak działa, sprawdzałem przed napisaniem tego wątku.

Mi chodzi ogółem że w tabeli robi się 'burdel' po wykonaniu zapytania DELETE w PHP.

Dziwne jest to że usuwając rekord ręcznie w np. Navicat, wszystko działa w porządku, ale gdy to samo zapytanie wykonam przez PHP to nowe rekordy wlatują gdzie chcą.

Chodzi mi o sam fakt tego, wchodząc przez jakiś program czy phpmyadmin trzeba dodatkowo klikać sortowanie za każdym razem, dodawać w każdych zapytaniach ORDER'y itd.

Zależało by mi na tym aby wszystko było tak jak teraz po kasowaniu rekordów, może coś trzeba dodać w zapytaniu DELETE czy coś?

@EDIT, @UP:
Sprawdzałem w MyBB i IP.BOARD i po kasowaniu postów i innych różnych czynnościach rekordy zapisują się nadal po kolei, i o takie wyjście mi chodzi.

@EDIT2:
A jednak nie, w tych forach rozrzucają się pomiędzy rekordami które się kasowało nowe rekordy więc tego nie zauważyłem, no trudno, więc dodam to sortowanie chodź nie chcę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.