Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyszukiwarka a stronicowanie
Forum PHP.pl > Forum > Przedszkole
pijanyadmin
obecnie wyszukiwatrka wygląda tak i spełnia swoje zadanie bez problemu

  1. <?php
  2.  
  3. $szukaj=mysql_real_escape_string($_POST['szukaj']);
  4. $result = mysql_query('SELECT login FROM userdata WHERE szukaj = $szukaj');
  5. $sql= "SELECT * FROM userdata WHERE login LIKE '%$szukaj%'";
  6. $result2 = mysql_query($sql);
  7. $iles = mysql_num_rows($result2);
  8.  
  9. $res = mysql_query("SELECT * FROM userdata");
  10. $num_results = mysql_num_rows($res);
  11.  
  12. $end = gen_www();
  13. $run = $end - $start;
  14.  
  15. ?>
  16.  
  17. <h2>Wyniki wyszukiwania: </h2>
  18. <div class="profil">Znaleziono:<?php echo "<b>$iles</b>"; ?> z <?php echo "<b>$num_results</b>"; ?> <?php echo "Strona wygenerowana w " . substr($run, 0, 5) . " sek."; ?></div>
  19. <div class="profil1">widok: alfabetycznie | data rejestracji | ocena</div>
  20.  
  21. <?php
  22. while ($wiersz = mysql_fetch_array($result2)) 
  23. {
  24. echo '<div class="profil"><b>'.$wiersz['login'].' </b></div>';
  25. echo '<img height="32" width="25" src='.$wiersz[fotografia].' style="float:left; margin-right: 10px;" alt="" />';
  26. echo 'email: '.$wiersz[email].'';
  27. echo '<br /> opis: '.$wiersz[opis].'';
  28. }
  29.  
  30. ?>


jednak próbowałem zrobić stronicowanie przeglądając forum, tylko że... nie udało mi się do końca... minowicie jakie ma być zapytanie $sql które wyszuka w bazie wyraz zadany przez formularz? to znalazłem na forum

  1. <?php
  2. $sql = mysql_query('SELECT * FROM userdata');
  3. $ile = mysql_num_rows($sql); //ilosc wszystkich rekordow (nie stron !!)
  4. $na_strone = 5; //ilość rekordów max
  5. $stron = ceil ($ile / $na_strone); //stony w zaokrągleniu
  6. $szukaj=mysql_real_escape_string($_POST['szukaj']); //pobranie z formularza
  7.  
  8. for ($i = 1; $i < $stron; $i++) echo ' <a href="?strona='.($i+1).'">strona '.($i+1).'</a> ';
  9. if (!isset($_GET['strona'])) $strona = 1; else $strona = (int)$_GET['strona'];
  10.  
  11. $sql = mysql_query("SELECT * FROM userdata WHERE ".szukaj = $szukaj." LIMIT ".(($strona-1)*$na_strone).','.($strona*$na_strone)); // tak odczytujesz
  12. ?>


tylko jak to połączyć z
'
  1. <?php
  2. $szukaj=mysql_real_escape_string($_POST['szukaj']);
  3. $result = mysql_query('SELECT login FROM userdata WHERE szukaj = $szukaj');
  4. $sql= "SELECT * FROM userdata WHERE login LIKE '%$szukaj%'";
  5. ?>
potreb
Moze będzie działać :/

  1. <?php
  2. function pages ($first, $countpages, $nrpages, $zap) {
  3. if($countpages > $nrpages ){
  4. $countpages = $countpages/$nrpages; 
  5. $ile = ceil($countpages); 
  6. if ($first!=0) echo("<a href=\"".$_SERVER['PHP_SELF']."?first=" . ($first-$nrpages) . "\" title=\"Poprzednie\"><big>Ť</big></a> "); 
  7. echo $countpages."<br>";
  8. for ($i=1;$i<=$ile;$i++) 
  9. { 
  10. echo("<a href=\"".$_SERVER['PHP_SELF']."?first=" . ($i*$nrpages-$nrpages) . "\" title=\"" . ($i*$nrpages-($nrpages-1)) . "-" . ($i*$nrpages) ."\">");
  11. if ( $countpages > 6 ) {if ($first==($i*$nrpages-$nrpages)) 
  12.  { 
  13. echo ("<b>|" . $i . "|</b></a> "); $akt=$i-1; } else { print ("|" . $i . "|</a> "); 
  14.  } 
  15. } else 
  16.  {
  17.  if ($first==($i*$nrpages-$nrpages)) 
  18.  { 
  19.  echo ("<b>|" . $i . "|</b></a> "); $akt=$i; } else { print ("|" . $i . "|</a> ");  
  20.  } 
  21. }
  22. } 
  23. if ($akt<$ile) echo ("<a href=\"".$_SERVER['PHP_SELF']."?first=" . ($first+$nrpages) . "\" title=\"Następne\"><big>ť</big></a>");
  24. }
  25. }
  26.  
  27. if (!isset($_GET['first'])) $first = 0; else $first = (int) $_GET['first']; 
  28. $nrpages = 2; 
  29. $szukaj=mysql_real_escape_string($_POST['szukaj']);
  30. $result = mysql_query('SELECT login FROM userdata WHERE szukaj = $szukaj');
  31. // do czego ci zapytanie result, przeciez sie do niego nie odwojuesz
  32. $zap= "SELECT * FROM userdata WHERE login LIKE '%$szukaj%' LIMIT $first,$nrpages;";
  33. $countpages = mysql_num_rows(mysql_query("SELECT * FROM userdata WHERE login LIKE '%$szukaj%' "));
  34. $quer = mysql_query($zap);
  35. ?>
  36.  
  37. <h2>Wyniki wyszukiwania: </h2>
  38. <div class="profil">Znaleziono:<?php echo "<b>$countpages</b>"; ?> z <?php echo "<b>$num_results</b>"; ?> <?php echo "Strona wygenerowana w " . substr($run, 0, 5) . " sek."; ?></div>
  39. <div class="profil1">widok: alfabetycznie | data rejestracji | ocena</div>
  40.  
  41. <?php
  42. while ($wiersz = mysql_fetch_array($quer)) 
  43. {
  44. echo '<div class="profil"><b>'.$wiersz['login'].' </b></div>';
  45. echo '<img height="32" width="25" src='.$wiersz[fotografia].' style="float:left; margin-right: 10px;" alt="" />';
  46. echo 'email: '.$wiersz[email].'';
  47. echo '<br /> opis: '.$wiersz[opis].'';
  48.  
  49. echo pages($first, $countpages, $nrpages, $zap);
  50. }
  51.  
  52. ?>
pijanyadmin
poprawiłem to troche i jest problem po wczytaniu danych [2][3] itp. minowicie są gubione dane które zostały wczytane z formularza

Kod
$szukaj=mysql_real_escape_string($_POST['szukaj']);



i zamiast tego po kliknieciu na [2] [3] [4] wyświetlane są wyniki z całej bazy a nie tylko te przechwycone z formularza na stronie [1]

  1. <?php
  2.  
  3. function pages ($first, $countpages, $nrpages, $zap) {
  4. if($countpages > $nrpages ){
  5. $countpages = $countpages/$nrpages; 
  6. $ile = ceil($countpages); 
  7. if ($first!=0) echo("<a href=\"".$_SERVER['PHP_SELF']."?id1=wynik&first=" . ($first-$nrpages) . "\" title=\"Poprzednie\">Poprzednie</a> "); 
  8. echo $countpages."<br>";
  9. for ($i=1;$i<=$ile;$i++) 
  10. { 
  11. echo("<a href=\"".$_SERVER['PHP_SELF']."?id1=wynik&first=" . ($i*$nrpages-$nrpages) . "\" title=\"" . ($i*$nrpages-($nrpages-1)) . "-" . ($i*$nrpages) ."\">");
  12. if ( $countpages > 6 ) {if ($first==($i*$nrpages-$nrpages)) 
  13.  { 
  14. echo ("<b>|" . $i . "|</b></a> "); $akt=$i-1; } else { print ("|" . $i . "|</a> "); 
  15.  } 
  16. } 
  17.  
  18. else {
  19. if ($first==($i*$nrpages-$nrpages)) 
  20.  { 
  21. echo ("<b>|" . $i . "|</b></a> "); $akt=$i; } else { print ("|" . $i . "|</a> ");  
  22.  } 
  23. }
  24. } 
  25. if ($akt<$ile) echo ("<a href=\"".$_SERVER['PHP_SELF']."?id1=wynik&first=" . ($first+$nrpages) . "\" title=\"Następne\">Następne</a>");
  26. }
  27. }
  28.  
  29. if (!isset($_GET['first'])) $first = 0; else $first = (int) $_GET['first']; 
  30. $nrpages = 3; 
  31. $szukaj=mysql_real_escape_string($_POST['szukaj']);
  32. $zap= "SELECT * FROM userdata WHERE login LIKE '%$szukaj%' LIMIT $first,$nrpages;";
  33. $countpages = mysql_num_rows(mysql_query("SELECT * FROM userdata WHERE login LIKE '%$szukaj%' "));
  34. $quer = mysql_query($zap);
  35.  
  36. ?>
  37.  
  38. <h2>Wyniki wyszukiwania: </h2>
  39. <?php echo pages($first, $countpages, $nrpages, $zap); ?>
  40. <div class="profil">Znaleziono:<?php echo "<b>$countpages</b>"; ?> z <?php echo "<b>$num_results</b>"; ?> <?php echo "Strona wygenerowana w " . substr($run, 0, 5) . " sek."; ?></div>
  41. <div class="profil1">widok: alfabetycznie | data rejestracji | ocena</div>
  42.  
  43. <?php
  44.  
  45. while ($wiersz = mysql_fetch_array($quer)) 
  46. {
  47. echo '<div class="profil"><b>'.$wiersz['login'].' </b></div>';
  48. echo '<img height="32" width="25" src='.$wiersz[fotografia].' style="float:left; margin-right: 10px;" alt="" />';
  49. echo 'email: '.$wiersz[email].'';
  50. echo '<br /> opis: '.$wiersz[opis].'';
  51.  
  52.  
  53. }
  54.  
  55. ?>
Kicok
Wyszukiwarek nie pisze się z użyciem $_POST.

Popraw swój kod, zmień w formularzu method="post" na method="get" a linki do kolejnych stron twórz w taki sposób:

  1. <?php
  2.  
  3. echo '<a href="' . $_SERVER['PHP_SELF'] . '?id=wynik&amp;szukaj=' . rawurlencode( $_GET['szukaj'] ) . '&amp;first=' . ( $i * $nrpages - $nrpages ) . '">' . $i . '</a>';
  4.  
  5. ?>
pijanyadmin
pozmieniałem jaednak teraz nie działa w tym includowanie, czyli w ogóle wyświetlanie wyników wyszukania

  1. <?php
  2.  
  3. function pages ($first, $countpages, $nrpages, $zap) {
  4. if($countpages > $nrpages ){
  5. $countpages = $countpages/$nrpages; 
  6. $ile = ceil($countpages); 
  7. if ($first!=0) echo("<a href=\"".$_SERVER['PHP_SELF']."?id1=wynik&first=" . ($first-$nrpages) . "\" title=\"Poprzednie\">Poprzednie</a> "); 
  8. echo $countpages."<br>";
  9. for ($i=1;$i<=$ile;$i++) 
  10. { 
  11.  echo '<a href="' . $_SERVER['PHP_SELF'] . '?id1=wynik&first=' . rawurlencode( $_GET['szukaj'] ) . '?id1=wynik&first=' . ( $i * $nrpages - $nrpages ) . '">' . $i . '</a>';
  12. if ( $countpages > 6 ) {if ($first==($i*$nrpages-$nrpages)) 
  13.  { 
  14. echo ("<b>|" . $i . "|</b></a> "); $akt=$i-1; } else { print ("|" . $i . "|</a> "); 
  15.  } 
  16. } 
  17.  
  18. else {
  19. if ($first==($i*$nrpages-$nrpages)) 
  20.  { 
  21. echo ("<b>|" . $i . "|</b></a> "); $akt=$i; } else { print ("|" . $i . "|</a> ");  
  22.  } 
  23. }
  24. } 
  25. if ($akt<$ile) echo ("<a href=\"".$_SERVER['PHP_SELF']."?id1=wynik&first=" . ($first+$nrpages) . "\" title=\"Następne\">Następne</a>");
  26. }
  27. }
  28.  
  29. if (!isset($_GET['first'])) $first = 0; else $first = (int) $_GET['first']; 
  30. $nrpages = 3; 
  31. $szukaj=mysql_real_escape_string($_GET['szukaj']);
  32. $zap= "SELECT * FROM userdata WHERE login LIKE '%$szukaj%' LIMIT $first,$nrpages;";
  33. $countpages = mysql_num_rows(mysql_query("SELECT * FROM userdata WHERE login LIKE '%$szukaj%' "));
  34. $quer = mysql_query($zap);
  35.  
  36. ?>
  37.  
  38. <h2>Wyniki wyszukiwania: </h2>
  39. <?php echo pages($first, $countpages, $nrpages, $zap); ?>
  40. <div class="profil">Znaleziono:<?php echo "<b>$countpages</b>"; ?> z <?php echo "<b>$num_results</b>"; ?> <?php echo "Strona wygenerowana w " . substr($run, 0, 5) . " sek."; ?></div>
  41. <div class="profil1">widok: alfabetycznie | data rejestracji | ocena</div>
  42.  
  43. <?php
  44.  
  45. while ($wiersz = mysql_fetch_array($quer)) 
  46. {
  47. echo '<div class="profil"><b>'.$wiersz['login'].' </b></div>';
  48. echo '<img height="32" width="25" src='.$wiersz[fotografia].' style="float:left; margin-right: 10px;" alt="" />';
  49. echo 'email: '.$wiersz[email].'';
  50. echo '<br /> opis: '.$wiersz[opis].'';
  51.  
  52.  
  53. }
  54.  
  55. ?>
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.