Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Stronicowanie wyszukiwarki
Forum PHP.pl > Forum > Przedszkole
hinczyk
Witam!

Zrobiłem sobie "małą" wyszukiwarke i potrzebuje w razie występowania więcej niż 20 rekordów przejscie do następnej strony lub poprostu numerowanie.

Tak wygląda moja wyszukiwarka:
plik search.php
Kod
include("szukaj.php");
function print_main() {
global $page, $search_limit, $where, $word;
echo 'szukaj';
$ww[$where] = ' selected';
echo '
<div align="center">';
echo '<form method="post" action="search.php">
<input type="text" size="20" name="word" value="'.htmlspecialchars(stripslashes($_REQUEST['word'])).'">
<select style="width:150px;" name="where">
<option value="any" '.$ww['any'].'>Wszędzie</option>
<option value="any">------------------</option>
<option value="produkcja" '.$ww['produkcja'].'>Produkcja</option>
<option value="handel" '.$ww['handel'].'>Handel</option>
</select>
<input type="submit" style="font-weight: bold" value="szukaj!">
</form></div>';

show_result($search_limit, $page);
echo mysql_error();
}


oraz plik szukaj.php
Kod
function show_result($limit, $page) {

global $word, $where;

$word = $_POST['word'];

if($where=='') $where = 'any';
if($word=='') $where = 'halted';

if($where=='any') {
/*********** wyszukiwanie na stronie głownej ****************************/
$q = "SELECT * FROM main WHERE info LIKE '%$word%' ";
$r = mysql_query($q);
while($re = mysql_fetch_array($r)) {
$tekst = "<div style='font-size:12px;'><a style='color:#444;' href='index.php'><u><b>Strona główna</b></u></a>
".preg_replace( '/(' . preg_quote( $word ) . ')/i', '<font style="background-color:#FFFF7F;">$1</font>', substr($re['info'],0,125) )."...</div>
";
echo $tekst;
}
/************************************************************************/
$row_cnt1 = mysql_num_rows($r);
mysql_free_result($r);
}    
if($where=='any' OR $where=='produkcja') {
/*********** wyszukiwanie na stronie produkcji **************************/
$q = "SELECT * FROM produkcja WHERE (nazwa LIKE '%$word%' OR symbol LIKE '%$word%' OR info LIKE '%$word%')";
$r = mysql_query($q);
while($re = mysql_fetch_array($r)) {
$tekst = "<div style='font-size:12px;'><a style='color:#444;' href='produkcja.php?id=".$re['id']."'><u><b>".$re['nazwa']."</b></u></a>
".preg_replace( '/(' . preg_quote( $word ) . ')/i', '<font style="background-color:#FFFF7F;">$1</font>', $re['symbol'])."</div>
";
echo $tekst;
}
/************************************************************************/
$row_cnt2 = mysql_num_rows($r);
mysql_free_result($r);
}

if($where=='any' OR $where=='handel') {
/*********** wyszukiwanie na stronie handlu **************************/
$q = "SELECT * FROM handel WHERE (nazwa LIKE '%$word%' OR symbol LIKE '%$word%' OR info LIKE '%$word%')";
$r = mysql_query($q);
while($re = mysql_fetch_array($r)) {
$tekst = "<div style='font-size:12px;'><a style='color:#444;' href='handel.php?id=".$re['id']."'><u><b>".$re['nazwa']."</b></u></a>
".preg_replace( '/(' . preg_quote( $word ) . ')/i', '<font style="background-color:#FFFF7F;">$1</font>', $re['symbol'])."</div>
";
echo $tekst;
}
/************************************************************************/
$row_cnt3 = mysql_num_rows($r);
mysql_free_result($r);
}
$row_cnt = $row_cnt1 + $row_cnt2 + $row_cnt3;
/********************************************************/
echo '<div align="left" class="uni_01"><hr size="1" noshade>';
if ($where == 'halted'){
echo '<center>Wpisz słowo w wyszukiwarce...</center><hr size="1" noshade>';
}
elseif($row_cnt == 0){
echo '<center>Niestety nie znaleziono niczego co pasowałoby do podanego wyrazu...</center><hr size="1" noshade>';
}else{
echo '<center>szukano: <b>"'.stripslashes(htmlspecialchars($_REQUEST['word'])).'"</b> znaleziono stron: </center><hr size="1" noshade>';
}
}


Za podpowiedz (odpowiedz) z góry dzięki!
maniaksz
poszukaj na forum pod hasłem stronicowanie, było wielokrotnie
hinczyk
No widze że było ale nie bardzo to wszystko rozumiem. Więc moze jakaś podpowiedz;p?
mike
To może najpierw powiedz czego nie rozumiesz.
Chyba nie oczekujesz że będziemy wałkować to samo setny raz.
maniaksz
Masz tutaj jakiegoś gotowca, robiłem to dawno temu. Skrypt jest dość prosty. Generalnie chodzi o to, żeby w zapytaniu do bazy ustawić limit, później to już tylko zabawa z wyświetlaniem. Przeanalizuj to a na pewno Ci się uda. Powodzenia

  1. <?
  2.  
  3.  
  4. //dolaczenie funkcji
  5. require_once("funkcje_bazy.php");
  6. require_once("funkcje_wyswietl.php");
  7.  
  8.  
  9. if(session_is_registered("prawid_uzyt"))
  10. {
  11.  tworz_naglowek_usun("Panel administracyjny");
  12. tworz_panel_admin($prawid_uzyt);
  13. menu_marka();
  14.  
  15. lacz_db();
  16.  
  17. ////////////////////////////////////////////
  18. //poczatek tabeli
  19. ?>
  20.  
  21. <form action=<?$PHP_SELF?>?akcja=delete method="post">
  22. <table align="center" border="0" width="300">
  23. <tr bgcolor="#6c6c6c">
  24. <td width="280"><div align="center"><font class="textb">marka samochodu</font></div></td>
  25. <td width="20"></tr>
  26. </tr>
  27. <?
  28.  
  29. global $akcja;
  30.  
  31. //wyswietlenie marek samochodow
  32. function pokaz_marke($p)
  33. {
  34. global $akcja;
  35. $i=0;
  36.  
  37. if (!isset($p)) { $p = 0; } 
  38.  
  39. $nastrone = 10; // wielkosc "porcji", tu: 10 rekordow 
  40.  
  41. $wys_marke=mysql_query("select * from marka order by marka_nazwa limit $p,$nastrone;") or die("blad w wyswietleniu marki");
  42. while($rekord=mysql_fetch_array($wys_marke))
  43. {
  44. $id_marka=$rekord['id_marka'];
  45. $marka_nazwa=$rekord['marka_nazwa'];
  46.  
  47.  $color=($i%2==0)?"#DCDCDC":"E9ECEF";
  48. ?>
  49.  <tr bgcolor=<?echo $color;?>>
  50. <td width="280"><div align="center"><font class=textcz><?echo $marka_nazwa;?></font></div></td>
  51. <td width="20"><div align="center"><?echo "<input type=\"checkbox\" name=wybor[] value=$id_marka>";?></div></td>
  52. </tr>
  53. <?
  54. $i++;
  55. }
  56. ?>
  57. <tr>
  58. <td colspan="2" width="300">
  59. <br><div align="right"><input type="submit" value="usuń" class="input"></div>
  60. </td>
  61. </tr>
  62. <tr>
  63. <td colspan="2" width="300">
  64. <div align="right"><input type="button" onClick=zaznacz(this.form) value="[X]" class="input"><input type="reset" value="[_]" class="input"></div>
  65. </td>
  66. </tr>
  67. </table>
  68. </form>
  69. <?
  70. //////////////////////////////////////////////////////////////////////////
  71. //skrypt stronicowania
  72. $count = mysql_num_rows(mysql_query("select * from marka;")); 
  73. //echo $count;
  74. $count = $count/$nastrone; //liczba podstron
  75.  
  76. $ile = ceil($count); //zaokraglanie do wiekszej
  77.  
  78. //poczatek
  79. echo "<div align=\"center\">";
  80. if ($p!=0) print ("<a href=\"$PHP_SELF?p=".($p-$nastrone)."\" title=\"poprzednie\" class=input><big>&laquo;</big></a> "); 
  81.  
  82.  
  83. for ($l=1;$l<=$ile;$l++) 
  84. { 
  85. print ("<a href=\"$PHP_SELF?p=".($l*$nastrone-$nastrone)."\" title=\"".($l*$nastrone-($nastrone-1))."-".($l*$nastrone)."\" class=input>"); 
  86.  
  87. if ($p==($l*$nastrone-$nastrone)) 
  88. { 
  89. print ("<b>[" . $l . "]</b></a> "); $akt=$l; } else { print ("[" . $l . "]</a> "); 
  90. } 
  91. } 
  92.  
  93. if ($akt<$ile) print ("<a href=\"$PHP_SELF?p=" . ($p+$nastrone) . "\" title=\"następne\" class=input><big>&raquo;</big></a>"); 
  94. echo "</div>";
  95. //koniec funkcji
  96. }
  97.  
  98. //usuwanie rekordow
  99. if($akcja=="delete")
  100. {
  101. for($i=0; $i<count($wybor); $i++) 
  102. { 
  103. $usun_id = $wybor[$i]; 
  104. $usun_marke=mysql_query("delete from marka where id_marka='$usun_id';") or die("blad w usunieciu marki");
  105. } 
  106. }
  107.  
  108. //wywolanie funkcji
  109. pokaz_marke($p);
  110. tworz_stopke_pan();
  111. }
  112. else
  113. {
  114. uzytkownik_nieuprawniony("Panel administracyjny");
  115. }
  116.  
  117.  
  118. ?>
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.