Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]wyszukiwarka - potrzebna pomoc
hyhyhy
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 5
Dołączył: 6.02.2011

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


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

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sada
post
Post #3





Grupa: Zarejestrowani
Postów: 302
Pomógł: 24
Dołączył: 6.12.2008

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


  1. if ($row['opis'] == $poprzednie)


a zmienna $poprzednie pierwszy raz występuje dopiero potem
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 Aktualny czas: 22.08.2025 - 01:59