Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Podzielenie wyników zapytania na strony
Forum PHP.pl > Forum > Przedszkole
Thomaz2008
Witam

mam taki kod wyciągania danych z bazy danych:

  1. <?php
  2. if($_GET['id'] == 'szukaj') {
  3. echo '';
  4. $wykonawca=$_POST['wykonawca'];
  5. $dodaj = mysql_query("INSERT INTO `szukark` ( `id` , `nazwa` ) VALUES ( '', '$wykonawca' );");  
  6.  
  7. $sql = 'SELECT * FROM `'.$tabelka.'` WHERE `tytul` LIKE '%'.$wykonawca.'%' ORDER by tytul ';
  8.              $result123 = mysql_query($sql);
  9.  $rekordow = mysql_num_rows($result123); 
  10. echo '    <span style="float: left;">Szukana fraza: <b>'.$wykonawca.'</b> // znaleziono '.$rekordow.' rekordów</span><br><br>';
  11.  
  12.      if(mysql_num_rows($result123) > 0) {     
  13.  
  14.      while($row123 = mysql_fetch_assoc($result123))
  15.      {
  16. $rowaqwe = tytul($row123['tytul']);
  17.  
  18.  
  19. <div class="result">
  20.      MP3 ť <a title="'.$row123['tytul'].'" class="title" style="font-weight: bold;" href="mp3,'.$row123['id'].','.$rowaqwe.'.html">'.$row123['tytul'].'</a><br>
  21.      <b>Dodano</b>: '.$row123['data'].' '.$row123['czas'].' . <b>Rozmiar</b>: '.$row123['rozmiar'].' . <b>Długość</b>: '.$row123['dlugosc'].' . <b>Pobierano</b>: '.$row123['licznik'].'  razy
  22.      </div>
  23. ';
  24.  
  25.       }
  26.      }
  27. }
  28. elseif( !isset($_GET['id']) OR $_GET['id'] !== $row12['id']) {
  29. require_once('wyniki.php'); 
  30. }
  31. ?>






potrzebuje aby wyniki były dzielone na strony np co 20 wyników tylko za bardzo nie wiem jak to zrobić i mam nadzieje że ktoś mi pomoże
nospor
Problem bardzo czesto poruszany. Uzyj wyszukiwarki i szukaj pod haslem stronicowanie

Mozesz tez skorzystac z gotowych klas, np. mojej - masz w moim podpisie
zegarek84
w zapytaniu SQL dodaj na końcu komendę LIMIT gdzie dla przykładu:
LIMIT 0,20 - pierwsze 20 wyników
LIMIT 20,20 - drugie 20 wyników /kolejne 20 po 20
LIMIT 40,20 - trzecie 20

więc możesz zrobić coś takiego LIMIT ($x*20),20 gdzie $x=0 to pierwsza strona itd.... lub LIMIT ($x*20-20),20 dla $x=1 dla pierwszej strony

powinno tyle info Ci wystarczyć (pierwszy parametr limit określa po ilu wynikach ma zwracać a drugi ile wyników ma zwrócić)
Thomaz2008
Kurcze nie moge sie w tym połapać... mam pagera zastosowanego do najnowszych

  1. <?php
  2. $sql = "select count(*) from $tabelka";
  3. $result = mysql_query($sql);
  4. $row = mysql_fetch_array($result);
  5. $recordsCount = $row[0];//pobranie liczby rekordów
  6.  $pager = new Pager('strona');
  7.  $pager->SetTotalRecords($recordsCount);
  8.  $pag = $pager->Render(true);
  9.  $start = $pager->GetIndexRecordStart();
  10.  $end = $pager->GetIndexRecordEnd();
  11.  
  12. //zapytanie z uwzglenieniem stronicowania
  13. $sql = 'select * from TABLE limit '.$start.','.($end - $start + 1);
  14.  
  15. $sql1 = 'select * from '.$tabelka.' ORDER by id DESC limit '.$start.','.($end - $start + 1); 
  16. $result = mysql_query($sql1);
  17. echo '    <div class="post">
  18.                      <div class="title">
  19.                          <h2>Ostatnio Dodane Mp3</h2>
  20.                          <p>godzinę temu</p>
  21.                      </div>
  22.                      <div class="entry">
  23.                   
  24.  
  25.  
  26.      <br />
  27.      Strony: '.$pag;
  28. echo '<div class="meta"></div>';
  29. while($row1 = mysql_fetch_array($result))
  30. {
  31. $tytul_obciety = $row1['tytul'];
  32. $ile = 70;
  33. $tytul_obciety = ciach($tytul_obciety,$ile); 
  34. $rowaqwe = tytul($row1['tytul']);
  35.  
  36. <div class="result">
  37.      MP3 ť <a title="'.$row1['tytul'].'" class="title" style="font-weight: bold;" href="mp3,'.$row1['id'].','.$rowaqwe.'.html">'.$tytul_obciety.'</a><br>
  38. <b>Dodano</b>: '.$row1['data'].' '.$row1['czas'].' . <b>Rozmiar</b>: '.$row1['rozmiar'].' . <b>Długość</b>: '.$row1['dlugosc'].' . <b>Pobrań</b>: '.$row1['licznik'].
  39.      </div>
  40.      <div class="meta"></div>
  41.  
  42. ';
  43. }
  44.  echo '</div>
  45.                      <div class="meta">
  46.      Strony: '.$pag;
  47. echo '</div>
  48.                  </div>';     
  49. ?>





ale nie wiem jak go zastosować do tego kodu:



  1. <?php
  2. if($_GET['id'] == 'szukaj') {
  3. echo '';
  4. $wykonawca=$_POST['wykonawca'];
  5. $dodaj = mysql_query("INSERT INTO `szukark` ( `id` , `nazwa` ) VALUES ( '', '$wykonawca' );");  
  6.  
  7. $sql = 'SELECT * FROM `'.$tabelka.'` WHERE `tytul` LIKE '%'.$wykonawca.'%' ORDER by tytul ';
  8.              $result123 = mysql_query($sql);
  9.  $rekordow = mysql_num_rows($result123); 
  10. echo '    <span style="float: left;">Szukana fraza: <b>'.$wykonawca.'</b> // znaleziono '.$rekordow.' rekordów</span><br><br>';
  11.  
  12.      if(mysql_num_rows($result123) > 0) {     
  13.  
  14.      while($row123 = mysql_fetch_assoc($result123))
  15.      {
  16. $rowaqwe = tytul($row123['tytul']);
  17.  
  18.  
  19. <div class="result">
  20.      MP3 ť <a title="'.$row123['tytul'].'" class="title" style="font-weight: bold;" href="mp3,'.$row123['id'].','.$rowaqwe.'.html">'.$row123['tytul'].'</a><br>
  21.      <b>Dodano</b>: '.$row123['data'].' '.$row123['czas'].' . <b>Rozmiar</b>: '.$row123['rozmiar'].' . <b>Długość</b>: '.$row123['dlugosc'].' . <b>Pobierano</b>: '.$row123['licznik'].'  razy
  22.      </div>
  23. ';
  24.  
  25.       }
  26.      }
  27. }
  28. elseif( !isset($_GET['id']) OR $_GET['id'] !== $row12['id']) {
  29. require_once('wyniki.php'); 
  30. }
  31. ?>
zegarek84
  1. <?php
  2. ..........
  3. $strona=1; //która strona
  4. $ile=20; //ile ma być zwróconych wyników zapytania
  5. $start=($strona-1)*$ile;
  6. ...............
  7. .......LIMIT $start,$ile.................
  8. ?>

powinieneś teraz zrozumieć tylko wkomponuj zmienne do zapytania - to jak się je wprowadza zależy czy w podwójnym cudzysłowiu czy tak jak Ty łączysz osobno ciąg tekstowy...
Thomaz2008
zrobiłem taki coś

  1. <?php
  2. if($_GET['id'] == 'szukaj') {
  3. echo '';
  4. $wykonawca=$_POST['wykonawca'];
  5. $dodaj = mysql_query("INSERT INTO `szukark` ( `id` , `nazwa` ) VALUES ( '', '$wykonawca' );");  
  6.  
  7. $sql = 'SELECT * FROM `'.$tabelka.'` WHERE `tytul` LIKE '%'.$wykonawca.'%' ORDER by tytul limit '.$start.','.($end - $start + 1);
  8.              $result123 = mysql_query($sql);
  9.           
  10. $row = mysql_fetch_array($result123);
  11. $recordsCount = $row[0];//pobranie liczby rekordów
  12.  $pager = new Pager('strona');
  13.  $pager->SetTotalRecords($recordsCount);
  14.  $pag = $pager->Render(true);
  15.  $start = $pager->GetIndexRecordStart();
  16.  $end = $pager->GetIndexRecordEnd();             
  17.           
  18.  $rekordow = mysql_num_rows($result123); 
  19. echo '    <span style="float: left;">Szukana fraza: <b>'.$wykonawca.'</b> // znaleziono '.$rekordow.' rekordów</span><br><br>';
  20.  
  21.      if(mysql_num_rows($result123) > 0) {     
  22.  
  23.      while($row123 = mysql_fetch_assoc($result123))
  24.      {
  25. $rowaqwe = tytul($row123['tytul']);
  26.  
  27.  
  28. <div class="result">
  29.      MP3 ť <a title="'.$row123['tytul'].'" class="title" style="font-weight: bold;" href="mp3,'.$row123['id'].','.$rowaqwe.'.html">'.$row123['tytul'].'</a><br>
  30.      <b>Dodano</b>: '.$row123['data'].' '.$row123['czas'].' . <b>Rozmiar</b>: '.$row123['rozmiar'].' . <b>Długość</b>: '.$row123['dlugosc'].' . <b>Pobierano</b>: '.$row123['licznik'].'  razy
  31.      </div>
  32. ';
  33.  
  34.       }
  35.      }
  36. }
  37. elseif( !isset($_GET['id']) OR $_GET['id'] !== $row12['id']) {
  38. require_once('wyniki.php'); 
  39. }
  40. ?>



ale nie działa sadsmiley02.gif
zegarek84
przez zapytaniem do bazy nie zdefiniowałeś zmiennej $start (musisz to wyliczyć zanim bedziesz robił zapytanie do bazy), po zatym drugi parametr limit ustaw na sztywno - będzie prościej, po prostu po przecinku wpisz 20... w zmiennych pasuje jeszcze określić która to ma być strona a jeśli nie ma określonej strony to żeby była to pierwsza strona...
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.