Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Paginacja zapytanie
Forum PHP.pl > Forum > Przedszkole
snerf
Witam,
w poprzednim wątku troche zakręciłem i stwierdziłem że się nieda więc zrobię to inaczej lecz dodając więcej kodu sad.gif
BAZA:
Mam funkcje tworzącą drzewko:
  1. <?php function buildTree(array $elements, $parentId = 0) {
  2. $branch = array();
  3.  
  4. foreach ($elements as $element) {
  5. if ($element['qoute_id'] == $parentId) {
  6. $children = buildTree($elements, $element['id']);
  7. if ($children) {
  8. $element['children'] = $children;
  9. }
  10. if(isset($_GET['id3'])){ $gettrzy = $_GET['id3']; }else{ $gettrzy = 1; };
  11. $element['seo_link'] = $_GET['id2'].'/'.$gettrzy;
  12. $branch[] = $element;
  13. }
  14. }
  15.  
  16. return $branch;
  17. } ?>


  1. <?php $stmt = $pdo -> prepare('SELECT * FROM `'.$prefix_mysql.comments.'` WHERE comment = :id_newsa ORDER BY time ASC LIMIT : od, : do');
  2. $stmt -> bindValue(': od', $start, PDO::PARAM_INT);
  3. $stmt -> bindValue(': do', $results, PDO::PARAM_INT);
  4. $stmt -> bindValue(':id_newsa', 'news_'.$id_news, PDO::PARAM_INT);
  5. $stmt -> execute();
  6. $wiersz = $stmt ->fetchAll(PDO::FETCH_ASSOC);
  7. $tree = buildTree($wiersz); ?>


I działa znakomicie:

Lecz koliduje mi to z paginacją i żeby to rozwiązać przejdźmy dalej..

Wymyśliłem następujący sposób:
  1. <?php
  2. $stmt = $pdo -> prepare('SELECT * FROM `'.$prefix_mysql.comments.'` WHERE comment = :id_newsa AND qoute_id = 0 ORDER BY time ASC LIMIT : od, : do');
  3. $stmt -> bindValue(': od', $start, PDO::PARAM_INT);
  4. $stmt -> bindValue(': do', $results, PDO::PARAM_INT);
  5. $stmt -> bindValue(':id_newsa', 'news_'.$id_news, PDO::PARAM_INT);
  6. $stmt -> execute();
  7. $wiersz = $stmt ->fetchAll(PDO::FETCH_ASSOC); ?>

dodałem AND qoute_id = 0 czyli pobieram sobie 4 rekordy główne:


Do tego dodać rekurencje całość umieścić w pętli i pododawać wszystkie rekordy a funkcja buildTree mi to ładnie ogarnie i do tego zadziała paginacja ponieważ w tym zapytaniu pobiore samych rodziców a dzieci nie potnie smile.gif
Problem leży po stronie mojej rekurencji otóż nie działa..
  1. <?php function buildTpe($wier) {
  2. global $pdo;
  3. global $prefix_mysql;
  4.  
  5. foreach ($wier as $key => $value) {
  6.  
  7. $stmt = $pdo -> prepare('SELECT * FROM `'.$prefix_mysql.comments.'` WHERE qoute_id = :id');
  8. $stmt -> bindValue(':id', $value['id'], PDO::PARAM_INT);
  9. $stmt -> execute();
  10. while($row_d = $stmt -> fetch()){
  11. return $row_d;
  12.  
  13. $wiersz[] = buildTpe($row_d);
  14.  
  15. }
  16. }
  17. }$wiersz[] = buildTpe($wiersz);
  18. $tree = buildTree($wiersz); ?>

i mam coś takiego:


Proszę o wskazówki co robię źle i podpowiedzi smile.gif

Dziękuje!
Kshyhoo
I niby jak mamy przeglądać Twoje dokumenty?
snerf
przepraszam niewiem jak kopiować linki z tego google dysku..wrr.. poprawione
snerf
**** wrzuciłem na normalny hosting ! eh

#ksychooo
Nie klne tongue.gif

@topic
Dobra już sobie poradziłem uff maskra! Niewiem czy skrypt jest prawidłowo napisany ale lepiej już tego nie zrobię.
Dla potomnych:
  1. $tabliczka = array();
  2. $tabliczka = array_merge($tabliczka, $wiersz);
  3. function buildTpe($wier) {
  4. global $pdo;
  5. global $prefix_mysql;
  6. global $id_news;
  7. global $tabliczka;
  8. foreach ($wier as $key => $value) {
  9. $stmt = $pdo -> prepare('SELECT * FROM `'.$prefix_mysql.comments.'` WHERE comment = :id_newsa AND qoute_id = :id');
  10. $stmt -> bindValue(':id', $value['id'], PDO::PARAM_INT);
  11. $stmt -> bindValue(':id_newsa', 'news_'.$id_news, PDO::PARAM_INT);
  12. $stmt -> execute();
  13. $row_d = $stmt ->fetchAll(PDO::FETCH_ASSOC);
  14. if (!empty($row_d)) {
  15. $tabliczka = array_merge($tabliczka, $row_d);
  16. buildTpe($row_d);
  17. }
  18. }
  19. }
  20. buildTpe($wiersz);
  21. $tree = buildTree($tabliczka);



i paginacja wkońcu po dwóch tematach działa prawidłowo, nie ucina odpowiedz.


pozdrawiam i do usłyszenia wink.gif
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.