![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Mam zrobiona wyszukiwarke na Mysql i jak wpisze dane słowo to mi zwraca liste znalezionych rekordów ( prawidlowo )
![]() Ale jak tych rekordow jest 5 czy 9 to Ok, ale gdy jest 200 czy 150 to lista robi sie strasznie dluga. I chce zeby na strone byla lista 20 rekordow a reszta z donosnikami na dole strony Np. 1 2 3 Nastepny . Tylko jest jeden problem nie wiem jak to zrobic. Prosze o pomoc. moj kodzik wyglada tak <?php mysql_connect ("moj serwer","user","*******"); mysql_select_db (mojabaza); if($stan=='szukaj') { $zapytanie = "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa"; $wykonaj = mysql_query ($zapytanie); $znaleziono = mysql_num_rows($wykonaj); if ($znaleziono == "0") { print " "; } else { print "<DIV> Znaleziono trafień $znaleziono.<br></div>"; } while($wiersz=mysql_fetch_array ($wykonaj)) { echo " <tr> <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td> <td width="70%"><div>".$wiersz['nazwa']."</div></td> </tr>"; } } { echo "</table>"; if ($znaleziono == "0") { print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>"; } echo "<TABLE border=0 align=center ><tr> <td><center><br> <form method="get" action="index.php"> <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR> <input type="submit" value="szukaj" name="stan"></form></center></TD>"; echo "</TR></TABLE>"; } ?> Czy ktos mi pomoze ? Tomek |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 0 Dołączył: 19.03.2002 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
W Twoim zapytaniu SQL:
Kod SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"
ORDER BY nazwa brakuje polecenia LIMIT X,Y (na końcu) które zawęzi liczbę znalezionych rekordów. X to numer rekordu od którego mają zostać prezentowane wyniki, a Y to ich ilość. Żeby to miało ręce i nogi, potrzebujesz jeszcze "pre-zapytania" np: Kod SELECT COUNT(*) FROM.... (bez limitu oczywiście), które pozwoli określić sumaryczną liczbę wyników. Znając liczbę wyników dzielisz sobie je na strony w zależności od tego ile chcesz wyświetlać (zmienna Y), a poźniej np. get-em do każdego dynamicznie wyświetlonego linku dodajesz zmienną X. Sorki że tak opisowo, ale chyba będzie lepiej jak sam napiszesz taki prosty skrypt :wink:
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Kod Function page_index( $show ){
global $_GET; $result = mysql_query( "SELECT * FROM jakas_tabela" ); $number = mysql_num_rows( $result ); $page_num = ceil( $number/$this->show ); $page = ceil( $_GET['offset'] / $show ) + 1; $index = "<b>".$page."</b>"; for( $i = 1; $i <= $page_num; $i++ ){ if( $page != $i ){ $j = ($i- 1) * $show; $tmp .= "<a href="?offset=$j">$i</a> "; } } if( $page_num != 1 ) $index .= " [ $tmp ]"; return $index; } $show - liczba wyswietlanych rekordow Dzialanie funkcji mozna zobaczyc na www.rally.vel.pl ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
To caly kod bedzie wygladał tak, prosze o sprawdzenie, a jak bedzie cos zle prosze o dalsze wskazowki. Za wszystkie listy z pomoca bardzo dziekuje.
Oto kod: <?php mysql_connect ("moj serwer","user","*******"); mysql_select_db (mojabaza); if($stan=='szukaj') { $zapytanie = "SELECT COUNT(*) FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa "; $wykonaj = mysql_query ($zapytanie); $znaleziono = mysql_num_rows($wykonaj); if ($znaleziono == "0") { print " "; } else { print "<DIV> Znaleziono trafień $znaleziono.<br></div>"; } while($wiersz=mysql_fetch_array ($wykonaj)) { echo " <tr> <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td> <td width="70%"><div>".$wiersz['nazwa']."</div></td> </tr>"; } } { echo "</table>"; if ($znaleziono == "0") { print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>"; } echo "<TABLE border=0 align=center ><tr> <td><center><br> <form method="get" action="index.php"> <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR> <input type="submit" value="szukaj" name="stan"></form></center></TD>"; echo "</TR></TABLE>"; } Function page_index( $show ){ global $_GET; $result = mysql_query( "SELECT * FROM towary" ); $number = mysql_num_rows( $result ); $page_num = ceil( $number/$this->show ); $page = ceil( $_GET['offset'] / $show ) + 1; $index = "<b>".$page."</b>"; for( $i = 1; $i <= $page_num; $i++ ){ if( $page != $i ){ $j = ($i- 1) * $show; $tmp .= "<a href="?offset=$j">$i</a> "; } } if( $page_num != 1 ) $index .= " [ $tmp ]"; return $index; } ?> Jak znam zycie to pewnie cos zwaliłem !!!! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Kod <?php
mysql_connect ("moj serwer","user","*******"); mysql_select_db (mojabaza); if($stan=='szukaj') { $zapytanie = "SELECT COUNT(*) FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa "; $wykonaj = mysql_query ($zapytanie); $znaleziono = mysql_num_rows($wykonaj); if ($znaleziono == "0"){ print " "; }else{ print "<DIV> Znaleziono trafień $znaleziono.<br></div>"; } while($wiersz=mysql_fetch_array ($wykonaj)) { echo " <tr> <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td> <td width="70%"><div>".$wiersz['nazwa']."</div></td> </tr>"; } echo "<tr><td colspan=2 align=right>".page_index( 5 )."</td></tr>"; } echo "</table>"; if ($znaleziono == "0"){ print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>"; } echo "<TABLE border=0 align=center ><tr> <td><center><br> <form method="get" action="index.php"> <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR> <input type="submit" value="szukaj" name="stan"></form></center></TD>"; echo "</TR></TABLE>"; Function page_index( $show ){ global $_GET; global $znajdz; $result = mysql_query( "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa" ); $number = mysql_num_rows( $result ); $page_num = ceil( $number/$this->show ); $page = ceil( $_GET['offset'] / $show ) + 1; $index = "<b>".$page."</b>"; for( $i = 1; $i <= $page_num; $i++ ){ if( $page != $i ){ $j = ($i- 1) * $show; $tmp .= "<a href="?offset=$j">$i</a> "; } } if( $page_num != 1 ) $index .= " [ $tmp ]"; return $index; } ?> Tak powinno byc dobrze. Nie testowalem tego u siebie, wiec jak by byly jakies bledy to pisz. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzieki za pomoc !!!. Ale skrypcik sie wywala
![]() Wyswietla bląd Kod Warning: Division by zero in /var/www/html/motozbyt/test/inny/index.php on line 157
a linia 157 w moim skrypcie jest nastepujaca. Kod $page = ceil( $_GET['offset'] / $show ) + 1;
Wielki dzieki za pomoc , czy mozna zrobic cos z tym problemem. Pozdrawiam Tomek |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Sorry rabnalem sie w kodzie podczas przpisywania z mojego zrodla
![]() Blad jest w lini 156 Kod $page_num = ceil( $number/$this->show );
Moja funkcja jest w classie i zapomnialem zmienic zmienna $this->show na $show ![]() Powinno byc tak Kod $page_num = ceil( $number/$show );
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Juz jest lepiej ale jeszcze wyrzuca błędy.
Nie listuje rekordow. Kod Warning: Division by zero in /var/www/html/motozbyt/test/inny/index.php on line 157
[ 1 2 3 4 5 6 ] tylko wyswietla na dole cyferki z kolejnymi linkami do nastepnych stron. Pozdrawiam |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
i jeszcze zle pokazuje ilosc trafien bo zawsze jest 1 a w rzeczywistosci znacznie wiecej.
Pozdrawiam |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Jak bede mial troche wiecej czasu potestuje to u siebie i podesle Ci kod.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Kod <?php
mysql_connect ("host","login","pass"); // zmien na odpowiednie mysql_select_db ("baza"); // dane twojego serwera echo "<table>"; if($stan=='szukaj') { $zapytanie = "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa"; $wykonaj = mysql_query ($zapytanie); $znaleziono = mysql_num_rows($wykonaj); if ($znaleziono == "0"){ print " "; }else{ print "<DIV> Znaleziono trafień $znaleziono.<br></div>"; } while($wiersz=mysql_fetch_array ($wykonaj)) { echo " <tr> <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td> <td width="70%"><div>".$wiersz['nazwa']."</div></td> </tr>"; } echo "<tr><td colspan=2 align=right>Strona ".page_index( 3 )."</td></tr>"; // page_index( x ) gdzie x to liczba wyswietlanych rekordow na stronie } echo "</table>"; if ($znaleziono == "0"){ print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>"; } echo "<TABLE border=0 align=center ><tr> <td><center><br> <form method="get" action="test.php"> <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR> <input type="submit" value="szukaj" name="stan"></form></center></TD>"; echo "</TR></TABLE>"; Function page_index( $show ){ global $_GET; global $znajdz; $result = mysql_query( "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"" ); $number = mysql_num_rows( $result ); $page_num = ceil( $number/$show ); $page = ceil( $_GET['offset'] / $show ) + 1; $index = "<b>".$page."</b>"; for( $i = 1; $i <= $page_num; $i++ ){ if( $page != $i ){ $j = ($i- 1) * $show; $tmp .= "<a href="?offset=$j">$i</a> "; } } if( $page_num != 1 ) $index .= " [ $tmp ]"; return $index; } ?> Ten kod przetestowalem u siebie i dziala. Oczywiscie login, haslo itp. musisz zmienic na odpowiednie twojego serwera. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzieki za pomoc ale niestet nie wszystko jest ok.
Sorki ze jestem taki marudny. Jeszcze raz sorki. Skrypt dziła tylko ma jeszcze jedna wade. Po wpisaniu do wyszukiwarki np. ab to skrypt mi wyrzuca od razu wszystkie znalezione rekordy . A na dole strony znajduja sie cyferki z kolejnymi stronami (dobrze liczy - tak mialo byc), lecz jak sie kliknie na cyferke np"3" zeby przejsc do strony 3 to on wraca do strony pierwszej bez znalezionego zadnego rekordu. Strone testuje pod tym adresem http://www.motozbyt.biz.pl/test/inny/index.php Bardzo dziekuje za pomoc. Tomek |
|
|
![]()
Post
#13
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Kod <?php
mysql_connect ("localhost","login","pass"); // wartosci do zmiany mysql_select_db ("bartek"); // wartosc do zmiany $show = 1; // ilosc pokazywanych rekordow $plik= "test.php"; // nazwa pliku w ktorym jest ten skrypt echo "<table>"; if($stan=='szukaj') { if( isset($_GET['offset']) ){ $add = "LIMIT ".$_GET['offset'].", $show"; }else{ $add = "LIMIT 1, 1"; } $zapytanie = "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%" ORDER BY nazwa ".$add; $wykonaj = mysql_query ($zapytanie); $znaleziono = mysql_num_rows($wykonaj); if ($znaleziono == "0"){ print " "; }else{ print "<DIV> Znaleziono trafień $znaleziono.<br></div>"; } while($wiersz=mysql_fetch_array ($wykonaj)) { echo " <tr> <td width="30%"><DIV>".$wiersz['symbol']."</DIV></td> <td width="70%"><div>".$wiersz['nazwa']."</div></td> </tr>"; } echo "<tr><td colspan=2 align=right>Strona ".page_index( $show )."</td></tr>"; } echo "</table>"; if ($znaleziono == "0"){ print "<CENTER> Nie znaleziono żadnego rekordu</CENTER>"; } echo "<TABLE border=0 align=center ><tr> <td><center><br> <form method="get" action="$plik"> <input type="text" name="znajdz" size="20" VALUE="czego szukasz" ><BR> <input type="submit" value="szukaj" name="stan"></form></center></TD>"; echo "</TR></TABLE>"; Function page_index( $show ){ global $_GET; global $znajdz; $result = mysql_query( "SELECT * FROM towary where symbol like "%$znajdz%" or nazwa like "%$znajdz%"" ); $number = mysql_num_rows( $result ); $page_num = ceil( $number/$show ); $page = ceil( $_GET['offset'] / $show ) + 1; $index = "<b>".$page."</b>"; for( $i = 1; $i <= $page_num; $i++ ){ if( $page != $i ){ $j = ($i- 1) * $show; $tmp .= "<a href="?offset=$j&znajdz=".$_GET['znajdz']."&stan=szukaj">$i</a> "; } } if( $page_num != 1 ) $index .= " [ $tmp ]"; return $index; } ?> Juz powinno byc wszystko OK. Mam nadzieje ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 21.04.2002 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzieki .
![]() ![]() Pozdrawiam :wink: |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 22:15 |