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ć

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

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 e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
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

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 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

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

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?