Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]wyszukiwarka - potrzebna pomoc
Forum PHP.pl > Forum > Przedszkole
hyhyhy
Witam,
Byłbym wdzięczny, gdyby ktoś zerknął na ten kod i powiedział mi, co nie gra, 99% jakiś błąd logiczny w składni. Siedzę nad tą wyszukiwarką dwa dni i nie potrafię jej doprowadzić do porządku, a w zasadzie - raz działa, raz nie. Na chwilę obecną nie wyświetla się "brak wyników" gdy ich nie ma, (to przestało działać nagle, nie wiem czemu), do tego jesli jakiś wynik sie pojawia, to wyswietla sie
Warning: mysql_fetch_assoc(): 2 is not a valid MySQL result resource in przy czym cyfra zwieksza sie o 1 przy kolejnych wyswietlonych wynikach, no i blad jest w linii petli while $row = mysql_fetch_assoc. Będę wdzieczny za pomoc.

  1. <?php
  2.  
  3.  
  4. $wyrazenie_z_wyszukiwarki = $_POST['szukaj'];
  5. $wyrazenie_trimmed = trim($wyrazenie_z_wyszukiwarki);
  6. $wyrazenie_gotowe1 = strtolower($wyrazenie_trimmed);
  7. $wyrazy = explode (" ", $wyrazenie_gotowe);
  8. $liczba = count($wyrazy);
  9.  
  10. //--------------------------------------POLACZENIE Z BAZA-------------------------
  11.  
  12.  
  13. $tablica = $_POST['gra'];
  14. $cel = $_POST['kategoria'];
  15.  
  16. $dlugosc_tablica = strlen($tablica);
  17. $dlugosc_kategoria = strlen($cel);
  18.  
  19.  
  20. if (($dlugosc_tablica > 2 ) && ($dlugosc_kategoria > 2)) //jesli pole gra oraz pole kategoria zostaly wypelnione
  21. {
  22. for ($i=0;$i<$liczba;$i++)
  23. { //petla badajaca wyniki dla kazdego wyrazu (przechodzi tyle razy ile pozycji ma tablica wynikajaca z funkcji count)
  24.  
  25. $result = mysql_query("SELECT * FROM `$tablica` WHERE `nazwa` like '%".$wyrazy[$i]."%' AND `cel` LIKE '$cel'");
  26. $licznik_wynikow = 0;
  27. while ($row = mysql_fetch_assoc($result))
  28. {
  29. if ($row['opis'] == $poprzednie) { break; } //jesli nastepuje powtorka, petla nie jest wykonywana tak dlugo
  30. else { //az pojawi sie cos nowego. wtedy to nowe jest zapisywane do
  31. echo $row["cel"]." "; //zmiennej $poprzednie
  32. echo $row["nazwa"]." ";
  33. echo $row["opis"]." ";
  34. echo $row["kontakt"]." ";
  35. echo $row["link"]." ";
  36. echo "<br />";
  37. $licznik_wynikow++;
  38. $poprzednie = $row["opis"]; //opis jako najbardziej charakterystyczna i unikalna czesc rekordu, zapisany po wykonaniu WySwiETLonEGO ogloszenia
  39. }
  40. if ($licznik_wynikow < 1) { echo "Brak wynikow do wyswietlenia dla wyrazu <b> ".$wyrazy[$i]." </b> <br /><br /> "; }
  41.  
  42. } //petla wyswietlajaca wyniki - koniec
  43. }
  44. } //pole zostalo wypelnioine - szukaj - koniec instrukcji
  45. else //jesli zadne pola radio nie zostaly zaznaczone
  46. {
  47. echo 'Nie zaznaczyles zadnej kategorii i/lub nie wybrales zadnej gry z listy! <a href="szukaj.html">Wroc do poprzedniej strony</a> i sprobuj jeszcze raz!';
  48. }
  49.  
  50. ?>

nospor
Temat: Jak poprawnie zada pytanie
Masz tu napisane jak sobie radzić z takimi problemami.

Co do wyświetlania komunikatu, że nie ma rekordów:
dales go w petli, ktora dziala dopiero wtedy, gdy te rekordy są - bardzo "sprytne" rozwiązanie wink.gif
sada
  1. if ($row['opis'] == $poprzednie)


a zmienna $poprzednie pierwszy raz występuje dopiero potem
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.