Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zoptymalizować takie coś
Forum PHP.pl > Forum > PHP
japolak
witam
mam problem
napisałem sobie funkcje która mi wyświetla formularz:
wszystko jest zapętlone i bardzo wolno mi chodzi
do każdej godziny pobierane są nowe dane z bazy

co w rezultacie powoduje iż cala strona na localhoscie potrafi sie ladować ładne kilkanaście sekund

jak to zoptymalizowac aby sie wyświetlało szybciej??

  1. function wyswietl_formularz_dzienny()
  2. {
  3. ?>
  4.  
  5.  
  6. <?php
  7. $pokaz=new dane();
  8. $godzina=date(G);
  9. $id_dnia=date(w);
  10.  
  11.  
  12. //od poniedziałku do piątku wyświetlaj to
  13. if ($id_dnia>=1 and $id_dnia<=5){
  14. for ($i=$godzina; $i <=20; $i++) {
  15. if($i>=10){
  16. ?>
  17. <form action="zapisz_dzienny.php" method="post" >
  18. <table border=1 >
  19. <tr>
  20. <td>Godzina wejścia: </td>
  21. <td><?php
  22. echo $i;?>
  23. <input type="hidden" name="godz<?php $i; ?>" value="<?php echo $i; ?>" size="2" />
  24. <?php echo' </td>';?>
  25. <td><?php $pokaz->sprawdz_kto_wszedl($i)?></td>
  26. </tr>
  27. <tr>
  28. <td>Instruktor:</td>
  29. <td><?php
  30.  
  31. $pokaz->pokaz_trenera($id_dnia, $i);
  32.  
  33. ?><input type="hidden" name="trener" value="<?php $pokaz->pokaz_trenera($id_dnia, $i); ?>" size="2" />
  34. </td>
  35.  
  36. <td rowspan="2" >
  37. <table border=1>
  38. <?php
  39.  
  40. //pętla tworzy 20 imputów
  41. for ($a=1; $a<=2; $a++)
  42. {
  43. ?><tr><?php
  44. for($b=0;$b<=9; $b++)
  45. {
  46. ?><td><input type="text" size="5" name="<?php echo$a;echo$b ; ?>" /></td> <?php }
  47. ?></tr><?php } ?>
  48.  
  49. </table>
  50.  
  51. </td>
  52. </tr>
  53. <tr><td>Usługa</td>
  54. <td><?php
  55.  
  56. //sprawdzamy czy istnieje rekord w bazie
  57. $sprawdz=$pokaz->sprawdz_czy_juz_bylo_wejscie($i);
  58.  
  59. ?>
  60. </td></tr>
  61. <tr><td colspan="3"><input type="submit" name="Wyslij z godziny <?php $i;?>" value="Wyslij z godziny <?php echo $i;?>" /> </td></tr>
  62. </table>
  63.  
  64.  
  65.  
  66. <?php
  67.  
  68. echo "<br>";
  69. ?> </form><?php
  70. }
  71. }
  72. }
  73. // wyswietla sobote i niedziele
  74. else
  75. {
  76.  
  77. for ($i=$godzina; $i <=16; $i++) {
  78. if($i>=10){
  79.  
  80. ?> <form action="zapisz_dzienny.php" method="post" >
  81. <table border=1 >
  82. <tr>
  83. <td>Godzina wejścia: </td>
  84.  
  85. <td><?php echo $i; ?><input type="hidden" name="godz<?php $i; ?>" value="<?php echo $i; ?>" size="2" /></td>
  86. <td><?php $pokaz->sprawdz_kto_wszedl($i)?></td>
  87. </tr>
  88. <tr>
  89. <td>Instruktor:</td>
  90. <td><?php
  91. $pokaz=new dane();
  92. $pokaz->pokaz_trenera($id_dnia, $i);
  93.  
  94. ?>
  95. </td>
  96.  
  97. <td rowspan="2" >
  98. <table border=1>
  99. <?php
  100. for ($a=1; $a<=2; $a++){
  101. ?><tr><?php
  102. for($b=0;$b<=9; $b++){
  103. ?><td><input type="text" size="5" name="<?php echo$a;echo$b ; ?>" /></td> <?php }
  104. ?></tr><?php } ?>
  105.  
  106. </table>
  107.  
  108. </td>
  109. </tr>
  110. <tr><td>Usługa</td>
  111. <td><?php
  112. $sprawdz=$pokaz->sprawdz_czy_juz_bylo_wejscie($i);?>
  113. </td></tr>
  114. <tr><td colspan="3"><input type="submit" name="Wyslij z godziny <?php $i;?>" value="Wyslij z godziny <?php echo $i;?>" /> </td></tr>
  115. </table>
  116.  
  117. <?php
  118.  
  119. echo "<br>";
  120. ?> </form><?php
  121. }
  122. }
  123. }
  124. }


a to rezultat funkcji

Zyx
Pobierz najpierw wszystkie dane dotyczące wszystkich dni, później pogrupuj je ręcznie i dopiero wyświetlaj. Dobrze by też zrobiło oddzielenie pobierania i obróbki tych danych od ich wyświetlania...
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.