Lokomotive Posted August 7, 2004 Report Share Posted August 7, 2004 (edited) Sveiki, Es atzīstos, ka ļoti sen neesmu ķēpājies ar php, tāpēc no jauna sāk parādīties stulbas kļūdu problēmas. ceru, ka varēsiet izpalīdzēt. Doma tāda: Direktorija "raksti" satur citas direktorijas kuras ir nosauktas pēc datumiem.. respektīvi "2004.07.31", "2004.08.01" utt. - katrā no šīm 'datumu direktorijām' ir intro.txt un start.jpg faili. Savukārt php koda uzdevums ir izdrukāt tabulas, kas izskatītos apmēram šādi: ..kā redziet, bildes un datumi tiek drukāti pareizi, bet vidējās kolumnas katrā nākamajā rindā teksti (teksti no intro.txt failiem) summējas. Kas par lietu? KODS iR sheit: <?php if ($handle = opendir('raksti')) { while (false !== ($raksts = readdir($handle))) { if ($raksts != "." && $raksts != "..") { /////////////////////////////////////// probleemas saakums/// $path = "raksti/".$raksts."/intro.txt"; $fails = file($path); foreach($fails as $vertiba ) { $vertiba = preg_replace("/\n/", "<br>", $vertiba); $intro_teksts .= "$vertiba"; } //return $intro_teksts; ////////////////////////////////////////// problemas beigas /// $intro_bilde = $raksts."/start.jpg"; echo " <tr> <td width='476' height='100' valign='top'><table width='100%' border='0' cellpadding='0' cellspacing='0' class='raksti_bot'> <!--DWLayoutTable--> <tr> <td width='100' height='100' align='center' valign='middle' class='raksti_both_ver'><img src='raksti/".$intro_bilde."' width='90' height='90'></td> <td width='10'> </td> <td width='281' valign='top'><br> ".$intro_teksts."<br></td> <td width='10'> </td> <td width='75' align='center' valign='middle' class='raksti_both_ver'>".$raksts."</td> </tr> </table></td> </tr> \n<br>"; } } closedir($handle); } ?> Direktoriju koks vareetu izskatiities shaadi: raksti __2004.07.31 ______intro.txt ______start.jpg __2004.08.01 ______start.jpg ______intro.txt Liels, liels paldies par atsaucību! Romans Edited August 7, 2004 by Lokomotive Link to comment Share on other sites More sharing options...
Roze Posted August 7, 2004 Report Share Posted August 7, 2004 Nu tapeec ka ir $intro_teksts .= "$vertiba"; Un paarejot pie naakoshaa faila tu sho mainiigo neiztuksho liidz ar to kraajas galaa.. Vajadzeetu: unset($intro_teksts); } } closedir($handle); Bet vispaar shiii koda dalja ir diezgan nejeedziiga: $path = "raksti/".$raksts."/intro.txt"; $fails = file($path); foreach($fails as $vertiba ) { $vertiba = preg_replace("/\n/", "<br>", $vertiba); $intro_teksts .= "$vertiba"; } To var novienkaarshot: $intro_teksts = nl2br(file_get_contents("raksti/".$raksts."/intro.txt")); tad taalaak nevajag arii neko unsetot.. Ja paturpinam tad nav iisti jeegas php paarseet / izvadiit statisku html liidz ar to manupraat var taisiit shaadi: <? if ($handle = opendir("raksti")) { while (false !== ($raksts = readdir($handle))) { if ($raksts != "." && $raksts != "..") { ?> <tr> <td width="476" height="100" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" class="raksti_bot"> <!--DWLayoutTable--> <tr> <td width="100" height="100" align="center" valign="middle" class="raksti_both_ver"><img src="raksti/<? echo $raksts; ?>/start.jpg" width="90" height="90"></td> <td width="10"> </td> <td width="281" valign="top"><br><? echo nl2br(file_get_contents("raksti/".$raksts."/intro.txt")); ?><br></td> <td width="10"> </td> <td width="75" align="center" valign="middle" class="raksti_both_ver"><? echo $raksts; ?></td> </tr> </table></td> </tr> <? } } closedir($handle); } ?> Link to comment Share on other sites More sharing options...
Lokomotive Posted August 8, 2004 Author Report Share Posted August 8, 2004 Paldies Roze! Viss darbojas taa kaa tam vajadzeetu darboties! Un es arii sapratu kaapeec tas ieprieksh nestraadaaja. Veelreiz paldies. Romāns Link to comment Share on other sites More sharing options...
Lokomotive Posted August 9, 2004 Author Report Share Posted August 9, 2004 Roze, saki luudzu, kaa es varu sazorteet tabulas (jaunaakais datums aukshaa), ja datums nav array? .. tas tak laikam nemaz nav iespeejams. vai ne? Link to comment Share on other sites More sharing options...
bubu Posted August 9, 2004 Report Share Posted August 9, 2004 Nu to datumu direktorijas var jau no sistēmas dabūt sakārtotā veidā Link to comment Share on other sites More sharing options...
Venom Posted August 9, 2004 Report Share Posted August 9, 2004 Roze, saki luudzu, kaa es varu sazorteet tabulas (jaunaakais datums aukshaa), ja datums nav array? .. tas tak laikam nemaz nav iespeejams. vai ne? Kas tev maisa no sākuma nolasīt visu direktoriju nosaukumus un ieglabāt tos masīvā? Te ir ļoti parocīgi, ka datumus esi saglabājis yyyy.mm.dd veidā. Izmantojot sort($array) vai rsort($array) [reverse sort] kārto masīva elementus augošā/dilstošā secībā. bubu laikam runā par funkciju glob(), vai shell_exec rezultātu pārsešanu. Link to comment Share on other sites More sharing options...
Lokomotive Posted August 9, 2004 Author Report Share Posted August 9, 2004 Venom, doma par papildus masīva izveidošanu ir ok.. ..vienīgi man veel nepielec kāpēc rsort() negrib strādāt, pat ja $key un $value ($raksts => $raksts) ir vienādi. Pēc manām ziņām rsort() būtu jāzortē pēc $key. $masiivs = array($raksts => $raksts); rsort($masiivs); print_r($masiivs); Šajā gadījumā man drukā: Array ( [0] => 2004.08.11 ) Array ( [0] => 2004.08.31 ) Array ( [0] => 2004.11.07 ) Link to comment Share on other sites More sharing options...
Venom Posted August 9, 2004 Report Share Posted August 9, 2004 nu, ja kas, vienmēr ir sort+array_reverse Link to comment Share on other sites More sharing options...
Lokomotive Posted August 9, 2004 Author Report Share Posted August 9, 2004 (edited) Venom, paturpinot šo tēmu.. nekādīgi nesaprotu kāpēc masīvu nevar sazortēt pretējā secībā.. nu murgs.. Te būs piemēriņš (iepostoju tikai daļu no koda, lai vieglāk orientēties): $raksts ir iegūts ar readdir($handle) palīdzību. $raksts_b = array($raksts); array_reverse($raksts_b); foreach($raksts_b as $raksts_c){ $datums = $raksts_c; } print($datums); Tas izdrukā šādi: 2004.08.112004.08.31 2004.11.07 .. kaut an vajadzētu šādi:2004.11.072004.08.31 2004.08.11 Liels paldies par piedalīšanos šajā.. nezin kā lai to visu nosauc.. Romāns Edited August 9, 2004 by Lokomotive Link to comment Share on other sites More sharing options...
Venom Posted August 9, 2004 Report Share Posted August 9, 2004 (edited) šis te mani godīgi pārsteida ==> $raksts_b = array($raksts); $raksts jau pats par sevīm _ir_ masīvs, vai nē? mans uzdevums nav rakstīt kodu tevis vietā, bet gan iedot ideju. Un mana ideja šobrīd iraid, ka tev jāpalasās par masīviem. un tā: $direktorijas=array(); while($rdir=readdir($dir)) $direktorijas[]=$rdir; unset($direktorijas[array_search('.',$direktorijas)]); unset($direktorijas[array_search('..',$direktorijas)]); [cut a] sort($direktorijas); $direktorijas=array_reverse($direktorijas); while($cur_dir=array_shift($direktorijas)) { .... $cur_dir=tekoša direkorija } [/cut] [cut b] sort($direktorijas); while($cur_dir=array_pop($direktorijas)) { ... } [/cur] array_reverse($raksts_b); foreach($raksts_b as $raksts_c){ $datums = $raksts_c; } print($datums); Edited August 9, 2004 by Venom Link to comment Share on other sites More sharing options...
Lokomotive Posted August 9, 2004 Author Report Share Posted August 9, 2004 šis te mani godīgi pārsteida ==> $raksts_b = array($raksts);$raksts jau pats par sevīm _ir_ masīvs, vai nē? - Ja godīgi, tad jocīgi, jo manuprāt $raksts NAV masīvs.. vismaz to paskaidro šis teikums, kad pamēģināju reversot $raksts: " Warning: array_reverse(): The argument should be an array " Starp citu, es nemaz neko nejautātu, ja to varētu izlasīt PHP manuālī, kas starp citu ir man datorā *.chm formātā, un ir atvērts praktiski visu laiku, kad plosos pa kodu. Jebkurā gadījumā, liels tev paldies par to, ko darīji manā labā. Romāns Link to comment Share on other sites More sharing options...
Venom Posted August 10, 2004 Report Share Posted August 10, 2004 Ā, tu gribēji tajā pašā kodā while (false !== ($raksts = readdir($handle))) { if ($raksts != "." && $raksts != "..") { { apstrādājam rakstu } } iekš tā "if" $raksts pataisīt par masīvu? no sākuma direktorijas "jāuzkrāj" masīvā, kas arī tiek darīts ar $dir=opendir('raksti');//handle $direktorijas=array();//sagatavojam masīvu while($rdir=readdir($dir))//kamēr ir item-i $direktorijas[]=$rdir;//pievienojam pa vienam masīva elementam Link to comment Share on other sites More sharing options...
Recommended Posts