Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Porcjowanie danych w PHP
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Porcjowanie danych w PHP
Technologie webowe

Porcjowanie danych w PHP

WebInside.pl
Ostatnia aktualizacja: 25.07.2003
WebInside.pl
Udostępnij
Udostępnij

Początkujący programiści często maja problem z porcjowaniem danych, w tym artykule wyjaśnię jak tego dokonać zarówno przy korzystaniu z plików tekstowych jak i bazy danych.

Na początek zdefiniujmy sobie „bazy danych”, z których będziemy wybierać dane. Zacznijmy od bazy tekstowej, zapiszemy ją w pliku baza.txt

0|bialy 1|czarny 2|niebieski 3|zielony 4|czerwony 5|srebrny

Teraz pora na prosta bazę danych w MySql, będzie ona zawierać tylko dwa pola, id i color.

CREATE TABLE colors ( id INT(3) NOT NULL auto_increment, color VARCHAR(40), PRIMARY KEY (id) );

Zeby zapelnic nasza baze sql, napiszmy krotki skrypt w PHP.

/*zakladam ze polaczenie z mysql zostlo juz nawiazane */ $kolory = array(’bialy’, 'czarny’, ‘niebieski’, ‘zielony’, ‘czerwony’, ‘srebrny’); foreach($kolory as $kolor) { mysql_query(„INSERT INTO colors VALUES(0, $kolor)”); }

Dobrze mamy już nasze przykładowe dane, teraz przejdziemy do właściwej części artykułu, czyli porcjowania. Sam sposób postępowania w obydwu przypadkach jest podobny, przede wszystkim musimy wiedzie ile mamy rekordów w bazie, lub w przypadku pliku tekstowego, ile jest w nim linijek. Druga ważna informacja to ile rekordów powinno zostać wyświetlonych, ostatnia rzeczą która będzie nas interesować to na której stronie znajdujemy się teraz. O ilości rekordów decydujemy sami więc ustawmy sobie zmienną $naStronie równą 4. Natomiast numer strony będzie przekazywany metoda GET.

$naStronie = 4; if($_GET[’strona’]) $strona = $_GET[’strona’]; else $strona = 0;

Powyższy kod sprawdza czy zmienna $GET[’strona’] jest ustawiona, oraz czy jest większa lub równa zero. Brakuje nam jeszcze ilości rekordów w bazie, jednak sposób ustalenia tej wartości zależy od rodzaju wybranej bazy danych, a wiec w naszym sytuacji należy rozpatrzyć dwa przypadki (pliki .txt oraz baza MySql). Zacznijmy od plików tekstowych ze względu na to, ze początkujący programiści najczęściej o to pytają.

$lines = file(’baza.txt’); $size = sizeof($lines); echo „Ilsosc rekordow w bazie $size, obecna strona $strona, ilosc stron „.ceil($size/$naStronie).”<br>”; for($i=$strona * $naStronie; $i<$strona*$naStronie+$naStronie && $i<$size; $i++) { $var = explode(„|”,$lines[$i]); echo $var[0].” — „.$var[1].”<br>”; }

Pierwsza część kodu jest chyba oczywista, wczytujemy do zmiennej zawartość pliku. Pytania może budzić dopiero pętla for, a w zasadzie jej ‘dziwne’ warunki, a więc postaram się to szybko wyjaśnić, początkowa wartość $i jest równa linii, od której należy zacząć wyświetlanie wpisów ($strona*naStronie). Następnie znajdują się dwa warunki, pierwszy z nich mówi, że: $i ma być mniejsze niż początkowa wartość $i plus ilość wpisów na jednej stronie (($strona*$naStronie)+$naStronie), natomiast drugi warunek jest tylko zabezpieczeniem na wypadek gdyby $i przekroczyło rozmiar tablicy. Dalej już wszystko jest łatwe, dzielimy odpowiednią linie na tablice numeryczną i wyświetlamy odpowiednie wartości. Porcjowanie danych z bazy sql jest dużo prostsze, można nawet powiedzieć, ze opiera się o dwa zapytania, może najpierw zobaczmy na kod, a poniżej go omówię.

//zakładamy ze jesteśmy połączeni z bazą danych $query = mysql_query(„SELECT count(*) FROM colors”); $row = mysql_fetch_array($query); $size = $row[’count(*)’]; echo „Ilsosc rekordow w bazie $size, obecna strona $strona, ilosc stron „.ceil($size/$naStronie).”<br>”; $start = $strona*$naStronie; $query = mysql_query(„SELECT * FROM colors LIMIT $start, $naStronie”); while($var = mysql_fetch_array($query)) { echo $var[0].” — „.$var[1].”<br>”; }

Na samym początku sprawdzamy ile łącznie wierszy znajduje się ilość tabeli, wewnątrz zapytania zamiast nazw pól zostało użyte ‘dziwne’ słowo count(*) dzięki niemu możemy sprawdzić jaka jest łączna ilość rekordów objętych zapytaniem (to nam będzie potrzebne później) jak łatwo się domyślić ilość wierszy w bazie podzielona przez ilość wpisów na stronie da nam (po zaokrągleniu w gore) całkowitą ilość stron. Następne pytanie do bazy danych niewiele różni się od poprzedniego z tym, że count(*) zostało zastąpione przez ‘gwiazdkę’, (czyli wszystkie kolumny wewnątrz tabeli), oraz na końcu pojawiło się słowo LIMIT oraz dwie zmienne. Cały ten zapis jest odpowiedzialny za wyciągnięcie odpowiedniej ilości danych, przy czym $start oznacza wiersz od którego należy zacząć, a $naStronie ile wierszy ma być wyciągniętych. Zastosowana dalej pętla nie powinna budzić żadnych wątpliwości, są w niej w prosty sposób wyświetlane dane uzyskane w wyniku pierwszego zapytania. Na koniec zostało nam zrobić podział na strony, jest to element wspólny zarówno dla bazy tekstowej jak i bazy sql.

if($strona!=0) echo ” <a href=?strona=”.($strona-1).”>poprzednia</a> „; for($i=0; $i<ceil($size/$naStronie); $i++) { if($strona==$i) echo ” [„.($i+1).”]”; else echo ” <a href=?strona=$i>[„.($i+1).”]</a> „; } if($strona<ceil($size/$naStronie)-1) echo ” &<a href=?strona=”.($strona+1).”&>nastepna&</a&> „;

Pierwsza instrukcja if odpowiada za link do poprzedniej strony, jest on wyświetlany jeżeli obecna strona jest różna od zera. Zapis $i<ceil($size/$naStronie) wewnątrz pętli for oznacza, że pętla ta ma być wykonywana tak długo jak $i jest mniejsze niż ilość stron. Natomiast warunek w ostatnim if-ie, można przeczytać tak: „jeżeli obecna strona jest mniejsza niż ilość wszystkich stron minus jeden to wówczas istnieje strona następna”.

I to już wszystko, postępując analogicznie można porcjować dane z o wiele większych baz danych, nawet gdy informacje są wyciągane przy pomocy bardzo złożonych zapytań wykorzystujących pod zapytania lub łączenie tabel, należy pamiętać jedynie o tym, aby w przypadku bazy sql, odpowiednio zmienić pytanie dotyczące ilości wierszy.

Może Cię zainteresować

Jak wybrać agencję do tworzenia strony internetowej w Warszawie?

Lovable – recenzja po 3 miesiącach. Cennik, opinie, kredyty, limity

Stanowisko web developera w 2026: co naprawdę przyspiesza pracę — i za co nie warto przepłacać

AI kontra klasyczne kreatory stron: kto tu naprawdę wygrywa?

Jak wybrać i zarejestrować domenę? Praktyczny przewodnik dla firm i osób prywatnych

WebInside.pl 2003-07-25 2003-07-25
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł Cenzor wyrazów na stronach WWW
Następny artykuł Rotator bannerów w PHP
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Jak zwiększyć rozpoznawalność marki w całym mieście dzięki reklamie na tramwajach
E-marketing
person holding black iphone 4
Newsletter w małym sklepie internetowym. Jak zacząć, żeby pierwszy mail nie wylądował w spamie
E-marketing
Jak wybrać agencję do tworzenia strony internetowej w Warszawie?
Technologie webowe
person sitting while using laptop computer and green stethoscope near
Badania profilaktyczne w Warszawie – jaki pakiet zrobić raz w roku i gdzie się umówić
Artykuły partnerskie
Dlaczego skuteczność reklamy zależy również od tego, co dzieje się na stronie?
E-marketing
Lovable – recenzja po 3 miesiącach. Cennik, opinie, kredyty, limity
Technologie webowe
A smartwatch with a dark textured band and a colorful app icon display
Smartwatch jak mały komputer – dlaczego naprawa Apple Watch wymaga dziś specjalistycznej technologii?
Poradniki
Stanowisko web developera w 2026: co naprawdę przyspiesza pracę — i za co nie warto przepłacać
Technologie webowe
Close-up of gold and silver cryptocurrency coins on a digital trading chart.
Bybit po ataku za 1,5 miliarda dolarów: co giełda zmieniła i co sprawdzisz sam
Artykuły partnerskie
Odnowiony iPhone jako telefon testowy – dlaczego osoby z branży IT sięgają po refurbished zamiast nowego?
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Jak wybrać agencję do tworzenia strony internetowej w Warszawie?

3 min czytania

Lovable – recenzja po 3 miesiącach. Cennik, opinie, kredyty, limity

15 min czytania
Technologie webowe

Stanowisko web developera w 2026: co naprawdę przyspiesza pracę — i za co nie warto przepłacać

7 min czytania
a computer screen with the words the easy way to build marketplaces
Technologie webowe

AI kontra klasyczne kreatory stron: kto tu naprawdę wygrywa?

5 min czytania
Technologie webowe

Jak wybrać i zarejestrować domenę? Praktyczny przewodnik dla firm i osób prywatnych

5 min czytania
Technologie webowe

Komentarze w CSS – jak dodawać i do czego służą? Przykłady użycia

17 min czytania
Technologie webowe

Co to jest REST API i na jakich zasadach działa? Przewodnik dla początkujących

21 min czytania
Technologie webowe

Marginesy i dopełnienie w CSS – czym się różnią właściwości margin i padding?

17 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy



Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Jak zwiększyć rozpoznawalność marki w całym mieście dzięki reklamie na tramwajach
  • Newsletter w małym sklepie internetowym. Jak zacząć, żeby pierwszy mail nie wylądował w spamie
  • Jak wybrać agencję do tworzenia strony internetowej w Warszawie?
  • Badania profilaktyczne w Warszawie – jaki pakiet zrobić raz w roku i gdzie się umówić

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?