Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Paginacja zapytanie
snerf
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


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 (IMG:style_emoticons/default/sad.gif)
BAZA:(IMG:http://images.stimax.pl/i6/cmscomment.png)
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: (IMG:http://images.stimax.pl/i6/avyv.png)

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:
(IMG:http://images.stimax.pl/i6/samsungzpi.png)

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 (IMG:style_emoticons/default/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:
(IMG:http://images.stimax.pl/i6/aaaaaajnj.png)

Proszę o wskazówki co robię źle i podpowiedzi (IMG:style_emoticons/default/smile.gif)

Dziękuje!

Ten post edytował snerf 22.03.2015, 19:28:02
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




I niby jak mamy przeglądać Twoje dokumenty?
Go to the top of the page
+Quote Post
snerf
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


przepraszam niewiem jak kopiować linki z tego google dysku..wrr.. poprawione

Ten post edytował snerf 22.03.2015, 19:04:09
Go to the top of the page
+Quote Post
snerf
post
Post #4





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


**** wrzuciłem na normalny hosting ! eh

#ksychooo
Nie klne (IMG:style_emoticons/default/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);

(IMG:http://images.stimax.pl/i6/7877886.png)

i paginacja wkońcu po dwóch tematach działa prawidłowo, nie ucina odpowiedz.
(IMG:http://images.stimax.pl/i6/nbvjgvbhjb.png)

pozdrawiam i do usłyszenia (IMG:style_emoticons/default/wink.gif)
Powód edycji: [Kshyhoo]: po co takie słowa?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.09.2025 - 02:47