Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Mysql + PHP]Porcjowanie wyników zapytania
-armen-
post
Post #1





Goście







Witam.

Starałem się znaleźć coś sensownego dla lajka o porcjowaniu wyników, ale niestety nic takiego nie mogłem znaleźć.

Chciałbym aby generowane były automatycznie strony z wyświetlonymi danymi po 10 na każdej, oraz aby linki do nich były w postaci numerycznej na głównej stronie.

Bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
slash^
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


Bylo wiele razy, widocznei slabo szukales.

sprawdz: stronicowanie
Go to the top of the page
+Quote Post
-armen-
post
Post #3





Goście







ale te wszystkie tutki są dla kurde mega pro koderów albo nie działają (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

ja chciałbym coś prościutkiego

dało by rade zrobić tak...

mam główna stronę, która wyświetla te dane (mysql_query(blabla LIMIT 0, 10)
i później dało by się funkcje if ,która by sprawdzała czy rekordów jest więcej niż 10 mysql_num_rows z tego co pamiętam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
następnie jeżeli by było więcej (i tu niewiem zabardzo jak to wykonać)
to tworzy następną stronę np. wysw.php?page=2 gdzie zapytanie będzię (mysql_query(blabla LIMIT 10, 20)
oraz również sprawdza tylko teraz czy rekordów będzie 2x więcej... jeżeli tak to next... i tak w kółko...

hmm? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
slash^
post
Post #4





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


  1. <?php
  2. $ile = mysql_num_rows($sql);; //ilosc wszystkich rekordow (nie stron !!)
  3.  
  4. $na_strone = 10; //tu podajesz ile rekordow na stronie max.
  5.  
  6. $stron = ceil ($ile / $na_strone);  //tutaj masz ilosc stron zaokraglanych w gore
  7.  
  8. for ($i = 1; $i < $stron; $i++) echo '<a href="?strona='.($i+1).'">strona '.($i+1).'</a>'; //tak wyswietlasz numery;
  9.  
  10. $sql = 'SELECT * FROM tabela LIMIT '.(((int)$_GET['strona']-1)*$na_strone).','.((int)$_GET['strona']*$na_strone) // tak odczytujesz ktore dane wczytac z linku
  11. ?>



pisane z palca, wiec moga byc drobne bledy.
Go to the top of the page
+Quote Post
-armen-
post
Post #5





Goście







no to robie
  1. <?php
  2. //wys
  3.  
  4. $sql = 'SELECT * FROM ogloszenia LIMIT '.(((int)$_GET['strona']-1)*$na_strone).','.((int)$_GET['strona']*$na_strone); // tak odczytujesz ktore dane wczytac z linku
  5.  
  6. $ile = mysql_num_rows($sql); //ilosc wszystkich rekordow (nie stron !!)
  7.  
  8. $na_strone = 10; //tu podajesz ile rekordow na stronie max.
  9.  
  10. $stron = ceil ($ile / $na_strone);  //tutaj masz ilosc stron zaokraglanych w gore
  11.  
  12. for ($i = 1; $i < $stron; $i++) echo '<a href="?podglad1.php?='.($i+1).'">strona '.($i+1).'</a>'; //tak wyswietlasz numery;
  13.  
  14.  
  15. ?>


i mam Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\maciek\podglad1.php on line 28 (ta z $ile..) (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
slash^
post
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


przede wszystkim brakuje opcji mysql_query.
Poza tym dobrze by bylo gdybys dal przed tym zapytaniem:
if (!isset($_GET['strona']) $strona = 1; else $strona = (int)$_GET['strona'];

i wstaw zmienna $strona zamiast $_GET w zapytaniu.

ps. wlasnie zauwazylem, to zapytanie (z warunkiem limit) powinno byc PO wykonaniu zapytania zliczajacego ilosc rekordow, gdyz inaczej dupa ;p (tak wiec musisz miec 2 zapytania).

Ten post edytował slash^ 29.12.2007, 19:58:06
Go to the top of the page
+Quote Post
-armen-
post
Post #7





Goście







niewiem czy dobrze zrozumiałem... zrobiłem tak...
  1. <?php
  2. //wys
  3. $ile = mysql_num_rows($sql); //ilosc wszystkich rekordow (nie stron !!)
  4. $na_strone = 10; //tu podajesz ile rekordow na stronie max.
  5. $stron = ceil ($ile / $na_strone);  //tutaj masz ilosc stron zaokraglanych w gore
  6. for ($i = 1; $i < $stron; $i++) echo '<a href="?wysw1.php?='.($i+1).'">strona '.($i+1).'</a>'; //tak wyswietlasz numery;
  7. if (!isset($_GET['strona']) $strona = 1; else $strona = (int)$_GET['strona'];
  8. $sql = mysql_query("SELECT * FROM agencja LIMIT ".(((int)$_GET['strona']-1)*$na_strone).','.((int)$_GET['strona']*$na_strone)); // tak odczytujesz ktore dane wczytac z linku
  9. ?>


i mam Parse error: syntax error, unexpected T_VARIABLE in c:\usr\krasnal\www\maciek\wysw1.php on line 7
Go to the top of the page
+Quote Post
slash^
post
Post #8





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


Ojej pisane z palca i zabraklo jednego nawiasu zamykajacego...

  1. <?php
  2. //wys
  3. $ile = mysql_num_rows($sql); //ilosc wszystkich rekordow (nie stron !!)
  4. $na_strone = 10; //tu podajesz ile rekordow na stronie max.
  5. $stron = ceil ($ile / $na_strone);  //tutaj masz ilosc stron zaokraglanych w gore
  6. for ($i = 1; $i < $stron; $i++) echo '<a href="?wysw1.php?='.($i+1).'">strona '.($i+1).'</a>'; //tak wyswietlasz numery;
  7. if (!isset($_GET['strona'])) $strona = 1; else $strona = (int)$_GET['strona'];
  8. $sql = mysql_query("SELECT * FROM agencja LIMIT ".(($strona-1)*$na_strone).','.$na_strone; // tak odczytujesz ktore dane wczytac z linku
  9. ?>


mam nadzieje ze teraz jest git
edit. wczesniej drobny blad ;p

Ten post edytował slash^ 29.12.2007, 20:12:53
Go to the top of the page
+Quote Post
-armen-
post
Post #9





Goście







  1. <?php
  2. //wys
  3. $ile = mysql_num_rows($sql); //ilosc wszystkich rekordow (nie stron !!)
  4. $na_strone = 10; //tu podajesz ile rekordow na stronie max.
  5. $stron = ceil ($ile / $na_strone);  //tutaj masz ilosc stron zaokraglanych w gore
  6. for ($i = 1; $i < $stron; $i++) echo '<a href="?wysw.php?='.($i+1).'">strona '.($i+1).'</a>'; //tak wyswietlasz numery;
  7. if (!isset($_GET['strona'])) $strona = 1; else $strona = (int)$_GET['strona'];
  8. $sql = mysql_query("SELECT * FROM agencja LIMIT ".(($strona-1)*$na_strone).','.($strona*$na_strone)); // tak odczytujesz ktore dane wczytac z linku
  9. ?>


wywala
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\maciek\podglad1.php on line 3

zapewne wiesz o tym ale jako lajek podzielę się myślą, że coś jest z tym $sql ,że nie może odczytać liczby wierszy...
Go to the top of the page
+Quote Post
slash^
post
Post #10





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


A dales na poczatku dodatkowe zapytanie, ktore zlicza ilosc wszystkich wierszy?

w twoim przypadku PRAWDOPODOBNIE powinno byc
  1. <?php
  2. $sql = mysql_query('SELECT * FROM agencja');
  3. ?>
Go to the top of the page
+Quote Post
-armen-
post
Post #11





Goście







a zapomniałem przepraszam..

no teraz już nie ma błędu.. ale nie ma także danych z rekordów... pusta strona ?:/
Go to the top of the page
+Quote Post
slash^
post
Post #12





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


Tylko mi nie mow ze to co jest powyzej to caly skrypt do wyswietlania, gdyz nie ma tam samej opcji wyswietlania czegokolwiek...

np. mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
-armen-
post
Post #13





Goście







no dałem
  1. <?php
  2. if ($result=mysql_fetch_array($sql)) 
  3. {
  4. echo"<tr><td width='30%'><em>Imie</td><td></em> ".$resultat['Imie']."</tr></td>";
  5. }
  6. ?>


ale wyswietla mi tylko jeden wiersz, pierwszy
Go to the top of the page
+Quote Post
slash^
post
Post #14





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


Zmien IF na WHILE - jest to ogromna roznica w tym przypadku.

  1. <?php
  2. while ($result = mysql_fetch_assoc($sql))
  3. echo"<tr><td width='30%'><em>Imie</td><td></em> ".$result['Imie']."</tr></td>";
  4. ?>


Ten post edytował slash^ 29.12.2007, 20:37:28
Go to the top of the page
+Quote Post
-armen-
post
Post #15





Goście







no ładnie chodzi, wyświetla te 10 od razu, jest link do strony2 tylko kurcze jak ja klikam to nic sie nie dzieje oprócz tego ,że zmienia się adres strony... aj już tak blisko (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
slash^
post
Post #16





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


zmien ponizsza linijke w skrypcie na:
  1. <?php
  2. for ($i = 1; $i < $stron; $i++) echo ' <a href="?wysw.php?strona='.($i+1).'">strona '.($i+1).'</a> '; //tak wyswietlasz numery;
  3. ?>


... tak to jest jak sie pisze z palca niestety ;[
Go to the top of the page
+Quote Post
-armen-
post
Post #17





Goście







kurcze nic nie pomaga ;(;( już tam sam coś kombinowałem ale nic nie pomagało (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
slash^
post
Post #18





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


Pokaz CALOSC jak teraz wyglada.
Go to the top of the page
+Quote Post
-armen-
post
Post #19





Goście







proszę...
  1. <?php
  2. $polacz=laczenie z baza
  3. $sql = mysql_query('SELECT * FROM agencja');
  4.  
  5. //wys
  6. $ile = mysql_num_rows($sql); //ilosc wszystkich rekordow (nie stron !!)
  7. $na_strone = 10; //tu podajesz ile rekordow na stronie max.
  8. $stron = ceil ($ile / $na_strone);  //tutaj masz ilosc stron zaokraglanych w gore
  9.  
  10. for ($i = 1; $i < $stron; $i++) echo ' <a href="?=strona'.($i+1).'">strona '.($i+1).'</a> '; //tak wyswietlasz numery;
  11. if (!isset($_GET['strona'])) $strona = 1; else $strona = (int)$_GET['strona'];
  12. $sql = mysql_query("SELECT * FROM agencja LIMIT ".(($strona-1)*$na_strone).','.($strona*$na_strone)); // tak odczytujesz 
  13.  
  14. while ($resultat=mysql_fetch_array($sql)) 
  15. {
  16. echo"<tr><td width='50%'><em>Imie</td><td></em> ".$resultat['Imie']."</tr></td>";
  17. }
  18. ?>
Go to the top of the page
+Quote Post
slash^
post
Post #20





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


Masz blad w linii 10. przy tworzeniu linka.
Nie =strona tylko strona=

..oraz w linii 12., powinno byc:
  1. <?php
  2. $sql = mysql_query("SELECT * FROM agencja LIMIT ".(($strona-1)*$na_strone).','.$na_strone); // tak odczytujesz
  3. ?>


Ten post edytował slash^ 29.12.2007, 21:02:02
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 6.10.2025 - 04:16