Lynx Posted March 4, 2006 Report Share Posted March 4, 2006 Ir gadījumi, kad piemēram ir nepieciešams vienā lapā attēlot divās, vai trīs vietās vienus un tos pašus datus no vienāda mysql pieprasījuma. Zinot, ka datubāze visvairāk tiek noslogota, loģiski būtu veikt vienu pieprasījumu sākumā, noindeksēt datus un vēlāk viņiem piekļut. Un te rodas jautājums: kā to vislabāk darīt? 1ais variants, ko uz ātru roku uzrakstīju: $i = 0; $query = mysqli_query(); while($row = mysqli_fetch_assoc($query)) { $i++; $id[$i] = $row['id']; $text[$i] = nl2br(stripslashes(parsecode($row['text']))); } Datus pēc tam atkārtoti izvadam šādi: for($ii = 1; $ii <= $i; $ii++) { echo $id[$ii].' '.$text[$ii]; } 2ais variants: $query = mysqli_query(); while($row = mysqli_fetch_assoc($query)) { $data['id'][] = $row['id']; $data[$row['id']]['id'] = $row['id']; $data[$row['id']]['text'] = nl2br(stripslashes(parsecode($row['text']))); } izvadam: if(!empty($data)) { foreach($data as $dat) { echo $dat['id'].' '.$dat['text']; } } Vai varbūt ir kāds vēl labāks variants? Un esmu pārleicināts, ka noteikti jābūt. Link to comment Share on other sites More sharing options...
bubu Posted March 4, 2006 Report Share Posted March 4, 2006 Kautkā dīvaini tu to otro variantu taisi... Es šitā darītu: $query = mysqli_query(); $data = array(); while($row = mysqli_fetch_assoc($query)) { $data[] = array('id' => $row['id']; 'text' => nl2br(stripslashes(parsecode($row['text']))) ); } // ... foreach ($data as $one_data) { echo $one_data['id'], ' ', $one_data['text']; } Pie tam, šī lieta saucās nevis indeksēšana, bet gan kešošana. Indeksēšana notiek, kad tu izveido kādu papildus datus struktūru, kura palīdz tev meklēt kautkādas lietas oriģinālajos datos ātrāk, nekā rakāties katru reizi pa tiem. Link to comment Share on other sites More sharing options...
v3rb0 Posted March 4, 2006 Report Share Posted March 4, 2006 ..tāpēc jālieto templeiti - izvadi vienus datus kaut vai 100x, ja klientam tā pēkšņi sagribās, nemainot neko datu savākšanā. Link to comment Share on other sites More sharing options...
Lynx Posted March 4, 2006 Author Report Share Posted March 4, 2006 Paldies, bubu. Tieši tā, v3rb0, šis arī ir priekš templates paredzēts kods. php failā izvelkam visus datus, apstrādājam, nokešojam ;) un pēc php koda includojam templates failu. Un esmu pārliecināts, ka šis ir daudz labāks variants nekā smarty vai cita templašu sistēma. Link to comment Share on other sites More sharing options...
hmnc Posted March 6, 2006 Report Share Posted March 6, 2006 a es nesaprotu nedaudz... ja dati vienreiz ir izvilkti skriptā kāda skuja pēc vajag viņus vēl vilkt?!?! dati un mainīgie tak nekur nepazūd!! dabūn viņus vienreiz un lieto kaut miljons reižu! Link to comment Share on other sites More sharing options...
bubu Posted March 6, 2006 Report Share Posted March 6, 2006 Bet par to pašu jau arī Lynx runā, hmnc! Link to comment Share on other sites More sharing options...
hmnc Posted March 6, 2006 Report Share Posted March 6, 2006 ja Lynx vēl to saprastu, tad nerastos šādi topiki :) Link to comment Share on other sites More sharing options...
bubu Posted March 6, 2006 Report Share Posted March 6, 2006 Manuprāt viņš labi saprot, par ko prasa. Link to comment Share on other sites More sharing options...
hmnc Posted March 6, 2006 Report Share Posted March 6, 2006 nu pag - pirmajā komentā viņš prasa kā attēlot vienus un tos pašus datus netaisot daudz vienādus querijus! khm.. jautājums drīzāk būtu kā pareizi strukturizēt iegūtos datus, bet tas jau katram kā ērtāk un atkarībā no tā kā tie dati pēctam jāizvada... nu vismaz es tā sapratu. Link to comment Share on other sites More sharing options...
Recommended Posts