Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> własne stronnicowanie - ale problem :/, mimo że własne to i tak problem :/
colinQ
post 30.08.2007, 12:30:09
Post #1





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Potrzebowałem stronnicowania, napisałem już temat i ludzie dali mo swoje kody których nie mogłem rozpracować.
Więc przemogłem się i napisałem coś swojego winksmiley.jpg Prawie działa, prawie sadsmiley02.gif

wiec mam w bazie takie rekordy
  1. ziombel
  2. ogloszenie 1
  3. ogloszenie 2
  4. ogloszenie 3
  5. ogloszenie 4


Mam sobie taki kod(trochę nie profesjonalnie ale może wy go zrozumiecie worriedsmiley.gif )
  1. <?php
  2. // POŁĄCZENIE Z BAZĄ
  3. $sql_conn = mysql_connect('localhost', 'xxx', 'xxx');
  4. $baza = mysql_select_db("ogloszenia");
  5.  
  6. $select = mysql_query("select * from ogloszenia");
  7. $ile = mysql_num_rows($select);
  8.  
  9. echo 'W bazie mamy już '.$ile.' ogłoszeń ;)<br><br>';
  10.  
  11. // konfiguracja stronnicowania
  12.  
  13. $wszystkie = $ile;
  14. $na_stronie = 2;
  15. $stron = round($wszystkie/$na_stronie);
  16. $od = $stron;
  17.  
  18. for($b=1; $b<=$wszystkie; $b++) {
  19. $rekord = mysql_fetch_assoc($select);
  20. $tablica[$b] = $rekord['tytul'];
  21. }
  22.  
  23. if($wszystkie>$na_stronie) {
  24.  
  25. if(isset($_GET['page']) && $_GET['page'] !== '1') {
  26.  
  27. for($c=1; $c<=$na_stronie; $c++) {
  28. $wynik = $_GET['page'] + $c;
  29. $znajdz = mysql_query("select * from ogloszenia where tytul='$tablica[$wynik]'");
  30. $fetch = mysql_fetch_assoc($znajdz);
  31. echo $fetch['tytul'].'<br>';
  32.  
  33. }
  34.  
  35. } else {
  36.  
  37. for($d=1; $d<=$na_stronie; $d++) {
  38. echo $tablica[$d].'<br>'; 
  39.  
  40. }
  41.  
  42. }
  43.  
  44. echo '<br>';
  45.  
  46. for($a=1; $a<=$od; $a++)
  47. echo '[<a href=index.php?page='.$a.'>'.$a.'</a>]';
  48. }
  49.  
  50.  
  51. ?>


i wsywietla mi:

strona 1

W bazie mamy już 5 ogłoszeń winksmiley.jpg

ziombel
ogloszenie 1

[1][2][3]

strona 2

W bazie mamy już 5 ogłoszeń winksmiley.jpg

ogloszenie 2
ogloszenie 3

[1][2][3]

strona 3

W bazie mamy już 5 ogłoszeń winksmiley.jpg

ogloszenie 3
ogloszenie 4

[1][2][3]


Wyświetla mi 2 razy 3 a na 3 stronie powinien być tylko 1 rekord


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
qqrq
post 30.08.2007, 13:17:42
Post #2





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


Tak na pierwszy rzut oka:

  1. <?php
  2. $stron = round($wszystkie/$na_stronie);
  3. ?>


Poczytaj sobie http://www.php.net/manual/pl/function.round.php - funkcja round chyba jednak nie działa dokładnie tak jakbyś chciał... Zamiast tego proponuję chociażby:

  1. <?php
  2. $stron = ceil($wszystkie/$na_stronie);
  3. ?>


albo

  1. <?php
  2. $stron = (int)($wszystkie/$na_stronie) + 1;
  3. ?>


albo coś podobnego...

Pozdrawiam!!

Ten post edytował qqrq 30.08.2007, 13:20:39


--------------------
Go to the top of the page
+Quote Post
colinQ
post 30.08.2007, 13:31:48
Post #3





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Dlaczego??Ja uważa że ona dobrze działa.Bo zaokrągla liczbę po przecinku czyli jeżeli podzielić 5/2 wyświetli 3.Chyba jednak nie tu błąd... :smutny:Dlaczego??Ja uważa że ona dobrze działa.Bo zaokrągla liczbę po przecinku czyli jeżeli podzielić 5/2 wyświetli 3.Chyba jednak nie tu błąd... sadsmiley02.gif


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
qqrq
post 30.08.2007, 14:00:42
Post #4





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


OK, ale zmień sobie ilość pozycji na stronie np na 3, a ilość ogłoszeń np. na 10, wtedy round(10/3) = 3 (a powinno 4 strony wyświetlić.

Co do błedy, to już chyba wiem w czym problem. Zamiast

  1. <?php
  2. for($c=1; $c<=$na_stronie; $c++) {
  3. $wynik = $_GET['page'] + $c;
  4. $znajdz = mysql_query("select * from ogloszenia where tytul='$tablica[$wynik]'");
  5. $fetch = mysql_fetch_assoc($znajdz);
  6. echo $fetch['tytul'].'<br>';
  7.  
  8. }
  9. ?>


wpisz

  1. <?php
  2. for($c=1; $c<=$na_stronie; $c++) {
  3. $wynik = $na_stronie*($_GET['page']-1) + $c;
  4. if (isset($tablica[$wynik]))
  5.  {
  6. $znajdz = mysql_query("select * from ogloszenia where tytul='$tablica[$wynik]'");
  7. $fetch = mysql_fetch_assoc($znajdz);
  8. echo $fetch['tytul'].'<br>';
  9.  }
  10.  else
  11. break;
  12. }
  13. ?>


i podobnie w następnej pętli (chodzi o zastosowanie funkcji isset). Wogóle to strasznie dziwaczny ten twój skrypt...

Pozdrawiam!!


--------------------
Go to the top of the page
+Quote Post
colinQ
post 30.08.2007, 14:14:20
Post #5





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


Mistrzu, wielkie dzięki.

Nareszcie udało mi się z tym stronicowaniem winksmiley.jpg


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
bim2
post 30.08.2007, 16:50:15
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


TAK, ale mając np 20 rekordów na stronę, będziesz miał 20 zapytań do bazy danych ... Ja bym radził pokombinować jednak z czymś innym, albo użyć klasy nospora
Temat: Pager stronicowanie


--------------------
Go to the top of the page
+Quote Post
qqrq
post 30.08.2007, 19:44:24
Post #7





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


Nie no, pewnie. Pokombinuj jak to lepiej zrobić (jednym zapytaniem, jedną pentelką itd.)...


--------------------
Go to the top of the page
+Quote Post
colinQ
post 31.08.2007, 07:23:32
Post #8





Grupa: Zarejestrowani
Postów: 340
Pomógł: 2
Dołączył: 25.12.2006

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


A powiedzcie mi jeszcze jedno:KOD
  1. <script language=javascript> function otworz(nazwa){  oknoObrazki=window.open(nazwa, 'oknoObr', 'width=640,height=480')  oknoObrazki.focus() }</script><?$select = mysql_query(&#092;"select * from portfolio\"); $ile = mysql_num_rows($select); echo 'W bazie mamy już '.$ile.' ogłoszeń ;)<br><br>'; // konfiguracja stronnicowania $wszystkie = $ile; $na_stronie = 3; $stron = ceil($wszystkie/$na_stronie); $od = $stron; for($b=1; $b<=$wszystkie; $b++) { $rekord = mysql_fetch_assoc($select); $tablica[$b] = $rekord['klient']; } if($wszystkie>$na_stronie) { if(isset($_GET['strona']) && $_GET['strona'] !== '1') { for($c=1; $c<=$na_stronie; $c++) { $wynik = $na_stronie*($_GET['strona']-1) + $c; if (isset($tablica[$wynik])) { $znajdz = mysql_query(\"select * from portfolio where klient='$tablica[$wynik]'\"); $praca = mysql_fetch_assoc($znajdz);?><table width=\"400\" align=\"center\"><tbody><tr><td style=\"border: 1px solid rgb(221, 221, 221); padding: 5px; color: rgb(255, 102, 0); font-size: 10px;\" colspan=\"2\"><b><? echo $praca['klient']; ?></b></td></tr><tr valign=\"top\"><td style=\"padding: 5px; width: 150px;\"><center><img alt=\"\" src=\"prace/<? echo $praca['screen']; ?>\" width=130/></td><td style=\"padding: 5px; width: 250px; font-size: 10px; color: white;\"><? echo $praca['opis']; ?><br/><br/>Wykorzystane technologie: <? echo $praca['technologie']; ?><br><?if($praca['url'] !== &#092;"\")echo '<a href='.$praca['url'].'><font color=orange>online</font></a>';?></td></tr><tbody></table><? } else break; } } else { for($d=1; $d<=$na_stronie; $d++) { $znajdz2 = mysql_query(&#092;"select * from portfolio limit 0,2\"); $praca2 = mysql_fetch_assoc($znajdz2);if (!isset($tablica[$wynik])) {?><table width=\"400\" align=\"center\"><tbody><tr><td style=\"border: 1px solid rgb(221, 221, 221); padding: 5px; color: rgb(255, 102, 0); font-size: 10px;\" colspan=\"2\"><b><? echo $praca2['klient']; ?></b></td></tr><tr valign=\"top\"><td style=\"padding: 5px; width: 150px;\"><center><img alt=\"\" src=\"prace/<? echo $praca2['screen']; ?>\" width=130/></td><td style=\"padding: 5px; width: 250px; font-size: 10px; color: white;\"><? echo $praca2['opis']; ?><br/><br/>Wykorzystane technologie: <? echo $praca2['technologie']; ?><br><?if($praca2['url'] !== &#092;"\")echo '<a href='.$praca2['url'].'><font color=orange>online</font></a>';?></td></tr><tbody></table><? } else break; } } echo '<br>'; for($a=1; $a<=$od; $a++) echo '[<a href=index.php?page=portfolio&strona='.$a.'>'.$a.'</a>]'; }
Dlaczego 3 pierwsze rekordy to rekord 1Czyli że na 1 stronie wyświetla 3 razy rekord 1 a na 2 dobrze bo 2 ostatnie :/Gdzie mam błąd??A powiedzcie mi jeszcze jedno:KOD
  1. <script language=javascript> function otworz(nazwa){  oknoObrazki=window.open(nazwa, 'oknoObr', 'width=640,height=480')  oknoObrazki.focus() }</script><?$select = mysql_query(&#092;"select * from portfolio\"); $ile = mysql_num_rows($select); echo 'W bazie mamy już '.$ile.' ogłoszeń ;)<br><br>'; // konfiguracja stronnicowania $wszystkie = $ile; $na_stronie = 3; $stron = ceil($wszystkie/$na_stronie); $od = $stron; for($b=1; $b<=$wszystkie; $b++) { $rekord = mysql_fetch_assoc($select); $tablica[$b] = $rekord['klient']; } if($wszystkie>$na_stronie) { if(isset($_GET['strona']) && $_GET['strona'] !== '1') { for($c=1; $c<=$na_stronie; $c++) { $wynik = $na_stronie*($_GET['strona']-1) + $c; if (isset($tablica[$wynik])) { $znajdz = mysql_query(\"select * from portfolio where klient='$tablica[$wynik]'\"); $praca = mysql_fetch_assoc($znajdz);?><table width=\"400\" align=\"center\"><tbody><tr><td style=\"border: 1px solid rgb(221, 221, 221); padding: 5px; color: rgb(255, 102, 0); font-size: 10px;\" colspan=\"2\"><b><? echo $praca['klient']; ?></b></td></tr><tr valign=\"top\"><td style=\"padding: 5px; width: 150px;\"><center><img alt=\"\" src=\"prace/<? echo $praca['screen']; ?>\" width=130/></td><td style=\"padding: 5px; width: 250px; font-size: 10px; color: white;\"><? echo $praca['opis']; ?><br/><br/>Wykorzystane technologie: <? echo $praca['technologie']; ?><br><?if($praca['url'] !== &#092;"\")echo '<a href='.$praca['url'].'><font color=orange>online</font></a>';?></td></tr><tbody></table><? } else break; } } else { for($d=1; $d<=$na_stronie; $d++) { $znajdz2 = mysql_query(&#092;"select * from portfolio limit 0,2\"); $praca2 = mysql_fetch_assoc($znajdz2);if (!isset($tablica[$wynik])) {?><table width=\"400\" align=\"center\"><tbody><tr><td style=\"border: 1px solid rgb(221, 221, 221); padding: 5px; color: rgb(255, 102, 0); font-size: 10px;\" colspan=\"2\"><b><? echo $praca2['klient']; ?></b></td></tr><tr valign=\"top\"><td style=\"padding: 5px; width: 150px;\"><center><img alt=\"\" src=\"prace/<? echo $praca2['screen']; ?>\" width=130/></td><td style=\"padding: 5px; width: 250px; font-size: 10px; color: white;\"><? echo $praca2['opis']; ?><br/><br/>Wykorzystane technologie: <? echo $praca2['technologie']; ?><br><?if($praca2['url'] !== &#092;"\")echo '<a href='.$praca2['url'].'><font color=orange>online</font></a>';?></td></tr><tbody></table><? } else break; } } echo '<br>'; for($a=1; $a<=$od; $a++) echo '[<a href=index.php?page=portfolio&strona='.$a.'>'.$a.'</a>]'; }
Dlaczego 3 pierwsze rekordy to rekord 1Czyli że na 1 stronie wyświetla 3 razy rekord 1 a na 2 dobrze bo 2 ostatnie :/Gdzie mam błąd??


--------------------
-> Kanał YouTube: http://www.youtube.com/user/screencup
-> Screencup - podcast/screencast, recenzja Makowych aplikacji
-> www.screencup.pl - witryna internetowa podcastu
Go to the top of the page
+Quote Post
k@mil
post 31.08.2007, 07:40:35
Post #9





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 19.08.2007
Skąd: Glinnik

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


  1. <?php
  2. // polaczenia z baza
  3. $sql_conn = mysql_connect('localhost', 'xxx', 'xxx');
  4. $baza = mysql_select_db("ogloszenia");
  5.  
  6. $select = mysql_query("select * from ogloszenia");
  7. $ile = mysql_num_rows($select);
  8.  
  9. echo 'W bazie mamy już '.$ile.' ogłoszeń ;)<br><br>';
  10.  
  11. // konfiguracja stronnicowania
  12. $wszystkie = $ile;
  13. $na_stronie = 2;
  14. $stron = ceil($wszystkie/$na_stronie);
  15. $od = $stron;
  16. $strona=$_GET['strona'];
  17. $pierwszy=($strona-1)*$na_stronie;
  18.  
  19. //pobranie ogłoszen
  20. $znajdz = mysql_query("SELECT * FROM ogloszenia ORDER BY id LIMIT $pierwszy, $na_stronie");
  21. //wyswietlenie ogloszen na dana strone
  22. while ($fetch = mysql_fetch_assoc($znajdz)) {
  23.  echo $fetch['tytul'].'<br>';
  24. }
  25. //stronicowanie
  26. for ($i=1, $i<=$stron, $i++) {
  27. echo "[<a href='index.php?page=$i'>$i</a>]";
  28. }
  29. ?>


PS. nigdy nie mam czasu na testowanie wiec moga byc bledy. sprawdz dobrze
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: 25.04.2024 - 10:45