Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Optymalne pobieranie danych dla pętli
DUMMY-STUDIO
post 4.04.2012, 16:14:57
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 4.04.2012

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


Witam, przedstawię najpierw kod, potem mój problem:

  1. <?php
  2. $day = $_GET['day'];
  3. $mouth = $_GET['mouth'];
  4. $year = $_GET['year'];
  5.  
  6. if($mouth > (date("n")+3)){
  7. if($year == date("Y")){
  8. header("Location: day.php?day=".date("d")."&mouth=".date("n")."&year=".date("Y"));
  9. }
  10. }
  11. function miesiac_pl($mies) {
  12.  
  13. $mies_pl = array(1=>"Stycznia", "Lutego", "Marzec", "Kwietnia", "Maja", "Czerwieca", "Lipieca", "Sierpnia", "Września", "PaĽdziernika", "Listopada", "Grudnia");
  14.  
  15. return $mies_pl[$mies];
  16. }
  17.  
  18. function dni_mies($mies,$rok) {
  19.  
  20. if (checkdate($mies, 31, $rok)){
  21. $dni = 31;
  22. }elseif (checkdate($mies, 30, $rok)){
  23. $dni = 30;
  24. }elseif (checkdate($mies, 29, $rok)){
  25. $dni = 29;
  26. }elseif (checkdate($mies, 28, $rok)){
  27. $dni = 28;
  28. }
  29.  
  30. return $dni;
  31. }
  32.  
  33. function gen_link($dir){
  34. global $day, $mouth, $year;
  35. $d = $day;
  36. $m = $mouth;
  37. $y = $year;
  38. if($dir == "back"){
  39. if($day-1 == 0){
  40. if($mouth == 1){
  41. $d = dni_mies(12, $y-1);
  42. $m = 12;
  43. $y--;
  44. }else{
  45. $d = dni_mies($m, $y);
  46. $m--;
  47. }
  48. }else{
  49. $d--;
  50. }
  51. $link = "<a href='day.php?day=$d&mouth=$m&year=$y'>poprzedni dzień</a>";
  52. }elseif($dir == "next"){
  53. $dni = dni_mies($mouth, $year);
  54. if($mouth > date("n")+3 && $year == date("Y")){
  55. $link = "następny dzień";
  56. }elseif($mouth == date("n")+3 && $year == date("Y")){
  57. if($day+1 > $dni){
  58. $link = "następny dzień";
  59. }else{
  60. $link = "<a href='day.php?day=".($day+1)."&mouth=$mouth&year=$year'>następny dzień</a>";
  61. }
  62. }else{
  63. $dni = dni_mies($mouth, $year);
  64. if($day+1 > $dni){
  65. $d = 1;
  66. if($mouth+1 > 12){
  67. $m = 1;
  68. $y++;
  69. }else{
  70. $m++;
  71. }
  72. }else{
  73. $d++;
  74. }
  75. $link = "<a href='day.php?day=$d&mouth=$m&year=$y'>następny dzień</a>";
  76. }
  77. }
  78.  
  79. return $link;
  80. }
  81. ?>
  82. <html>
  83. <head>
  84. <meta http-equiv="content-type" content="text/xml; charset=utf-8" />
  85. <meta http-equiv="content-language" content="pl" />
  86. <style>
  87. .prev{
  88. background: #ccc;
  89. border-bottom: 2px solid #000;
  90. border-left: 2px solid #000;
  91. border-top: 2px solid #000;
  92. border-right: 1px solid #000;
  93. float: left;
  94. width: 150px;
  95. }
  96. .next{
  97. background: #ccc;
  98. border-bottom: 2px solid #000;
  99. border-left: 1px solid #000;
  100. border-top: 2px solid #000;
  101. border-right: 2px solid #000;
  102. float: left;
  103. width: 150px;
  104. }
  105.  
  106. .day{
  107. background: #ffe4a4;
  108. border-bottom: 2px solid #000;
  109. border-top: 2px solid #000;
  110. border-right: 1px solid #000;
  111. border-left: 2px solid #000;
  112. float: left;
  113. width: 150px;
  114. }
  115. .tee{
  116. width: 200px;
  117. border: 1px solid #000;
  118. }
  119. .hour{
  120. width: 50px;
  121. background: #ffe4a4;
  122. border: 1px solid #000;
  123. }
  124.  
  125. .block{
  126. background: #990000;
  127. }
  128.  
  129. .hour_block{
  130. width: 50px;
  131. background: #990000;
  132. border: 1px solid #000;
  133. }
  134.  
  135. .hours_hide{
  136. display: none;
  137. }
  138. .hours_show{
  139. display: block;
  140. }
  141. .select_hide{
  142. position: absolute;
  143. width: 70px;
  144. background: #ffe4a4;
  145. border: 1px solid #000;
  146. margin: -20px 0 0 50px;
  147. display: none;
  148. }
  149. .select_show{
  150. position: absolute;
  151. width: 70px;
  152. background: #ffe4a4;
  153. border: 1px solid #000;
  154. margin: -20px 0 0 50px;
  155. display: block;
  156. }
  157. .sector{
  158. float:left;
  159. }
  160. </style>
  161. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
  162. <script type="text/javascript">
  163. function show(){
  164. if($("div#hours1").hasClass("hours_hide")){
  165. $("div#hours1").show("slow");
  166. $('div#hours1').removeClass('hours_hide');
  167. $('div#hours1').addClass('hours_show');
  168. }else{
  169. $("div#hours1").hide("slow");
  170. $('div#hours1').removeClass('hours_show');
  171. $('div#hours1').addClass('hours_hide');
  172. }
  173. }
  174. function show2(id){
  175. if($("div#"+id).hasClass("hour_block")){}else{
  176. if($("div#"+id+"_child").hasClass("select_hide")){
  177. $("div#"+id+"_child").show("slow");
  178. $("div#"+id+"_child").removeClass('select_hide');
  179. $("div#"+id+"_child").addClass('select_show');
  180. }else{
  181. $("div#"+id+"_child").hide("slow");
  182. $("div#"+id+"_child").removeClass('select_show');
  183. $("div#"+id+"_child").addClass('select_hide');
  184. }
  185. }
  186. }
  187.  
  188. function show3(){
  189. if($("div#hours2").hasClass("hours_hide")){
  190.  
  191. $("div#hours2").show("slow");
  192. $('div#hours2').removeClass('hours_hide');
  193. $('div#hours2').addClass('hours_show');
  194.  
  195. }else{
  196. $("div#hours2").hide("slow");
  197. $('div#hours2').removeClass('hours_show');
  198. $('div#hours2').addClass('hours_hide');
  199.  
  200. }
  201. }
  202. function getIdElement(element){
  203. i=$(element).attr("id");
  204. return i;
  205. }
  206. </script>
  207. </head>
  208. <body>
  209. <div class="prev"><?=gen_link("back");?></div>
  210. <div class="day"><?=$day;?> <?=miesiac_pl($mouth);?></div>
  211. <div class="next"><?=gen_link("next");?></div>
  212. <br/><br/>
  213. <div class="sector">
  214. <div class="tee" id="tee1" onclick="show();">Tee1</div>
  215. <div class="hours_hide" id="hours1">
  216. <?
  217. $
  218. $i = 46;
  219. $m = 0;
  220. $h = 8;
  221. while($i < 92){
  222. $cell_color = ($m % 60 == 0 ? $h++ : NULL);
  223. if($h == 9)$addzero = 0;else $addzero = NULL;
  224. if($m == 0)$addzero2 = 0;else $addzero2 = NULL;
  225. ?>
  226. <div class="hour" onclick="show2(getIdElement(this));" id="<?=$i;?>">
  227. <?
  228. echo $addzero.$h.":".$addzero2.$m;
  229. ?><div class="select_hide" id="<?=$i;?>_child">klubowicz<br/>gość</div>
  230. </div>
  231. <?
  232. $m = $m+10;
  233. if($m == 60){
  234. $m = 0;
  235. }
  236. $i++;
  237. }
  238. ?>
  239. <div class="hour">09:00</div>
  240. <div class="hour block" id="100" onclick="show2(getIdElement(this));">09:10 <div class="select_hide" id="100_child">klubowicz<br/>gość</div></div>
  241. <div class="hour">09:20</div>
  242. <div class="hour">09:30</div>
  243. </div>
  244. </div>
  245. <div class="sector">
  246. <div class="tee" id="tee2" onclick="show3();">Tee10</div>
  247. <div class="hours_hide" id="hours2">
  248. <?
  249. $i = 0;
  250. $m = 0;
  251. $h = 8;
  252. while($i < 46){
  253. $cell_color = ($m % 60 == 0 ? $h++ : NULL);
  254. if($h == 9)$addzero = 0;else $addzero = NULL;
  255. if($m == 0)$addzero2 = 0;else $addzero2 = NULL;
  256. ?>
  257. <div class="hour" onclick="show2(getIdElement(this));" id="<?=$i;?>">
  258. <?
  259. echo $addzero.$h.":".$addzero2.$m;
  260. ?><div class="select_hide" id="<?=$i;?>_child">klubowicz<br/>gość</div>
  261. </div>
  262. <?
  263. $m = $m+10;
  264. if($m == 60){
  265. $m = 0;
  266. }
  267. $i++;
  268. }
  269. ?>
  270. <div class="hour">09:00</div>
  271. <div class="hour block" id="100" onclick="show2(getIdElement(this));">09:10 <div class="select_hide" id="100_child">klubowicz<br/>gość</div></div>
  272. <div class="hour">09:20</div>
  273. <div class="hour">09:30</div>
  274. </div>
  275. </div>
  276. </body>
  277. </html>



A problem jest taki, że mam w bazie zrobioną tabelę tak, że pobiera mi w taki sposób dane:


  1. $array['zamow_id][0]=1;
  2. $array['zamow_data][0]="4-4-2012";
  3. $array['zamow_czas][0]="16:30";
  4. $array['zamow_id][1]=2;
  5. $array['zamow_data][1]="4-4-2012";
  6. $array['zamow_czas][1]="16:30";


I chcę w pętli sprawdzać, czy na daną godzinę jest wpisany rekord w bazie. Oczywiście, na pierwszą myśl było wrzucenie zapytania do pętli, ale jeśli to zrobię będę musiał zapętlić 92 zapytania do bazy co za tym idzie, często będzie wywalać "over". Jak zoptymalizować kod, żeby wykonać 1 zapytanie a sprawdzać czy jest odpowiednik w bazie? Słyszałem o przeszukiwaniu tablicy wielowymiarowej poprzez jakieś funkcje ale nie wiem jak to się robi.
Go to the top of the page
+Quote Post
Tartut
post 4.04.2012, 18:19:50
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 1
Dołączył: 29.03.2011

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


Może pobierz wszystkie rekordy z tabeli (chociaż to nie jest zbyt optymalne gdy tabela ma bardzo dużo rekordów), a potem w pętli sprawdzaj datę. W poniżej przedstawiony sposób możesz przeszukać całą pobraną tabelę.
  1. $array['zamow_data][$i]
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:22