Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Stronnicowanie
Forum PHP.pl > Forum > Przedszkole
svmon
Witam.
Kolejnym zadaniem jakie sobie postawiłem to stronnicowanie.
Mam taki skrypt:
  1. <?php
  2. require_once("connect_db.inc");
  3. $start = $_GET['start'];
  4. $nastronie = 4;
  5. $wykonaj=mysql_query("SELECT * FROM nowosci");
  6. $znaleziono=mysql_num_rows($wykonaj);
  7. if($znaleziono>$nastronie) {
  8. print '<center>';
  9. for($i=0; $i<ceil($znaleziono/$nastronie); $i++)
  10. print '<a href="index.php?start='.($i*$nastronie).'">'.($i+1).'</a> | ';
  11. }
  12. print '</center>';
  13. $query = "select * from nowosci order by id_nowosci desc limit ".($start).",".$nastronie."";
  14. $result = mysql_query($query);
  15. while($rekord = mysql_fetch_array($result))
  16. {
  17. $tekst .= '<h1><a href="news.php?id='.$rekord[id_nowosci].'">'.$rekord[temat_nowosci].'</a></h1><P>Opublikowano w dniu '.$rekord[data_nowosci].'</P>
  18. <h2>'.$rekord[streszczenie_nowosci].'</h2><A HREF="news.php?id='.$rekord[id_nowosci].'">czytaj więcej...</A><HR size="1">';
  19. }
  20. echo $tekst;
  21. ?>

Błąd jest następujący:
  1. <?php
  2. Warning: Division by zero in D:httpdindex.php on line 53
  3. Something is wrong in your syntax obok '' w linii 1
  4. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:httpdindex.php[b] [/b]on line 60 [b]
  5. [/b]
  6. ?>

Gdzie jest błąd?
Co do poprawy?

Dzięki za pomoc smile.gif
.radex
pierwszy: dzielenie przez zero. Jeśli dzielisz przez jakąś zmienną i nie wiesz, czy ona nie jest równa zeru rób tak:

Kod
$iloraz = $dzielna / ( $dzielnik > 0 ? $dzielnik : 1 );


drugi: Ja w numeracji nie widzę linii 53. Pokaż resztę kodu
trzeci: spowodowany drugim.
svmon
Kod:
  1. <?php
  2. require_once("connect_db.inc");
  3. $start = $_GET['start'];
  4. $nastronie = 4;
  5. $wykonaj=mysql_query("SELECT * FROM nowosci");
  6. $znaleziono=mysql_num_rows($wykonaj);
  7. if($znaleziono>$nastronie) {
  8. print '<center>';
  9. for($i=0; $i<ceil($znaleziono/$nastronie); $i++)
  10. print '<a href="index.php?start='.($i*$nastronie).'">'.($i+1).'</a> | ';
  11. }
  12. print '</center>';
  13. $query = "select * from nowosci order by id_nowosci desc limit ".($start).",".$nastronie."";
  14. $result = mysql_query($query);
  15. while($rekord = mysql_fetch_array($result))
  16. {
  17. $tekst .= '<h1><a href="news.php?id='.$rekord[id_nowosci].'">'.$rekord[temat_nowosci].'</a></h1><P>Opublikowano w dniu '.$rekord[data_nowosci].'</P>
  18. <h2>'.$rekord[streszczenie_nowosci].'</h2><A HREF="news.php?id='.$rekord[id_nowosci].'">czytaj więcej...</A><HR size="1">';
  19. }
  20. echo $tekst;
  21. ?>

Treść błędu:
  1. Something is wrong in your syntax obok '4' w linii 1
  2. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\WebServ\httpd\test.php on line 16

Co do dzielenia przez 0, to mam w zmiennej nastronie przypisane 4

Pozdrawiam.
.radex
Nie jestem pewien co, ale na pewno coś zrobiłeś źle z użyciem LIMIT (".($start).",".$nastronie."";), skoro pokazuje ci się w błędzie liczba.

Wpisz echo $query;
svmon
Co jest źle:
  1. Something is wrong in your syntax obok '4' w linii 1select * from nowosci order by id_nowosci desc limit ,4

Polecenie mysql nie 'widzi' ".($start).".
Czyli coź mam źle na początku..., tylko co...

Edit:
Nie wiem, jak ale nagle zaczęło działać.
radex_p: Dzięki za pomoc.
marcio
Moze tak:
  1. <?php
  2. $query = ("select * from nowosci order by id_nowosci desc limit ".$start*$nastronie.",".$nastronie);
  3. ?>


Po 2 index(nazwe) tablicy daje sie w ''

P.S jesli nie dasz zapytania sql tak jak ja mam to ci bedzie zkle stronnicowac nie bedzie wiedziec od ktorego rekordu zaczac na nastepnej stronie ale moge sie mylic
svmon
Za bardzo się pośpieszyłem, jeśli temat ten zostanie niezauważony to ten usune i założe jeszcze raz...
Owszem stronnicowanie działa, ale tylko jeśli kliknie się w numer strony. Na początku jest wyświetlany błąd:
  1. Something is wrong in your syntax obok '4' w linii 1
  2. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\WebServ\httpd\test.php on line 16

marcio: zgadza się, nie wie od którego momentu zacząć, jeśli już przejde do numeracji wyświetla prawidłowo.
Co do tego co napisałeś wcześniej nie wyświetla błędów, lecz po przejściu na inną strone newsy znikają ( jest pusta strona ).
marcio
Sproboj zrobic tak jak ci napisalem

Po 2 nie tak
  1. <?php
  2. while($rekord = mysql_fetch_array($result))
  3. {
  4. $tekst .= '<h1><a href="news.php?id='.$rekord[id_nowosci].'">'.$rekord[temat_nowosci].'</a></h1><P>Opublikowano w dniu '.$rekord[data_nowosci].'</P>
  5. <h2>'.$rekord[streszczenie_nowosci].'</h2><A HREF="news.php?id='.$rekord[id_nowosci].'">czytaj więcej...</A><HR size="1">';
  6. }
  7. ?>

A tak
  1. <?php
  2. while($rekord = mysql_fetch_array($result))
  3. {
  4. $tekst .= '<h1><a href="news.php?id='.$rekord['id_nowosci'].'">'.$rekord['temat_nowosci'].'</a></h1><P>Opublikowano w dniu '.$rekord['data_nowosci'].'</P>
  5. <h2>'.$rekord['streszczenie_nowosci'].'</h2><A HREF="news.php?id='.$rekord['id_nowosci'].'">czytaj więcej...</A><HR size="1">';
  6. }
  7. ?>


PO 3 to
  1. <?php
  2. if($znaleziono>$nastronie) {
  3. print '<center>';
  4. for($i=0; $i<ceil($znaleziono/$nastronie); $i++)
  5. print '<a href="index.php?start='.($i*$nastronie).'">'.($i+1).'</a> | ';
  6. }
  7. print '</center>';
  8. ?>

BYm zmienil na to:
  1. <?php
  2. if($start < $znaleziono) {
  3. print '<center>';
  4. for($i = 0; $i < ceil($znaleziono/$nastronie); $i++)
  5. print '<a href="index.php?start='.$i.'">'.$i.'</a> | ';
  6. }
  7. print '</center>';
  8. ?>

Tak na moje oko
svmon
Teraz działa całkowicie.
Wielkie dzięki za tak szybką pomoc 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.