Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Opcja wyszukiwarki nie chce działać
Forum PHP.pl > Forum > Przedszkole
Lethys
Witam,

Stworzyłem na potrzeby swojego nowego projektu bardzo prostą wyszukiwarke. Generalnie wyszukiwarka działa jak należy, problem stanowi jej jedna opcja która nie chce mi działać.

Opcja ta polega na dodaniu do bazy wyszukań przy których nic nie znalazło.

Kod:

  1. if ($action == "szukanie"){
  2.  
  3.  
  4. $query = "SELECT * FROM gwiazdy WHERE gwiazda = '".$szukaj."' or link = '".$szukaj."' or gwiazda LIKE '%".$szukaj."%'";
  5. $result = mysql_query($query);
  6. while ($record = mysql_fetch_array($result)) {
  7.  
  8.  
  9.  
  10. print "<div class=\"portfolio-item-first\">
  11.  
  12. <a href=\"http://www.wzrost-gwiazd.pl/$record[link]/\" title=\"Wzrost $record[gwiazda]\"><h3>Wzrost <b>$record[gwiazda]</b></h3></a>
  13. <a href=\"http://www.wzrost-gwiazd.pl/$record[link]/\" title=\"Wzrost $record[gwiazda]\"><img src=\"$record[picture]\" height=\"220\" width=\"280\" alt=\"Wzrost $record[gwiazda]\" /></a>
  14.  
  15. </div><!--end portfolio-item-->";
  16.  
  17.  
  18. }
  19.  
  20. //ta część kodu nie chce działać
  21. $query = "SELECT * FROM gwiazdy WHERE gwiazda = '".$szukaj."' or link = '".$szukaj."' or gwiazda LIKE '%".$szukaj."%'" or die(mysql_error());
  22. $liczenie = mysql_num_rows($query) or die(mysql_error());
  23. print "naliczono: $liczenie";
  24.  
  25. if($liczenie == 0){
  26. mysql_query("insert into do_dodania (nazwa) values('$szukaj')") or die(mysql_error());
  27.  
  28. }
  29.  
  30.  
  31. }


Nie działą mi zmienna $liczenie bo print nie pokazuje żadnego wyniku.
sadistic_son
Zabrakło Ci mysql_query:
  1. $query = "SELECT * FROM gwiazdy WHERE gwiazda = '".$szukaj."' or link = '".$szukaj."' or gwiazda LIKE '%".$szukaj."%'" or die(mysql_error());
  2. $sql=mysql_query($query);
  3. $liczenie = mysql_num_rows($sql) or die(mysql_error());
Lethys
Zmieniłem kod i generalnie $liczenie teraz działa ale tylko w przypadku kiedy jest wieksze od 0.

W przypadku 0, ucina tak jakby resztę strony po tym kodzie.

  1. $sql= mysql_query($query);
  2. $liczenie = mysql_num_rows($sql) or die(mysql_error());
  3. print "liczenie: $liczenie";
  4.  
  5. if($liczenie < 1){
  6. print "Nie mamy takiej gwiazdy w bazie, $szukaj został dodany do kolejki oczekującej na dodanie.";
  7. mysql_query("insert into do_dodania (nazwa) values('$szukaj')") or die(mysql_error());


Nie wykrywa jak jest 0.
sadistic_son
A zrób to tak:
  1. $liczenie = mysql_num_rows($query);
  2. if($liczenie>0){
  3. print "naliczono: $liczenie";
  4. }else{
  5. mysql_query("insert into do_dodania (nazwa) values('$szukaj')") or die(mysql_error());
  6. // itd....
Lethys
Nie działa, teraz jest jeszcze inaczej. Dodaje do bazy nawet jak jest >0

Jak wpisałem Michał nie ma takiego wyniku w bazie to wyskoczyły błędy:

Cytat
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/vhosts/wzrost-gwiazd.pl/httpdocs/szukaj.php on line 100

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/vhosts/wzrost-gwiazd.pl/httpdocs/szukaj.php on line 115
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
eviance
nie wiem czy nie skopałem znaczników iż na kolanie pisałem

robisz jedno zapytanie przed while i tego się trzymaj,kod powinien się wykonać jeżeli jest wynik większy niż 0,inaczej ma sprawdzić czy jest 0 i dodać


  1. if ($action == "szukanie"){
  2.  
  3.  
  4. $query = "SELECT * FROM gwiazdy WHERE gwiazda = '".$szukaj."' or link = '".$szukaj."' or gwiazda LIKE '%".$szukaj."%'";
  5. $result = mysql_query($query);
  6.  
  7.  
  8.  
  9. while ($record = mysql_fetch_array($result)) {
  10.  
  11. if (mysql_num_rows($query)>0){
  12.  
  13. print "<div class=\"portfolio-item-first\">
  14.  
  15. <a href=\"http://www.wzrost-gwiazd.pl/$record[link]/\" title=\"Wzrost $record[gwiazda]\"><h3>Wzrost <b>$record[gwiazda]</b></h3></a>
  16. <a href=\"http://www.wzrost-gwiazd.pl/$record[link]/\" title=\"Wzrost $record[gwiazda]\"><img src=\"$record[picture]\" height=\"220\" width=\"280\" alt=\"Wzrost $record[gwiazda]\" /></a>
  17.  
  18. </div><!--end portfolio-item-->";
  19.  
  20.  
  21. }else{
  22. if ((mysql_num_rows($query)<=0){
  23. $liczenie = mysql_num_rows($query) or die(mysql_error());
  24. print "naliczono: $liczenie";
  25.  
  26. if($liczenie == 0){
  27. mysql_query("insert into do_dodania (nazwa) values('$szukaj')") or die(mysql_error());
  28. //alert(dodano);
  29. }
  30.  
  31.  
  32. }
  33.  
  34.  
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.