Chickenz Posted January 5, 2005 Report Share Posted January 5, 2005 Scripts atrodas shite... http://paste.php.lv/1490 sql: CREATE TABLE `news` ( `id` int(11) NOT NULL auto_increment, `autors` varchar(255) NOT NULL default '', `laiks` varchar(255) NOT NULL default '', `ip` varchar(255) NOT NULL default '', `virsraksts` varchar(255) NOT NULL default '0', `apraksts` text NOT NULL, `raksts` text NOT NULL, `bilde` varchar(255) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1; Doma taada: moshka kaads no shejienes gudrajiem praatiem var to koodu kaut kaa optimizeet, ieteikt labaaku variantu, TJipa lai straadaaa aatraak... Ceru ka domu saprataat... Link to comment Share on other sites More sharing options...
hu_ha Posted January 5, 2005 Report Share Posted January 5, 2005 1. nu datu pārbaude ir tā kas pirmā stitās acīs: if (isset($_GET['news'])){ $news = $_GET['news']; jāpārbauda, kas tajā get tiek saņemts pirms vaicājumā bāzt; 2. mysql_fetch_array un mysql_fetch_assoc ātrdarbība ar te kaut kur ir apspriesta; 3. seko līdzi pēdiņu lietošanai: $apraksts = $row["apraksts"]; $raksts = $row['raksts']; 4. ja tabulas ir, tad vēl nekas, bet par css gan derētu padomāt; 5. man nedaleca, kāpēc tur n reizes tiek rakstīts viens un tas pats pamainot tikai vaicājumu: $db=mysql_query("SELECT * FROM news ORDER BY `id` DESC limit 2, 2"); ja jau reiz ir jēga, tad varbūt, ka vajag; tas tā garām skrienot Link to comment Share on other sites More sharing options...
Chickenz Posted January 5, 2005 Author Report Share Posted January 5, 2005 Tipa man ir taa ka zinjas tiek paraadiitas 2x2 tabulaa, taadad kopumaa chetras, tad veel ir tas ka uzspiezjot uz raxta blakus paraadaas citi raxti... Visu laiku atkaartojoties es padomaaju ka moshka kaadam ir kaadi ieteikumi kaa vareetu optimizeet lai aatraak, paarskataamaak, efektiivaak darbotos tas scripts... Link to comment Share on other sites More sharing options...
hu_ha Posted January 5, 2005 Report Share Posted January 5, 2005 es protams nesaprotu, ko tu tur īsti gribi optimizēt un par kādu ātrdarbību iet runa, ja ir elementāri sql vaicājumi un tiek atgriezti 4 ieraksti (vai kaut kā tā) vēl tam iepriekš minētajam var pievienot, lai tu pārtaisi tos html blāķus uz funkcijām, tb tev tur ir 2x izsaukts <table border="0" cellpadding="2" cellspacing="5" width="350" class="dark"> <tr> <td width="350" colspan="2"><b><a href="?news=<?=$id;?>" class="news"><?=$virsraksts;?></a></b></td> </tr> <tr> <td width="112"><img src="<?=$bilde;?>" width="100" height="115" border="1"></td> <td width="238"><div align="justify"><?=$apraksts;?></div></td> </tr> <tr> <td width="112"><font color="#444444"><b><?=$autors;?></b></font></td> <td width="238" align="right"><font color="#AAAAAA"><?=$laiks;?></font></td> </tr> </table> pārtaisi par funkciju un būs tev optimizācija un par to funkciju arhivs() ar var strīdēties, jo šaubos, ka tu viņu izsauksi vairāk kā vienu reizi. ja arī izsauksi, tad funkcijai bez parametriem nav īsti tolka, tad jau labāk likt kā include, bet nu tas jau ir vairāk piekasīšanās dēļ galveno uzmanību gribētu vērst tieši uz html, jo kā redzi, tad elementārs piemērs izvēršās par diezgan nelasāmu koda gabalu... Link to comment Share on other sites More sharing options...
hu_ha Posted January 5, 2005 Report Share Posted January 5, 2005 un vispār tas kods, ko tu tur esi ielicis, nemaz nekompilējas(nepārsējas). Par tādu "naglastj" vispār neko vairs neteikšu... :o Link to comment Share on other sites More sharing options...
Kaklz Posted January 5, 2005 Report Share Posted January 5, 2005 un par to funkciju arhivs() ar var strīdēties, jo šaubos, ka tu viņu izsauksi vairāk kā vienu reizi. ja arī izsauksi, tad funkcijai bez parametriem nav īsti tolka, tad jau labāk likt kā include, bet nu tas jau ir vairāk piekasīšanās dēļ 12516[/snapback] Tikko tu liec kaut ko kā include, tā ir uzreiz papildus faila atvēršanas, nolasīšanas un aizvēršanas operācija, kas attiecīgi nozīmē uzreiz papildus laiku pie scenārija izpildes. Bet nu pie tik sīkiem brīnumiem, kāds ir šis par to var neuztraukties :) Link to comment Share on other sites More sharing options...
hu_ha Posted January 5, 2005 Report Share Posted January 5, 2005 Tikko tu liec kaut ko kā include, tā ir uzreiz papildus faila atvēršanas, nolasīšanas un aizvēršanas operācija, kas attiecīgi nozīmē uzreiz papildus laiku pie scenārija izpildes. Bet nu pie tik sīkiem brīnumiem, kāds ir šis par to var neuztraukties :) 12518[/snapback] Tagad varam te uzsākt bezgalīgu diskusiju ne par tēmu, bet (vismaz es) ja taisu funkcijas, tad tās tiek liktas atsevišķā failā, tad tiek šis fails vajadzīgajās vietās inklūdots un attiecīgi izsaukta funkcija. Līdz ar to tas pats vien ir... Lai gan dažkārt man gribētos teikt, ka cilvēki pārāk optimizējas. Protams, neesmu speciālists par miljonu lietotāju apmeklētām lapām, bet manuprāt, parastā ziņu skriptā runāt par optimizāciju ir lieki. Optimizēt var sāk kaut kādus algoritmus, kur kaut kas sarežģīts tiek aprēķināts (draugiem.lv draugu tīkls or smth) un biežāk gribētos teikt, ka apsprāgst tieši datu bāze un nevis web serveris. Bet nu protams, pierodam rakstīt optimizētu kodu :) Link to comment Share on other sites More sharing options...
Kaklz Posted January 6, 2005 Report Share Posted January 6, 2005 Tagad varam te uzsākt bezgalīgu diskusiju ne par tēmu, bet (vismaz es) ja taisu funkcijas, tad tās tiek liktas atsevišķā failā, tad tiek šis fails vajadzīgajās vietās inklūdots un attiecīgi izsaukta funkcija. Līdz ar to tas pats vien ir... 12519[/snapback] Netaisos uzsākt bezgalīgu un nejēdzīgu diskusiju, taču tas ir viens no momentiem, kas tomēr ir jāņem vērā - ja tu katru funkciju bāzīsi savā failā un galu galā tavam PHP skriptam dzīves laikā būs jāatver teiksim 30 faili, ar garantiju, ka tas būs stipri lēnāk, nekā tad, ja tam būs jāatver tikai 10 faili. Link to comment Share on other sites More sharing options...
Venom Posted January 6, 2005 Report Share Posted January 6, 2005 eh, tavus vārdus phpBB, Mambo u.c. openCMS ausīs jau sen ārgāju uz viena index.php + dažu globālo klašu (mysql utml) izmantošanu Link to comment Share on other sites More sharing options...
hmnc Posted January 7, 2005 Report Share Posted January 7, 2005 (edited) jā! optimizācija ir ļoti laba lieta un to vienkārši vajag, jo: 1) kods izskatās zolīdāk 2) par sekundes simtdaļām arī strādā ātrāk 3) mazāk noslogojas serveris (lieki mainīgie, utt) daži padomi: if ( empty($var) ) { echo 'not set'; } vietā varam izmantot: if ( !$var ) { echo 'not set'; } vienīgi neies cauri, ja ņemsi masīvu elementus. tiem vajag isset() *** ja vajag vienkāršu pārbaudi uz jā/nē tad ļoti noder if/then/else saīsinātais variants: $viens = "ir ir !! "; $divi = "diemzheel nebuus"; $out = ($var ? $viens : $divi ); garais pieraksts būtu: if ( $var ) { $out = $viens; } else { $out = $divi; } un nemaz nerunājot par liekiem mainīgajiem: $var = $row['var']; echo '<div class="var">'.nl2br($var).'</div>'; labāk būtu : echo '<div class="var">'.nl2br($row['var']).'</div>'; un protams neaizmirstam, ka iekš mysql pastāv ne tikai SELECT * FROM table WHERE 1 = 2, bet gan ļoti daudzas citas noderīgas funkcijas ar kurām var jau viltīgi atlasīt, kārtot, ievietot un vēl visko darīt, lai samazinātu mysql pieprasījumu skaitu un php koda daudzumu. Edited January 7, 2005 by hmnc Link to comment Share on other sites More sharing options...
Venom Posted January 7, 2005 Report Share Posted January 7, 2005 Esmu pret if ( !$var ) { echo 'not set'; } un ja nu $var nav nodefinēts! isset un/vai empty _ir jālieto if (!isset($var)) echo 'not set'; empty ņem arī apakšmasīvus tālāk - stringiem lietojam apostrofus, ja vien nav labs attaisnojums: $viens = 'ir ir !!'; Link to comment Share on other sites More sharing options...
hmnc Posted January 7, 2005 Report Share Posted January 7, 2005 Venom - un ja nu.. tas ir variants.. un ja nu tu nomirsti - neiesi ārā uz ielas, nebrauksi ar mašīnu? :D :D bet nu jā. tapēc vajag funkciju, kas ķer mainīgos. vismaz ērtāk izmantot. labs iemesls lietot " " ir echo "new line\n"; Link to comment Share on other sites More sharing options...
rumpels Posted January 7, 2005 Report Share Posted January 7, 2005 labāk būtu : echo '<div class="var">'.nl2br($row['var']).'</div>'; 12572[/snapback] <div class="var"><?=nl2br($row['var'])?></div> Link to comment Share on other sites More sharing options...
hmnc Posted January 7, 2005 Report Share Posted January 7, 2005 <div class="var"><?=nl2br($row['var'])?></div> 12589[/snapback] skatoties no kura gala ņem. mans piemērs bija: html iekš php. tavs: php iekš html ;) Link to comment Share on other sites More sharing options...
rumpels Posted January 7, 2005 Report Share Posted January 7, 2005 <table border="0" cellpadding="2" cellspacing="5" width="350" class="dark"> <tr> <td width="350" colspan="2"><b><a href="?news=<?=$id;?>" class="news"><?=$virsraksts;?></a></b></td> </tr> <tr> <td width="112"><img src="<?=$bilde;?>" width="100" height="115" border="1"></td> <td width="238"><div align="justify"><?=$apraksts;?></div></td> </tr> <tr> <td width="112"><font color="#444444"><b><?=$autors;?></b></font></td> <td width="238" align="right"><font color="#AAAAAA"><?=$laiks;?></font></td> </tr> </table> run'ajot par html izvadi ieteiktu bildi un aprakstu nelikt katru sava td bet gan floutot ar stila palidzibu, redzams ka teu ir kadcs .css failinsh ta ka iemet: <style>img { float: left; width: 100px; height: 115px; border: 1px solid #999; margin-right: 1em; } </style> <tr> <td width="350" colspan="2"><img src="<?=$bilde;?>"><div align="justify"><?=$apraksts;?></div></td> </tr> tas taada apsveruma delj ja $apraksts ir diezgan garsh tad nu ne ipashi acij patikami izskatas kopeji un bildes ja vien katru reizi netaisi tieshi tada lieluma labak jau butu likt kadus max platumus un augstumus joshada veida ja nav resolutija proporcionala bilde izstiepjas vai saraujas Link to comment Share on other sites More sharing options...
Recommended Posts