Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][HTML][PHP]Komentarze do każdego newsa na stronie
analfabeta11
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 14.05.2010
Skąd: Polska

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


Witam serdecznie!
Na początku chciałbym zaznaczyć, że używałem opcji szukaj, lecz nie za bardzo mi się to udało. Pewnie ktoś inny to znajdzie i mi się oberwie, że niepotrzebnie temat zakładam, ale cóż... tak bywa (IMG:style_emoticons/default/smile.gif)

Mój problem wygląda następująco:
Robię sobie taki mały serwis. Dodawanie newsów i inne takie niby bajery w nim są. Cudem udało mi się zrobić odnośniki do poszczególnych tematów na inną podstronę serwisu np. www.serwis.pl/news.php?id=2 i chcę, aly na każdej takiej stronie były komentarze do danego tematu, lecz nie wiem jak to zrobić. I tutaj jest moja prośba do Was. Czy mógłby mi ktoś powiedzieć co mam zrobić? Wiem, że trzeba będzie zrobić formularz i tabelę w bazie danych. To jest chwilowo cała moja wiedza.
Nie chcę takiego "gotowca", lecz odrobina kodu nie zaszkodzi (IMG:style_emoticons/default/smile.gif)

Z góry dziękuję (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Tak jest jeśli się wali komunikat bez sprawdzenia czy faktycznie się coś powiodło (IMG:style_emoticons/default/winksmiley.jpg) Zamiast
  1. $usun = "DELETE * FROM komentarze WHERE `comment_id` = $dousuniecia";
  2. mysql_query ($usun);
  3. mysql_close ($connection);
  4. print ("Komentarz został usunięty!");
zrób
  1. $usun = 'DELETE FROM komentarze WHERE `comment_id` = '.$dousuniecia.' LIMIT 1';
  2. if( mysql_query ($usun) )
  3. if( mysql_affected_rows( $connection ) > 0 )
  4. echo 'Komentarz został usunięty!';
  5. else
  6. echo 'Nie zabanglało usunięcie.';
  7. else
  8. echo 'Coś nie bangla w bazie: '.mysql_error( $connection );
  9. mysql_close ( $connection );
Dlaczego tak?
Po pierwsze: byk w zapytaniu! Nie ma DELETE * FROM. Zobacz na składnię DELETE. Poza tym optymalizacja. Zawsze tylko jeden komentarz usuwasz, więc daj LIMIT 1 by nie łaziło po całej bazie (IMG:style_emoticons/default/winksmiley.jpg)
Po drugie: Nie sprawdzasz czy zapytanie było prawidłowe testując zwrotkę z mysql_query.
Po trzecie: Prawidłowe zapytanie może nic nie zrobić! Przy UPDATE, DELETE i INSERT musisz więc ilość wierszy sprawdzić jakie były przy okazji modyfikowane/dodawane/usuwane. To może mylić, przykładowo UPDATE rekordu tymi samymi danymi pokaże, że UPDATE był wykonany, ale ani jeden wiersz nie został tak naprawdę zmieniony. Mysql_query zwróci true, ale mysql_affected_rows zwróci 0. Dzieki temu możesz walnąć komunikat w stylu: "W rekordzie nic nie zmieniono."
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 10.10.2025 - 07:01