Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [HTML][MySQL][SQL] Wpisy się duplikują mimo if-a porównującego, Wpisy się duplikują mimo if-a porównującego
konradkw
post
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


Taki mały problem.. próbowałem już chyba z 10 sposobów na porównanie wpisanego komentarza z tymi już wpisanymi wcześniej i z jakiegoś powodu zamiast porównywać, sprawdza owszem ale nie blokuje niczego - głównie chodzi mi o to żeby się nie dodawały komentarze po odświeżeniu strony (IMG:style_emoticons/default/sad.gif) powtarzalność wpisów jest drugorzędnym problemem.

Możecie popatrzeć niżej co mam nie tak?

Tylko nadmienię że to już chyba 10 jeśli nie 12 wersja skryptu i pewnie tam jest namieszane za bardzo..

Będę bardzo wdzięczny za obejrzenie tego świeżym okiem ...

  1. <?
  2. if (isset($_POST['wyslij']))
  3. {
  4.  
  5. $a = $_POST['komentarz'];
  6. $b = $_POST['aktywacja'];
  7. $c = $_POST['autor'];
  8. $k = $_POST['id_postu'];
  9.  
  10. $sprawdzenie = mysql_query ("SELECT * FROM `pwa_komentarze`");
  11. while ($s = mysql_fetch_array($sprawdzenie, MYSQL_ASSOC))
  12.  
  13. { $koment = $s['komentarz'];
  14.  
  15. if ($koment != $a) { $x = 'dalej'; } else { $x = 'stop'; }
  16. }
  17.  
  18. if ($x == 'dalej') {
  19.  
  20. $add = mysql_query("INSERT INTO `pwa_komentarze` (komentarz, autor, aktywacja, id_postu) VALUES ('$a', '$c', '$b', '$k')");
  21. if ($add) {
  22. echo "<center>Poprawnie dodano wpis!</center>";
  23. } else {
  24. echo mysql_error(); echo '<p>Blad! Spróbuj ponownie</p>';
  25. }
  26. }
  27. }
  28. echo '<a href="index.php?menu=zobacz-wpis-'.$tytulek.'"><b> Zobacz wszystkie komentarze do tego wpisu! </b></a><br><hr><br>';
  29. }
  30. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Shido
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


  1. <?php
  2. if (isset($_POST['wyslij']))
  3. {
  4. $a = $_POST['komentarz'];
  5. $b = $_POST['aktywacja'];
  6. $c = $_POST['autor'];
  7. $k = $_POST['id_postu'];
  8.  
  9. $sprawdzenie = mysql_query ("SELECT * FROM `pwa_komentarze` WHERE `komentarz` = '$a' LIMIT 1");
  10. while ($s = mysql_fetch_array($sprawdzenie, MYSQL_ASSOC))
  11. {
  12. $x = 'dalej';
  13. }
  14. if (@$x == 'dalej')
  15. {
  16. $add = mysql_query("INSERT INTO `pwa_komentarze` (komentarz, autor, aktywacja, id_postu) VALUES ('$a', '$c', '$b', '$k')");
  17. if ($add)
  18. {
  19. echo "<center>Poprawnie dodano wpis!</center>";
  20. }
  21. else
  22. {
  23. echo '<p>Blad! Spróbuj ponownie</p>';
  24. }
  25. }
  26. }
  27. echo '<a href="index.php?menu=zobacz-wpis-'.$tytulek.'"><b> Zobacz wszystkie komentarze do tego wpisu! </b></a><br><hr><br>';
  28. }
  29. ?>


Zacznijmy od tego że na końcu masz coś w nadmiarze klamerek jak widać po tym jak ułożyłem skrypt.
Kolejna rzecz to twoje porównywanie nie działa z prostego powodu ponieważ porównujesz każdy element z bazy i przechodząc do kolejnego elementu zapominasz o wyniku porównania poprzedniego ( bo podmieniasz zmienną ).

To co dałem, wyszuka ci w bazie czy jest rekord w którym `komentarz` = '$a' LIMIT 1 dałem po to by skrypt nie szukał już dalej, bo nie ma to sensu.
Jeżeli znajdzie to $x = 'dalej'; bez żadnego elsa by nie podmieniał rekordów ( chociaż już teraz LIMIT 1 blokuje dalsze podmienianie )
Dalej jest już twój skrypt ( z małą zmianą w warunku ifa - dodałem @ by nie pluł się w że takiej zmiennej nie ma gdy nie znajdzie nic w bazie ).

Ten post edytował Shido 16.07.2012, 14:03:19
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 01:33