Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porcjowanie wyników i baza danych
Forum PHP.pl > Forum > PHP
superozy
Witam mam problem, próbuję zrobić stronicowanie wyników bazy danych lecz nie za bardzo mi to wychodzi...

opierałem się na tym kodzie:
http://www.kursy.czestochowaonline.pl/mysql/3.html

ogólnie wszytko działa, ale jak próbuję dołożyć stronicowanie wszystko traci sens sad.gif

Proszę o pomoc, jezeli gdzies robię błędy to przepraszam ale mam złamany obojczyk i ciężko mi naciskac przyciski.


to mój kod:
  1. ...
  2.  
  3. // ---------------------------------
  4. $strona = $_GET['s'];
  5. // Wynikow Na Strone
  6. $wns = 5;
  7. settype($strona, "integer");
  8. $tresc_zapytania_max = 'SELECT `id` FROM `nba`';
  9. $zapytanie_max = mysql_query($tresc_zapytania_max);
  10. // $r_max zawiera ilosc wszystkich rekordow w tabeli
  11. $r_max = mysql_num_rows($zapytanie_max);
  12.  
  13. $tresc_zapytania = 'SELECT * FROM worker ORDER BY id LIMIT '.($strona*$wns).','.$wns;
  14. $zapytanie = mysql_query($tresc_zapytania);
  15. <table border='1' cellspacing='2' cellpadding='2'>
  16. <tr>
  17. <td width=\"auto\" height=\"30px\">ID</td>
  18. <td width=\"auto\">Imię</td>
  19. <td width=\"auto\">Nazwisko</td>
  20. <td width=\"auto\">Płeć</td>
  21. <td width=\"auto\">Nazw. panieńskie</td>
  22. <td width=\"auto\">E-mail</td>
  23. <td width=\"auto\">Kod pocztowy</td>
  24. </tr>
  25. ";
  26. while($row = mysql_fetch_array($result))
  27. {
  28. while ($w = mysql_fetch_row($zapytanie))
  29. {
  30.  
  31. // ---------------------------------
  32. if($row['plec'] == 'Kobieta')
  33. {
  34. echo "<tr>";
  35. echo "<td height=\"30px\">" . $row['id'] . "</td>" ;
  36. echo "<td>" . $row['imie'] . "</td>" ;
  37. echo "<td>" . $row['nazw'] . "</td>";
  38. echo "<td>" . $row['plec'] . "</td>";
  39. echo "<td>" . $row['pani'] . "</td>";
  40. echo "<td>" . $row['mail'] . "</td>";
  41. echo "<td>" . $row['kod'] . "</td>";
  42. echo "</tr>";
  43. }
  44. if($row['plec'] == 'Mężczyzna')
  45. {
  46. echo "<tr>";
  47. echo "<td height=\"30px\">" . $row['id'] . "</td>" ;
  48. echo "<td>" . $row['imie'] . "</td>" ;
  49. echo "<td>" . $row['nazw'] . "</td>";
  50. echo "<td>" . $row['plec'] . "</td>";
  51. echo "<td>- - - -</td>";
  52. echo "<td>" . $row['mail'] . "</td>";
  53. echo "<td>" . $row['kod'] . "</td>";
  54. echo "</tr>";
  55. }
  56. }
  57. // ---------------------------------
  58. }
  59. echo "</table>";
  60. $lStron = ceil($r_max/$wns);
  61. for ($i=0;$i<$pNum;$i++)
  62. echo '<a href="strona.php?s='.$i.'">'.($i+1).'</a>';
  63.  
  64. }
  65.  
  66. ?>


Z gory serdeczne dzięki smile.gif
modern-web
Powinieneś policzyć ilość elementów (zwróconych rekordów), podzielić to przez ilość rekordów na stronę, wynik zaokrąglić do góry (to byłaby ilość stron) i ustawić id początkowe + limit na stronę i przy każdej zmianie strony przeskakiwać o limit na stronę.
Jakie masz problemy, bo nie mam zamiaru analizować całego tego kodu smile.gif
superozy
mam taki efekt:

http://daniel-zut.hitowy.pl/lab4/baza2.php

nie pokazuja sie tez strony kolejne na dole.

ogólnie chyba wina odpowiedniego zapętlenia. bo próbowałem roznie ale nic
modern-web
Rozumiem, że problemem są błędy Resource id #3 i Resource id #5, zgadza się?
Próbowałeś znaleźć odpowiedź w sieci wink.gif Taki temat był już poruszany kilka razy.

http://forum.php.pl/index.php?showtopic=78795

http://www.webdeveloper.com/forum/showthre...4-Resource-id-5
superozy
nie nie wink.gif z tym problemu nie mam, wypisywałem to tylko jako pomoc smile.gif

problem w tym ze nie wiem jak zapętlić zeby pokazywały sie odpowiednie rekordy a później strony na dole które zostały po porcjowane.

korzystałem tez z tego:
http://webmade.org/kursy-online/porcjowani...-kurs-mysql.php
modern-web
To już Ci wszystko opisałem, id strony przekazujesz w tablicy _GET, losujesz na stronę tyle ile masz jako limit, także podsumowując: (strona*limit)+1 to twój pierwszy element na stronie, a (strona*limit)+1+limit to Twój ostatni rekord na tej stronie. Na dobrą sprawę wszystko możesz załatwić LIMIT-em w zapytaniu SQL (choć to kiepska praktyka tongue.gif ale do takiej nauki w sam raz), strony na dole wyświetlasz od 1 do x i tyle... Czego jeszcze nie wiesz? Tam żadnej pętli dodatkowo nie potrzebujesz, zwykłe zapytanie + wyświetlenie wyników (to w pętli rzecz jasna smile.gif).

@edit zakładam że numerację id rekordów zaczynasz od 0; jeżeli od 1 to "+1" jest zbędne w pierwszym jak i ostatnim elemencie.
superozy
hmmm rzeczywiscie działa smile.gif na 1 pętli:

  1. </tr>
  2. ";
  3.  
  4. while($row = mysql_fetch_array($zapytanie))
  5. {
  6.  
  7. // ---------------------------------
  8. if($row['plec'] == 'Kobieta')


to teraz pogłówkuję nad wypisywaniem stron na dole wink.gif
Mysle ze to bedzie problem na reszte wieczora tongue.gif
dzieki za pomoc.
modern-web
Do usług smile.gif
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.