Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Wyszukiwarka myli się przy przejściu ze strony 2 na 1
Forum PHP.pl > Forum > Przedszkole
michal_macieja
Witam wszystkich
Piszę ponieważ nie mam zielonego pojęcia co się dzieje i co robię źle w mojej wyszukiwarce...
Otóż jak załączam ten skrypt poniżej to wyszukiwarka nie wyszukuje mi niczego, pokazuje mi cały czas że jest 0 wyników, sprawdziłem czy to może być spowodowanie złym przesyłaniem szukanej frazy ale nie ona się normalnie wyświetla.

Lecz gdy zmienię \'%$search%\' na np. \'%cos%\' to wyszukiwarka mi wyszukuje normalnie.

Czy ktoś mi może napisać gdzie robię błąd w podawaniu szukanej frazy questionmark.gif

Z góry dziękuje

  1.  
  2. $search = $_POST['search'];
  3. print $search; echo "<br>";
  4.  
  5. $wynika = 'SELECT * FROM `gotowe` WHERE `opis` LIKE \'%$search%\'' or die ("BLAD i nie ma nic !");
  6. $wynik = mysql_query($wynika);
  7. $num_rows=mysql_num_rows($wynik);
  8. print "Ilosc znalezionych: $num_rows<br>";
  9.  
darko
Popraw na:
  1. $wynika = 'SELECT * FROM `gotowe` WHERE `opis` LIKE \'%'.$search.'%\'' or die ("BLAD i nie ma nic !");


Polecam jakiś edytor z kolorowaniem składni, np. Eclipse IDE
michal_macieja
Dzięki wielkie za odpowiedz, zadziałało.

Ja używam Notepad++, i tam też jest kolorowanie składni.
A możesz mi napisać co te ' robią questionmark.gif I dlaczego mają być tam a nie gdzie indziej questionmark.gif
Bo tego nie mogłem znaleźć na necie.
darko
Gdybyś miał dobry edytor to widziałbyś, że '$zmienna' to nie to samo, co 'coś tam'.$zmienna.' znowu coś tam', po prostu wyskakujemy na chwilę z ciągu znaków, żeby poprawnie wyświetlić zmienną, alternatywnie mogłoby być tak:

  1. $wynika = "SELECT * FROM gotowe WHERE opis LIKE '%$search%'" or die ("BLAD i nie ma nic !");


// edit
tutaj akurat BBCode źle koloruje

//edit2
cudzysłowy pojedyncze i podwójne i zagnieżdżanie jednych w drugich to podstawy - odsyłam do google
michal_macieja
No to mam jeszcze jedno pytanie związane z moja wyszukiwarką
Otóż wyszukuje ona wszystko pięknie i ładnie, ale jak przechodzę ze strony 2 na 1 (tylko i wyłącznie przy tej zmianie)
Wyświetla mi się błąd:
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\WebServ\httpd\1\site\search.php on line 56

Ale wyniki pokazuje normalnie.

Zauważyłem ze skrypt przekazuje normalnie wartość $start=1 ale skrypt
  1. if($start == 1) //wzorce dla stron
  2. {$id1 = 1 ; $id1m = $per_str;
  3. if ($num_rows < $id1m) $id1m = $num_rows;
  4. } ;

Nie chce załapać i podaje mi wynik $id1= 0 a powinno być $id1=1,i to powoduje wyświetlenie komunikatu, może ktoś doradzi jak mogę to naprawić.

A to jest kod mojej wyszukiwarki.
  1. <?php
  2.  
  3. if (!isset($_GET['site'])) //jezeli nie stworzona
  4. { $start = 1;} // stworz o wartosci 1
  5. else { $start = $_GET['site']; } // albo wczytaj wartośc z GET
  6.  
  7. if (!isset($_GET['search']) and $start == 1) //jezeli nie gotowa
  8. { $search = $_POST['search'] ;} // pobierz z P
  9. else { $search = $_GET['search']; } // albo wczytaj wartośc z GET
  10.  
  11. require_once ('../adds/dane.php'); // pobieranie danych
  12. require_once('../adds/conect.php');
  13.  
  14. $per_str = $cfg['per_str'];
  15.  
  16. include("../adds/header.php");
  17. print "<link rel='stylesheet' type='text/css' href='../adds/screen.css'>";
  18. print "<div id='site'>";
  19. echo $search;
  20.  
  21. $wynika = 'SELECT * FROM `gotowe` WHERE `opis` LIKE \'%'.$search.'%\'' or die ("BLAD i nie ma nic !");
  22. $wynik = mysql_query($wynika);
  23. $num_rows=mysql_num_rows($wynik);
  24. print "Ilosc znalezionych: $num_rows<br>";
  25.  
  26. while( $tabl_wynik=mysql_fetch_array($wynik))
  27. {
  28. $i++;
  29. $id_n=$tabl_wynik[0];
  30. $tabela_wyn[$i]=$id_n;
  31. print "$tabela_wyn[$i]"; //sprawdzenie
  32. }
  33.  
  34. if($num_rows==0) { print 'Nothing Found erroe 404 <br>';}
  35.  
  36.  
  37. if($start == 1) //wzorce dla stron
  38. {$id1= 1 ; $id1m = $per_str;
  39. if ($num_rows < $id1m) $id1m = $num_rows;
  40. } ;
  41.  
  42. if($start!== 1)
  43. {$id1 = $per_str*($start-1) ; $id1m = $per_str*$start;
  44. if ($num_rows < $id1m) $id1m = $num_rows;
  45. } ;
  46.  
  47.  
  48. while( $id1 <= $id1m ) //wyświetlanie
  49. {
  50. $id2 = $tabela_wyn[$id1];
  51.  
  52. $tabela ='SELECT * FROM `gotowe` WHERE `id_n` = '.$id2.' 'or die ("ERROR Please try Agin");
  53.  
  54. $linki = mysql_query($tabela);
  55.  
  56. $tabl_wynik = mysql_fetch_array($linki);
  57.  
  58. $czas=$tabl_wynik[1];
  59. $opis=$tabl_wynik[4];
  60. $zdje=$tabl_wynik[5];
  61.  
  62. echo $czas; echo "<br>";
  63. echo $opis; echo "<br>";
  64. echo $zdje; echo "<br>";
  65.  
  66. $id1++;
  67.  
  68. }
  69. print "</div>"; // zamkniecie site
  70.  
  71. print "<div id='pages'>";
  72.  
  73. $per_str1= $start*$per_str; //sprawdzenie czy jest kolejna strona.
  74.  
  75. $kolejne = $start +1 ;
  76. $poprzednie = $start - 1;
  77.  
  78. if ( $start != 1 )
  79. {
  80. echo '<a href="search.php?site='.$poprzednie.'&search='.$search.'">Poprzednia</a>&nbsp;&nbsp;&nbsp;&nbsp;';
  81. }
  82. if ($num_rows > $per_str1)
  83. {
  84. echo '<a href="search.php?site='.$kolejne.'&search='.$search.'">Next</a>';
  85. }
  86.  
  87. print "</div>";
  88.  
  89. include("../adds/footer.php");
  90.  
  91.  
  92.  
  93. ?>
  94.  
darko
1. zobacz jaka wartość jest w zmiennej $id2
2. linie 52 i 54:

$tabela ='SELECT * FROM `gotowe` WHERE `id_n` = '.$id2.' 'or die ("ERROR Please try Agin");
$linki = mysql_query($tabela);

zamień na:
  1. $tabela ='SELECT * FROM `gotowe` WHERE `id_n` = '.$id2;
  2. $linki = mysql_query($tabela) or die ("ERROR Please try Again");

michal_macieja
Już udało mi się rozwiązać tą zagadkę...
  1. #
  2. if($start!= 1) //<- tu był o jeden za dużo
  3. #
  4. {$id1 = $per_str*($start-1) ; $id1m = $per_str*$start;
  5. #
  6. if ($num_rows < $id1m) $id1m = $num_rows;
  7. #
  8. } ;


był o jeden = za dużo skasowałem go i jest teraz dobrze.
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.