Mighty Posted February 2, 2009 Report Share Posted February 2, 2009 Sveiki. Man ir tāda lieta, ka es taisu mazu lapiņu zem html - prosta tagi,info utt. Vai ir iespējams izveidot ko tādu, ka jaunumu komenti tiek saglabāti vienkārši piemēram txt failā un tad no tā txt faila izvelk tos komentus ārā? :) Link to comment Share on other sites More sharing options...
Aleksejs Posted February 2, 2009 Report Share Posted February 2, 2009 Jā ir iespējams. PHP forumu saturā ir šis: datu glabāšana failā ar atdalītājsimboliem un to apstrāde * http://php.lv/f/index.php?showtopic=1707 * http://php.lv/f/index.php?showtopic=1761 Link to comment Share on other sites More sharing options...
Mighty Posted February 2, 2009 Author Report Share Posted February 2, 2009 Dankešõn, palasīšos - piedodiet ka man tik līkas rokas - nezināju kā meklētājā to noformulēt :) Link to comment Share on other sites More sharing options...
codez Posted February 2, 2009 Report Share Posted February 2, 2009 Gadījumā, ja grib glabāt datus, neizmantojot atsevišķu DB serveri, tad txt faila vietā var izmantot arī http://lv.php.net/manual/en/book.sqlite.php Link to comment Share on other sites More sharing options...
Mighty Posted February 2, 2009 Author Report Share Posted February 2, 2009 (edited) Saliku - viss strādā, bet tagad es atkal(lūdzu nedusmojaties :D) - nevaru izdomāt kā uztaisīt komentāra ievietošanas tabulu. Ar komentāru izprintēšanu viss ir okei - Bet kā lai piespiež viņu ievietot to komentāru tajā teksta failā? P.S. Pamanīju ka ja uzrādās viens un tas pats datums (piemēram 03.12.2004|Jānis|komentārs BLĀ| 03.12.2004|Juris|komentārs BLĀ| 04.12.2004|Jānis|komentārs BLĀ| ) viņš izprintē tikai un vienīgi pēdējo tā datuma komentāru - varbūt kāds zin kas par vainu? Rekur tas kods, ko paņēmu :) <?php $fileData = file('jaunums1.txt'); $messageList = array(); foreach ($fileData as $row){ list($date, $user, $msg) = explode('|', $row); list($d, $m, $Y) = explode('.', $date); $timestamp = mktime(0, 0, 0, $m, $d, $Y); $messageList[$timestamp] = array('date' => $date, 'user' => $user, 'msg' => $msg); } ksort($messageList); ?> Edited February 2, 2009 by Mighty Link to comment Share on other sites More sharing options...
Mighty Posted February 2, 2009 Author Report Share Posted February 2, 2009 Sorry par dubultpostu - bet vai kāds nevarētu uzvedināt uz domu pareizo? :) Link to comment Share on other sites More sharing options...
codez Posted February 3, 2009 Report Share Posted February 3, 2009 Tad, kad ir divi vienādi datumi, tad tu vienmēr pārraksti pa virsu masīvā jau esošam datumam šajā vietā: $messageList[$timestamp] Link to comment Share on other sites More sharing options...
Mikijs Posted February 3, 2009 Report Share Posted February 3, 2009 (edited) nezinu vai shis strada bet es aiz neko darit uztaisiju kko sadu <?php $html="<tr> <td align=\"center\">[[:datums:]]</td> <td align=\"center\">[[:niks:]]</td> <td>[[:komentars:]]</td> </tr>": switch($_GET["type"]) { case 1: if($_POST) { $nick=htmlspecialchars($_POST["username"]); $comment=str_replace("\n","<br>",htmlspecialchars($_POST["comment"])); $date=date("Y-m-d (H:i)"); $f=fopen("comments.com","w"); fwrite($f,stripslashes("$date<>$nick<>$comment\n")); fclose($f); echo "<script type='text/javascript'> window.location='?'; </script>"; } $izvade="<form method='post' action='".$_SERVER["REQUEST_URI"]."'> <h3>Pievienot ierakstu</h3> Niks<br> <input type=\"text\" name=\"username\"><br> Komentars<br> <textarea name=\"comment\"></textarea><br> <input type=\"button\" onclick=\"if(document.addc.username.value&&document.addc.comment.value) { document.addc.submit(); } else { alert('Aizpildiet visus lauciņus'); } \" value=\"Pievienot\"> </form>"; break; default: $izvade="<a href='?type=1'>pievienot</a><Br><table border='0' width='100%'><tr><td>datums</td><td>niks</td><td>komentars</td></tr>"; $komentari=file_get_contents("comments.com"); $dati=explode("\n",$komentari); for($i=0;$i<count($dati);$i++){ $komentars=explode("<>",$dati[$i]); $tmp=str_replace("[[:datums:]]",$dati[0],$html); $tmp=str_replace("[[:niks:]]",$dati[1],$tmp); $tmp=str_replace("[[:komentars:]]",$dati[2],$tmp); $izvade.=$tmp; } $izvade.="</table>"; break; } //Izvade echo($izvade); ?> Edited February 3, 2009 by Mikijs Link to comment Share on other sites More sharing options...
bubu Posted February 3, 2009 Report Share Posted February 3, 2009 Kāpēc tev patīk tik traki eskeipot tās pēdas? $html="<tr><td align=\"center\">[[:datums:]]</td>"; vietā raksti: $html='<tr><td align="center">[[:datums:]]</td>'; vai arī: $html="<tr><td align='center'>[[:datums:]]</td>"; Kods sanāktu daudz lasāmāks. Link to comment Share on other sites More sharing options...
Mighty Posted February 3, 2009 Author Report Share Posted February 3, 2009 Paldies par cenšanos palīdzēt - bet neiet. Un codez - kā to izlabot? 1. Nekas nenotiek, kad ierakstot niku/komentu uzspiež pievienot. 2. Tajā komentu tabulā viņš izvada visu ailīti, nevis tikai komentāru/datumu/niku :) Mazliet pačakarējos, bet tā arī nespēju izdomāt kur vaina. Kods pašlaik ir šāds = <?php $fileData = file('jaunums1.txt'); $messageList = array(); foreach ($fileData as $row){ list($date, $user, $msg) = explode('|', $row); list($d, $m, $Y) = explode('.', $date); $timestamp = mktime(0, 0, 0, $m, $d, $Y); $messageList[$timestamp] = array('date' => $date, 'user' => $user, 'msg' => $msg); } ksort($messageList); ?> <p>Komentāri</p> <table> <tr> <th class="first"><strong>Datums</strong></th> <th>Vārds</th> <th>Komentārs</th> </tr> <? foreach ($messageList as $key => $message){ echo '<td><i>'.$message['date'].'</i></td> <td><b>'.$message['user'].'</b></td> <td>'.$message['msg'] . '</td></tr>'; }?> </tr> </table> <? $html="<tr> <td align=\"center\">[[:datums:]]</td> <td align=\"center\">[[:niks:]]</td> <td>[[:komentars:]]</td></tr>"; switch($_GET["type"]) { case 1: if($_POST) { $nick=htmlspecialchars($_POST["username"]); $comment=str_replace("\n","<br>",htmlspecialchars($_POST["comment"])); $date=date("Y-m-d (H:i)"); $f=fopen("jaunums1.txt","w"); fwrite($f,stripslashes("$date<>$nick<>$comment\n")); fclose($f); echo "<script type='text/javascript'> window.location='?'; </script>"; } $izvade="<form method='post' action='".$_SERVER["REQUEST_URI"]."'> <h3>Pievienot komentāru</h3> Niks<br> <input type=\"text\" name=\"username\"><br> Komentārs<br> <textarea name=\"comment\"></textarea><br> <input type=\"button\" onclick=\"if(document.addc.username.value&&document.addc.comment.value) { document.addc.submit(); } else { alert('Aizpildiet visus lauciņus'); } \" value=\"Pievienot\"> </form>"; break; default: $izvade="<a href='?type=1'>pievienot</a><Br><table border='0' width='100%'><tr><td>datums</td><td>niks</td><td>komentars</td></tr>"; $komentari=file_get_contents("jaunums1.txt"); $dati=explode("\n",$komentari); for($i=0;$i<count($dati);$i++){ $komentars=explode("<>",$dati[$i]); $tmp=str_replace("[[:datums:]]",$dati[0],$html); $tmp=str_replace("[[:niks:]]",$dati[1],$tmp); $tmp=str_replace("[[:komentars:]]",$dati[2],$tmp); $izvade.=$tmp; } $izvade.="</table>"; break; } //Izvade echo($izvade); ?> Man jau liekas, ka "onclick=\"if(document.addc.username.value&&document.addc.comment.value) { document.addc.submit(); } else { alert('Aizpildiet visus lauciņus'); } \" value=\"Pievienot\">" šeit kkur jābūt vainai. Joprojām man aktuālas paliek tās divas lietas 1. Kā likt viņam ievietot failā (šobrīd ar nosaukumu "jaunums1.txt" info "komentārs/niks/datums". 2. Kā viņam likt izprintēt visus komentārus ar vienādu datumu. Link to comment Share on other sites More sharing options...
Mighty Posted February 3, 2009 Author Report Share Posted February 3, 2009 Kāds vismaz var pateikt kā šito googlē meklēt? :) Neko nespēju izdomāt - atmetu Mikija doto kodu, nevaru neko tur sataisīt. Palieku pie tā Alekseja dotā linkā esošā, Joprojām man aktuālas paliek tās divas lietas 1. Kā likt viņam ievietot failā (šobrīd ar nosaukumu "jaunums1.txt" info "komentārs/niks/datums". 2. Kā viņam likt izprintēt visus komentārus ar vienādu datumu. Link to comment Share on other sites More sharing options...
Aleksejs Posted February 3, 2009 Report Share Posted February 3, 2009 Pirmais punkts: Pārbaudam, ka mainīgie $komentars, $niks un $datums nesatur simbolu "/", jo tas tiks izmantots atdalīšanai. Izveidojam ievietojamo tekstu, ko ierakstām mainīgajā $saglabajamais = "$komentars/$niks/$datums"; Aizvietojam mainīgajā visus pārnesumus jaunā rindā ar <br> - lasam par funkciju nl2br(); Ar komandu fopen() atveram failu "jaunums.txt". Fails ir jāatver režīmā, kad "rakstīšanas galviņa atrodas faila beigās" - tādēļ izlasām to, kas rakstīts par fopen() padodamo otro parametru: http://lv.php.net/manual/en/function.fopen.php Ar komandu fwrite() ierakstām mainīgā $saglabajamais saturu failā Ar komandu fclose() aizveram failu. Otrais punkts: Vispārīga risinājuma nav, bet es laikam darītu tā: Lasītu pa rindai iekšā datus ar fgets(); Sadalītu pa trijiem mainīgajiem $komentars, $niks, $datums ar explode() palīdzību Liktu pāri $komentars un niks masīvā, kuram kā atslēgu liktu mainīgo $datums: $komentaru_masivs[$datums][]=Array($komentars, $niks); Izdrukātu vajadzīgā datuma visus komentārus un nikus: foreach($komentaru_masivs[$interesejosais_datums] as $komentars_ar_niku){ echo 'Komentārs ir: ' . $komentars_ar_niku[0] . ' un autors ir ' . $komentars_ar_niku[1]; } Kā parasti, varbūt ātrumā rakstot kaut kur ir ieviesusies kāda sintakses kļūda, bet domāju, ka ideja ir skaidra. Link to comment Share on other sites More sharing options...
Recommended Posts