Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Porcjowanie wyników i baza danych, Porcjowanie wyników i baza danych
superozy
post 22.10.2012, 21:10:13
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.10.2012

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


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

Ten post edytował superozy 22.10.2012, 21:14:03
Go to the top of the page
+Quote Post
modern-web
post 22.10.2012, 21:12:57
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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

Ten post edytował modern-web 22.10.2012, 21:13:30


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
superozy
post 22.10.2012, 21:16:34
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.10.2012

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


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

Ten post edytował superozy 22.10.2012, 21:18:16
Go to the top of the page
+Quote Post
modern-web
post 22.10.2012, 21:20:33
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
superozy
post 22.10.2012, 21:24:42
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.10.2012

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


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

Ten post edytował superozy 22.10.2012, 21:26:42
Go to the top of the page
+Quote Post
modern-web
post 22.10.2012, 21:31:57
Post #6





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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.

Ten post edytował modern-web 22.10.2012, 21:37:40


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
superozy
post 22.10.2012, 21:37:22
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.10.2012

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


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.
Go to the top of the page
+Quote Post
modern-web
post 22.10.2012, 21:52:46
Post #8





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Do usług smile.gif


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 03:40