Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Widok drzewa w PHP z mysql
Forum PHP.pl > Forum > PHP
pikasso
Witam serdecznie,
mam takie pytanie gdyż zrobiłem na bazie przykładu ze strony www widok drzewa z mysql + php

Jednak drzewo jest na tyle duże, że działa to bardzo wolno .... jak mógłbym w tym przypadku zastosować np. ajaxa aby mógł jakoś dynamicznie pokazywać wyniki w tym drzewie

drzewo ładuje się około minuty ...

  1. $qry="SELECT * FROM nowy_test";
  2. $result=mysql_query($qry);
  3.  
  4.  
  5. $arrayCategories = array();
  6.  
  7. while($row = mysql_fetch_assoc($result)){
  8. $arrayCategories[$row['Key']] = array("Parent_ID" => $row['Parent_ID'], "Classification_Name_pl" =>
  9. $row['Classification_Name_pl'], "Classification_Name_de" => $row['Classification_Name_de'], "Classification_Name_en" => $row['Classification_Name_en'], "PM" => $row['PM'], "Stepkey" => $row['Stepkey'],
  10. "Comments" => $row['Comments'], "OKNO" => $row['OKNO']);
  11. }
  12. //createTree($arrayCategories, 0);
  13.  
  14. function createTree($array, $currentParent, $currLevel = 0, $prevLevel = -1) {
  15.  
  16. foreach ($array as $categoryId => $category) {
  17.  
  18. if ($currentParent == $category['Parent_ID']) {
  19. /*echo "<li>
  20. <label for='folder2'>Folder 2</label> <input type='checkbox' id='folder2' />
  21. <ol>
  22. <li class='file'><a href=''>File 1</a></li>
  23. <li>
  24. <label for='subfolder2'>Subfolder 1</label> <input type='checkbox' id='subfolder2' />
  25. <ol>
  26. <li class='file'><a href=''>Subfile 1</a></li>
  27. <li class='file'><a href=''>Subfile 2</a></li>
  28. <li class='file'><a href=''>Subfile 3</a></li>
  29. <li class='file'><a href=''>Subfile 4</a></li>
  30. <li class='file'><a href=''>Subfile 5</a></li>
  31. <li class='file'><a href=''>Subfile 6</a></li>
  32. </ol>
  33. </li>
  34. </ol>
  35. </li>";*/
  36. if ($currLevel > $prevLevel) echo " <ol class='tree'> ";
  37.  
  38. if ($currLevel == $prevLevel) echo " </li> ";
  39.  
  40. echo '<li> <label for="subfolder2"> | <img src="'.$category['OKNO'].'.png"> | <img src="comment.png"> <span class="akceptacja">'.$category['Comments'].'</span>
  41. | <a href="edit.php?Stepkey='.$category['Stepkey'].'&PM='.$_GET['PM_NAME'].'"><img src="edit.png"></a>
  42. | <img src ="http://www.wisniewski.net/polish_flag_icon.png"> '.$category['Classification_Name_pl'].'
  43. | <img src="http://fr.custplace.com/img/flag-deu.png?1392218467"> '.$category['Classification_Name_de'].'
  44. | <img src="http://www.neue-volkslieder.de/social/english.png"> '.$category['Classification_Name_en'].'
  45. | <img src="Person.png"> '.$category['PM'].'
  46. | </label> <input type="checkbox" id="subfolder2"/>';
  47.  
  48. if ($currLevel > $prevLevel) { $prevLevel = $currLevel; }
  49.  
  50. $currLevel++;
  51.  
  52. createTree ($array, $categoryId, $currLevel, $prevLevel);
  53.  
  54. $currLevel--;
  55. }
  56.  
  57. }
  58.  
  59. if ($currLevel == $prevLevel) echo " </li> </ol> ";
  60.  
  61. }
  62. ?>
  63. <div id="content" class="general-style1">
  64. <?php
  65. if(mysql_num_rows($result)!=0)
  66. {
  67.  
  68. createTree($arrayCategories, 0);
  69. }
  70. ?>
NickOver
Mógłbyś pobierać np. pierwsze 10 potem ajax i kolejne 10 i kolejne i tak do pobrania wszystkich. BTW mógłbyś wyjaśnić co tam się dzeje między linią 64 a 73? Po co pierdyliard razy używasz <?php ?>?
pikasso
a mógłbym prosić o jakiś przykład na moim kodzie??
aż tak biegły w te klocki nie jestem i tak jak napisałem sam metodą prób i błędów modyfikowałem znaleziony przykład


Cytat(NickOver @ 14.05.2015, 13:45:00 ) *
Mógłbyś pobierać np. pierwsze 10 potem ajax i kolejne 10 i kolejne i tak do pobrania wszystkich. BTW mógłbyś wyjaśnić co tam się dzieje między linią 64 a 73? Po co pierdyliard razy używasz <?php ?>?


A faktycznie, nie jest to potrzebne - tak jak mówiłem sam przy tym kombinowałem i tak zostało nic nie ma zaraz włączę edycję skasuję tą część
NickOver
Linijke nr1 zmień na:
  1. $qry="SELECT * FROM nowy_test LIMIT 10";


Następnie dodaj jquery i plik z takim kodem:
  1. $(document).rady(function(){
  2. loop = 0;
  3. getData(loop);
  4. })
  5. function getData(loop){
  6. $.ajax({
  7. method: "POST",
  8. url: "nastepne.php",
  9. data:{loop: loop}
  10. })
  11. .done(function(e)){
  12. data = $.parseJSON(e);
  13. //tu musisz dać pętle javascriptową która wsadzi Ci każdy element w odpowiednim miejscu
  14. //ten kod daj PO pętli:
  15. loop = loop + 10;
  16. getData(loop);
  17. }
  18. }


i plik nastepne.php:
  1. <?php
  2.  
  3. $query = mysql_query('SELECT * FROM nowy_test LIMIT 10,'$_POST['loop']);
  4. echo json_encode(mysql_fetch_assoc($query));


Kod pisany z palca więc może być coś nie teges. Jak by coś to pisz + masz zadanie domowe. Jako że forum ma uczyć napisz co kod napisany przeze mnie robi.
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.