Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] wynik wyszukiwania
!*!
post
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Zapytanie i stronicowanie:
  1. <?php
  2. require_once("connect.php");
  3.  
  4. $wynik = $_POST['wyszukaj'];
  5.  
  6.  
  7. if (isset($_POST['wyszukaj'])) {
  8. $_SESSION['wyszukaj'] = $_POST['wyszukaj'];
  9. }
  10.  
  11. function pages ($first, $countpages, $nrpages, $zap) {
  12. if($countpages > $nrpages ){
  13. $countpages = $countpages/$nrpages; 
  14. $ile = ceil($countpages); 
  15. if ($first!=0) echo("<a href=\"".$_SERVER['PHP_SELF']."?wyszukiwarka.php&first=" . ($first-$nrpages) . "\" title=\"Poprzednie\">Poprzednie</a> "); 
  16.  
  17. for ($i=1;$i<=$ile;$i++) 
  18. { 
  19. echo("<a href=\"".$_SERVER['PHP_SELF']."?wyszukiwarka.php&first=" . ($i*$nrpages-$nrpages) . "\" title=\"" . ($i*$nrpages-($nrpages-1)) . "-" . ($i*$nrpages) ."\">");
  20. if ( $countpages > 6 ) {if ($first==($i*$nrpages-$nrpages)) 
  21.  { 
  22. echo ("<b>|" . $i . "|</b></a> "); $akt=$i-1; } else { print ("|" . $i . "|</a> "); 
  23.  } 
  24. } 
  25.  
  26. else {
  27. if ($first==($i*$nrpages-$nrpages)) 
  28.  { 
  29. echo ("<b>|" . $i . "|</b></a> "); $akt=$i; } else { print ("|" . $i . "|</a> ");  
  30.  } 
  31. }
  32. } 
  33. if ($akt<$ile) echo ("<a href=\"".$_SERVER['PHP_SELF']."?wyszukiwarka.php&first=" . ($first+$nrpages) . "\" title=\"Następne\">Następne</a>");
  34. }
  35. }
  36.  
  37. if (!isset($_GET['first'])) $first = 0; else $first = (int) $_GET['first']; 
  38. $nrpages = 10; 
  39. $szukaj=mysql_real_escape_string($_SESSION['wyszukaj']);
  40. $zap= "SELECT login,data FROM userdata WHERE login LIKE '%$szukaj%' LIMIT $first,$nrpages;";
  41. $countpages = mysql_num_rows(mysql_query("SELECT login FROM userdata WHERE login LIKE '%$szukaj%' "));
  42. $quer = mysql_query($zap);
  43.  
  44.  
  45. ?>


odczyt wygląda tak:

  1. <?php pages($first, $countpages, $nrpages, $zap); ?>
  2. <?php
  3.  
  4. while ($wiersz = mysql_fetch_array($quer)) 
  5. {
  6. $qwe++;
  7. $class = ($qwe%2==1) ? "wysz1" : "wysz2";
  8. echo '<div class="'. $class .'";>';
  9. echo '<b>'.$wiersz['login'].' </b><br />';
  10. echo '<br /> data rejestracji: '.$wiersz[data].'';
  11. echo '</div>';
  12. }
  13.  
  14. ?>


Wyszukuje rekordy, w tym wypadku 10 na stronę, jednak gdy mam 20 czy 200 wczytanych rekordów, owszem są one stronicowane co 10 na każdą stronę, ale gdy chcę zobaczyć stronę nr 2, lub 50 to zamiast się normalnie odczytać w stronicowaniu:

  1. Poprzednie |1| |2| |3| |4| Następne


skrypt się wykrzacza i pobierane są wszytkie rekordy z bazy, a co za tym idzie, wyglada to tak:

  1. |1| |2| |3| |4| |5| |6| |7| |8| |9| |10| |11| |12| |13| |14| |15| |16| |17| |18| |19| |20| |21| |22| |23| |24| |25| |26| |27| |28| |29| |30| |31| |32| |33| |34| |35| |36| |37| |38| |39| |40| |41| |42| |43| |44| |45| |46| |47| |48| |49| |50| |51| |52| |53| |54| |55| |56| |57| |58| |59| |60| |61| |62| |63| |64| |65| |66| |67| |68| |69| |70| |71| |72| |73| |74| |75| |76| |77| |78| |79| |80| |81| |82| |83| |84| |85| |86| |87| |88| |89| |90| |91| |92| |93| |94| |95| |96| |97| |98| |99| |100| |101| |102| |103| |104| Następne


W zalezności od ilości rekordów w bazie...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


miałeś:
  1. <?php
  2. $zap= "SELECT login,data FROM userdata WHERE login LIKE '%$szukaj%' LIMIT $first,$nrpages;";
  3. ?>

a przerobiłeś to na:
  1. <?php
  2. $zap= "SELECT * FROM userdata WHERE MATCH(login) against ('$szukaj*' IN BOOLEAN MODE)";
  3. ?>

naprawdę nie widzisz gdzie jest problem? nie wiesz jak się stronicuje dane pobierane z bazy MySQL?
no to podpowiem, wywaliłeś z zapytania klauzulę LIMIT która (jak sama nazwa wskazuje) ogranicza wyniki zwracane przez zapytanie do określonego limitu - w naszym przypadku do konkretnej podstrony ...
powodzenia.
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: 26.12.2025 - 09:35