Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP]Po funkcji "DELETE" rekordy dodają się w losowych miejscach
Weles
post 27.05.2012, 12:37:10
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
konrados
post 27.05.2012, 12:48:20
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


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)
Go to the top of the page
+Quote Post
Weles
post 27.05.2012, 12:53:12
Post #3





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
konrados
post 27.05.2012, 12:55:57
Post #4





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


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.

Ten post edytował konrados 27.05.2012, 12:56:15
Go to the top of the page
+Quote Post
Weles
post 27.05.2012, 12:58:16
Post #5





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
konrados
post 27.05.2012, 13:08:16
Post #6





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Crozin
post 27.05.2012, 13:12:42
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Weles
post 27.05.2012, 13:18:55
Post #8





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 7.07.2011

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował Weles 27.05.2012, 13:21:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 19:51