Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Segregowanie danych z SQLA
wozniak
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


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. ?>


Ten post edytował wozniak 22.02.2005, 01:22:57
Go to the top of the page
+Quote Post
NuLL
post
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


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.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
wozniak
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


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;(
Go to the top of the page
+Quote Post
NuLL
post
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


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.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Kuziu
post
Post #5





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


  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. ?>


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
wozniak
post
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


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. ?>
Go to the top of the page
+Quote Post
Kuziu
post
Post #7





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


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


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
Vertical
post
Post #8





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


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ę

Ten post edytował Vertical 22.02.2005, 11:25:11
Go to the top of the page
+Quote Post
wozniak
post
Post #9





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


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:(
Go to the top of the page
+Quote Post
Kuziu
post
Post #10





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


  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.   ?>


Ten post edytował Kuziu 22.02.2005, 11:47:12


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
wozniak
post
Post #11





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Dzieki wielkie teraz działa!!Miałbys kiedys czas opisac mi jakos krotko jak to wszystko zrobiłes?
Go to the top of the page
+Quote Post
Kuziu
post
Post #12





Grupa: Zarejestrowani
Postów: 743
Pomógł: 0
Dołączył: 11.11.2003
Skąd: Toruń

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


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


--------------------
Słońce zachodzi ... kolejna noc nadchodzi ...
Go to the top of the page
+Quote Post
wozniak
post
Post #13





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Dzieki wielkie za opis i skrypt.
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 Aktualny czas: 20.08.2025 - 10:30