Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pager, stronicowanie dla pętli foreach
Forum PHP.pl > Forum > Przedszkole
Malinaa
Witam,
piszę skrypt przetwarzający pliki .xml na HTML (plik jest listą produktów)
i mam kłopot ze zrobieniem pagera, pliki z produktami są dużych rozmiarów i zawierają po 500 produktów,
potrzebny jest mi więc pager, aby wyświetlać na jednej stronie nie więcej niż 100 produktów.

Mam taki kod:
  1. $plik_xml = 'xml/'.$oferta_xml; // plik xml
  2. $dane = simplexml_load_file($plik_xml);
  3. $ile_rekordow = count($dane);
  4.  
  5. foreach ($dane as $produkt) {
  6. $nazwa = ((string)$produkt->nazwa);
  7. $opis = ((string)$produkt->opis);
  8. $url = ((string)$produkt->url);
  9. $cena = ((string)$produkt->cena);
  10. $cena_promocja = ((string)$produkt->cena_w_promocji);
  11. $zdjecie = ((string)$produkt->zdjecie);
  12.  
  13. echo "Nazwa produktu: $nazwa, opis: $opis, url: $url, cena: $cena, cena w promocji: $cena_promocja, zdjecie: $zdjecie";
  14. }

Jak tutaj zrobić pager?
Wyświetić określoną liczbę produktów i przejście do kolejnych stron?
tolomei
Szukaj pod hasłem stronicowanie.
Mnóstwo tematów o tym było.
Użyj szukajki wink.gif
peter13135
Po co sprawdzasz wielkośc tablicy skoro potem i tak używasz foreach ?
Moja rada : użyj for, i do tego sobie pagera zrobisz sam.
Malinaa
Pytasz o zmienną $ile_rekordow
Nie jest jeszcze używana, od tego zacząłem pager dla foreach, ale coś nie bardzo mi idzie dalej wink.gif
Przeleciałem tematy na forum i dla tej pętli echo "nie znaleziono".
nospor
U mnie w podpisie masz klase Pager. W paczce do ściągnięcia masz przykład z tablicą - może ci się przyda
Malinaa
Jak dla tej pętli zrobić pager?

Dla pętli for powinno działać,
mam jednak taki problem, tablica ma postać:

  1. SimpleXMLElement Object (
  2. [produkt] => Array (
  3. [0] => SimpleXMLElement Object ( [id] => 603 [nazwa] => SimpleXMLElement Object ( ) [opis] => SimpleXMLElement Object ( ) [url] => SimpleXMLElement Object ( ) [cena] => 80.00 [cena_w_promocji] => 59.90 [kategoria] => SimpleXMLElement Object ( ) [zdjecie] => SimpleXMLElement Object ( ) )
  4. [1] => SimpleXMLElement Object ( [id] => 554 [nazwa] => SimpleXMLElement Object ( ) [opis] => SimpleXMLElement Object ( ) [url] => SimpleXMLElement Object ( ) [cena] => 75.00 [cena_w_promocji] => 59.90 [kategoria] => SimpleXMLElement Object ( ) [zdjecie] => SimpleXMLElement Object ( ) )
  5. [2] => SimpleXMLElement Object ( [id] => 596 [nazwa] => SimpleXMLElement Object ( ) [opis] => SimpleXMLElement Object ( ) [url] => SimpleXMLElement Object ( ) [cena] => 120.00 [cena_w_promocji] => 99.90 [kategoria] => SimpleXMLElement Object ( ) [zdjecie] => SimpleXMLElement Object ( ) )
  6. [3] => SimpleXMLElement Object ( [id] => 596 [nazwa] => SimpleXMLElement Object ( ) [opis] => SimpleXMLElement Object ( ) [url] => SimpleXMLElement Object ( ) [cena] => 100.00 [cena_w_promocji] => 79.90 [kategoria] => SimpleXMLElement Object ( ) [zdjecie] => SimpleXMLElement Object ( ) )
  7. ...
  8. )
  9. )


jak z tablicy $dane pobierać wartości dla for'a:

for ($i=$start; $i<=$stop; $i++) {
$nazwa = '? ? ?'; // bylo ((string)$produkt->nazwa);
// itd...
}



Kontynuacja tematu, nowe pytanie:

Skrypt śmiga, ale jest jeszcze jeden kłopot z wielkością plików .xml .

Najczęściej są to duże pliki, czasem powyżej 10 MB.

Jeśli plik mieści się w rozmiarch 1MB nie ma problemu, ale jeżeli plik .xml przekracza wymienioną wielkość wyskakuje błąd: Allowed memory size...

W jaki sposób przetwarzać (czytać) w PHP XML'a tak aby nie brakowało pamięci?

Błąd wskazuje na linie z takim kodem:

  1. xml_parse_into_struct($parser, trim($contents), $xml_values);
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.