Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Stronicowanie wyszukiwarki
hinczyk
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 7.12.2007

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


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
maniaksz
post
Post #2





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 24.11.2004

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


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. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 10:52