Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Segregowanie danych z SQLA
Forum PHP.pl > Forum > PHP
wozniak
Witam, jak zrobic automatyczna segregacje danych z sqla?Chodzi mi o cos takiego ze sprawdza ze jest np. 30 wpisów a jak mam ustawione np. 5 na strone to on jakos przelicza i pokazuje to na 6 stronach
Moj skrypt:
Wyswietl.php
  1. <?php
  2.  
  3. $zapytanie = sql(&#092;"SELECT * FROM $baz\"); 
  4. while ($rekord = mysql_fetch_array($zapytanie)) 
  5. { 
  6. $id = $rekord['id']; 
  7. $imie = $rekord['imie'];
  8. $data  = $rekord['data'];
  9. $godz = $rekord['godz']; 
  10. print(&#092;"$id $imie $data $godz <BR>\");
  11.  
  12. ?>

polaczenie.php
  1. <?php 
  2.  
  3.  
  4. function connection() { 
  5. include(&#092;"konfiguracja.php\");  
  6. global $conn; 
  7. if($conn) { 
  8. return $conn; 
  9. } else { 
  10. $conn = mysql_connect(&#092;"$HOST_BAZY\", \"$LOGIN_BAZY\", \"$HASLO_BAZY\"); 
  11. if (!$conn || !mysql_select_db(&#092;"$NAZWA_BAZY\", $conn)) { 
  12. return 0; 
  13. } else { 
  14. return $conn; 
  15. } 
  16. }  
  17. } 
  18.  
  19. function sql($query) { 
  20. if(!($conn = connection())) { 
  21. return 0; 
  22. } else { 
  23. $result = mysql_query($query, $conn); 
  24. if(!$result) { 
  25. print('<div style=\"font: 10pt Verdana; color: white;\">Wystąpił
  26.  błąd<br></div>'); 
  27. } else { 
  28. return $result; 
  29. } 
  30. } 
  31. } 
  32. ?>
NuLL
Co w tym trudnego ?

Olbiczasz ile rekodow masz w bazie - dzilisz przez ilosc wpisow ktore chcesz miec na stronie, genrujesz link doi poszczegolnych stron i modyfikujesz LIMIT zapytania wedle numeru strony.
wozniak
No tak ale ja chce zeby to sie działo automatycznie.Bo te wpsiy beda caly czas dodawane.To ja bym musial cały czas je liczyc i dzielic;(
NuLL
To co podałem to jest zarys algorytmu - niczego nie musiz dzielić ręcznie. Napisz coś sam - jak napiszesz to pomoge zrobić aby działo, jak należy.
Kuziu
  1. <?php
  2.  
  3. $perPage = 5; // ile ma sie pokazywać na 1 stronie
  4.  
  5. $sql = 'SELECT COUNT(id) as ilosc FROM $baz';
  6. $row = mysql_query($sql) or die(mysql_error());
  7. $ilosc = $row['ilosc'];
  8.  
  9. $page = ($_GET['page'] ? $_GET['page'] : 1); // numer strony z adresu
  10. $page--;
  11.  
  12. $from = $page*$perPage;
  13.  
  14. $zapytanie = sql(&#092;"SELECT * FROM $baz LIMIT $from,$perPage\"); 
  15. while ($rekord = mysql_fetch_array($zapytanie)) 
  16. { 
  17. $id = $rekord['id']; 
  18. $imie = $rekord['imie'];
  19. $data = $rekord['data'];
  20. $godz = $rekord['godz']; 
  21. echo(&#092;"$id $imie $data $godz <br />\");
  22. }
  23. echo('Przejdz do strony nr:');
  24. for($i=1;$i<($ilosc/$perPage);$i++){
  25.  echo('<a href=\"wyswietl.php?page=' . $i . '\">' . $i . '</a>');
  26. }
  27.  
  28. ?>
wozniak
Wyskakuje mi napis "Nie wybrano żadnej bazy danych"
  1. <?
  2. include(&#092;"konfiguracja.php\");
  3. include(&#092;"polaczenie.php\");
  4.  
  5. $perPage = 5; // ile ma sie pokazywać na 1 stronie
  6.  
  7. $sql = 'SELECT COUNT(id) as ilosc FROM mediator';
  8. $row = mysql_query($sql) or die(mysql_error());
  9. $ilosc = $row['ilosc'];
  10.  
  11. $page = ($_GET['page'] ? $_GET['page'] : 1); // numer strony z adresu
  12. $page--;
  13.  
  14. $from = $page*$perPage;
  15.  
  16. $zapytanie = sql(&#092;"SELECT * FROM mediator LIMIT $from,$perPage\"); 
  17. while ($rekord = mysql_fetch_array($zapytanie)) 
  18. { 
  19. $id = $rekord['id']; 
  20. $imie = $rekord['imie'];
  21. $data = $rekord['data'];
  22. $godz = $rekord['godz']; 
  23. echo(&#092;"$id $imie $data $godz <br />\");
  24. }
  25. echo('Przejdz do strony nr:');
  26. for($i=1;$i<($ilosc/$perPage);$i++){
  27. echo('<a href=\"pokaz.php?page=' . $i . '\">' . $i . '</a>');
  28. }
  29. ?>
Kuziu
No to teraz to już masz problem w pliku polaczenie.php ... może wywołaj funckje connection() questionmark.gif

a tak btw. po co 2 razy includujesz plik konfiguracja.php

raz tutaj w kodzie a raz w polaczenie.php
Vertical
Cytat
Wyskakuje mi napis "Nie wybrano żadnej bazy danych"

mysql_select_db()
A co do obliczania na ile stron ma się wyświetlić:
ceil()
Dzielisz liczbę na x równych części i używasz ceil() żeby zaokrąglił w górę
wozniak
Jak dałem samo to:
  1. <?
  2. include(&#092;"polaczenie.php\");
  3.  
  4.  
  5. $zapytanie = sql(&#092;"SELECT * FROM mediator\"); 
  6. while ($rekord = mysql_fetch_array($zapytanie)) 
  7. { 
  8. $id = $rekord['id']; 
  9. $imie = $rekord['imie'];
  10. $data = $rekord['data'];
  11. $godz = $rekord['godz']; 
  12. echo(&#092;"$id $imie $data $godz <br />\");
  13. }
  14. ?>
To działa
A jak dałem wszystko:
  1. <?
  2. include(&#092;"polaczenie.php\");
  3. $perPage = 5; // ile ma sie pokazywać na 1 stronie
  4.  
  5. $sql = 'SELECT COUNT(id) as ilosc FROM mediator';
  6. $row = mysql_query($sql) or die(mysql_error());
  7. $ilosc = $row['ilosc'];
  8.  
  9. $page = ($_GET['page'] ? $_GET['page'] : 1); // numer strony z adresu
  10. $page--;
  11.  
  12. $from = $page*$perPage;
  13.  
  14. $zapytanie = sql(&#092;"SELECT * FROM mediator LIMIT $from,$perPage\"); 
  15. while ($rekord = mysql_fetch_array($zapytanie)) 
  16. { 
  17. $id = $rekord['id']; 
  18. $imie = $rekord['imie'];
  19. $data = $rekord['data'];
  20. $godz = $rekord['godz']; 
  21. echo(&#092;"$id $imie $data $godz <br />\");
  22. }
  23. echo('Przejdz do strony nr:');
  24. for($i=1;$i<($ilosc/$perPage);$i++){
  25. echo('<a href=\"pokaz.php?page=' . $i . '\">' . $i . '</a>');
  26. }
  27. ?>
To juz nie działa:(
Kuziu
  1. <?
  2. include(&#092;"polaczenie.php\");
  3. $perPage = 5; // ile ma sie pokazywać na 1 stronie
  4.  
  5. $sql = 'SELECT COUNT(id) as ilosc FROM mediator';
  6. $result = sql($sql);
  7. $row = mysql_fetch_array($result);
  8. $ilosc = $row['ilosc'];
  9.  
  10. $page = ($_GET['page'] ? $_GET['page'] : 1); // numer strony z adresu
  11. $page--;
  12.  
  13. $from = $page*$perPage;
  14.  
  15. $zapytanie = sql(&#092;"SELECT * FROM mediator LIMIT $from,$perPage\"); 
  16. while ($rekord = mysql_fetch_array($zapytanie)) 
  17. { 
  18. $id = $rekord['id']; 
  19. $imie = $rekord['imie'];
  20. $data  = $rekord['data'];
  21. $godz = $rekord['godz']; 
  22. echo(&#092;"$id $imie $data $godz <br />\");
  23. }
  24. echo('Przejdz do strony nr:');
  25. for($i=1;$i<($ilosc/$perPage);$i++){
  26. echo('<a href=\"pokaz.php?page=' . $i . '\">' . $i . '</a>');
  27. }
  28.   ?>
wozniak
Dzieki wielkie teraz działa!!Miałbys kiedys czas opisac mi jakos krotko jak to wszystko zrobiłes?
Kuziu
Kolejne linie:
4 - Ustawiamy zmienną która wyznacz ilość informacji na 1 podstronie
6 - Zapytanie liczące ilość wpisów w tabeli bazy danych i zwracające ją pod aliasem 'ilosc' (COUNT(id) AS ilosc)
9 - Ustawia zmienna $ilosc, która oznacza ilość wpisów w tabeli.
11- Jeżeli w adresie strony jest ustawiona zamienna page to $page równa się tej wartośći jeżeli nie jest podane to ustawia jakos stronę numer 1.
12- strona = strona - 1 (żeby wyliczyć dla strony numer 1 wyszukiwanie z bazy od zera)
14- od którego wpisu w tabeli ma wyciągać dane = która strona * ilość na 1 stronie
16- Zapytanie do bazy danych z uwzględnieniem LIMIT w którym wykorzystujemy wyliczoną przed chwilą wartość $from ... oraz $perPage oznaczająca ile informacji wyciągnąć z bazy danych

Dalej to juz tylko wyświetlanie

25-28 pokazuje numery stron w pętli iloscWszystkich/iloscNaStrone ... dzieki temu wiemy ile jest podstron.

To wszystko
wozniak
Dzieki wielkie za opis i skrypt.
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.