Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Newsy, zapis na początku pliku
Forum PHP.pl > Forum > Przedszkole
walonek
Cześć, próbowałem już 100 razy zrobić tak, żeby mi zapisywało nowe dane na początku pliku txt jednak nic nie działa sad.gif Próbowałem z funkcją rewind albo do zmiennej dodac nowe dane i wczytac jeszcze raz plik nic nie chce dzialac.
Oto kod:

  1. $temat = $_POST['temat'];
  2. $about = $_POST['about'];
  3. $zdjecie = $_POST['zdjecie'];
  4. $zdjecie2 = '<br><center><img src="'.$zdjecie.'"/></center>';
  5.  
  6. echo '<h1><center>News został dodany ;-)</center></h1>';
  7. echo '<h2><center>Temat: '.$temat.
  8. '<br>Treść: '.$about.
  9. '<br>Fotka: '.$zdjecie2.'</center>';
  10.  
  11. $news = '<center><table width="500" height="400"/><tr><td width="20%"><b><center><h3>News: </b>'.$temat.'</center></h3></td></tr><tr><td height="90%" valign="top"><b><center> Treść newsa: </b>'.$about.'<br>'.$zdjecie2.'</center></td>';
  12.  
  13.  
  14.  
  15. $plik="news.txt";
  16. $fp = fopen ("news.txt", "x") ;
  17.  
  18.  
  19. fputs($fp, $news);
  20. fclose($fp);
askone
Hej

A jakie znaczenie ma kolejność zapisu newsów w pliku txt? Sterować kolejnością wyświetlania możesz przecież poprzez skrypt wyświetlający. Wystarczy, iż zaczniesz czytać tablicę z newsami od końca posuwając się do początku...

Linki:
prev()
end()

Pozdrawiam
walonek
Chce zapisać na poczatku, bo później łatwiej to wyświetlić. A o tablicach i jak z nich korzystać nie mam zielonego pojęcia próbowałem coś , ale lipa. Więc jak zapisać txt na początku ?

Nawet jeśli to wczytam do tablicy to jak mi odczytak kod z takiego pliku ?

tak wyglada tresc pliku txt: <center><table width="500" height="400"/><tr><td width="20%"><b><center><h3>News: </b>Joli chlop</center></h3></td></tr><tr><td height="90%" valign="top"><b><center> Tre¶ć newsa: </b>jest brzydki<br><br><center><img src="http://e4.pudelek.pl/p2714/77880b02001094974aac1ce3"/></center></center></td><center><table width="500" height="400"/><tr><td width="20%"><b><center><h3>News: </b>Burj al arab</center></h3></td></tr><tr><td height="90%" valign="top"><b><center> Tre¶ć newsa: </b>7 gwiazdkowy hotel jedyny na swiecie<br><br><center><img src="http://www.flashydubai.com/images/8WondersofDubai_Burj_Al_Arab.jpg"/></center></center></td>

Są to tylko 2 newsy.
askone
Jedno słowo - masakra...

Po co zapisujesz cały kod HTML? W pliku zapisz tylko treść newsa i inne wymagane parametry np. datę dodania, osobę dodającą. Całą resztę czyli formatowanie tego do HTML zrób w PHP.

ps. poczytaj też o stylach CSS... i te tabelki....
Fafu
Nie wiem czy dziala bo pisalem tu na forum:
  1. <?php
  2. function zapiszNaPoczatku($plik, $tekst) {
  3. $dane = file_get_contents($plik);
  4. file_put_contents($plik, $tekst."\n".$dane);
  5. }
  6. ?>
walonek
Ok poradziłem sobie na własny sposób, w pliku który ma wyświetlać newsy umieściłem taki kod:

  1. $uk = fopen("news.txt", r);
  2. $tas = fread($uk, filesize("news.txt"));
  3. $tas = file_get_contents("news.txt");
  4. $ex = explode("|", $tas);
  5. echo "$ex[0]<br>";
  6. echo "$ex[1]<br>";


Teraz moje pytanie brzmi jak napisać pentle która automatycznie będzie odczytywała najnowsze wpisy i dawała je na początku. Można to robić ręcznie, ale duużo roboty ?

Do fly474: mozesz mi dokladniej wyjaśnić to formatowanie bo jedyne na co wpadłem to właśnie cale formatowanie zapisac w pliku txt.
askone
Przyjmijmy że w pliku tekstowym masz taką strukturę:
Kod
nr_newsa|data_dodania|tresć_newsa|

W każdej linii jest osobny wpis. Po odczytaniu zawartości takiego pliku i wrzuceniu do tablicy iterujesz poprzez foreach przez tę tablicę i dajesz:
Kod
<tr><td>{data}</td><td>{tresc}</td><tr>


Oczywiście {data} i {tresc} to odpowiednie pola z Twej tablicy z newsami. A moja uwaga odnośnie formatowania dotyczyła umieszczania stylu w każdym elemencie... Aby uniknąć takiego bałaganu w pliku wystarczy nadać każdemu elementowi identyfikator lub klasę i odpowiednio zadeklarować styl dla tego identyfikatora lub klasy w osobnym pliku CSS.

ps. Oczywiście stosowania tabelek nie polecam smile.gif
walonek
fly474 mógłbyś to pokazać na moich zmiennych i na moim przykładzie, bo tak na sucho nic mi to niestety nie mówi.

  1. $p=fopen("news.txt", "r");
  2. $dalej=fread($p, filesize("news.txt")); /* specjalny kod umieszczany między notatkami może być dowolny */
  3. $ide=explode("|", $dalej); $st="0"; /* wlaściwa postać pętli */
  4. while ($ide[$st] > "")
  5. {
  6. echo"$ide[$st]"; $st++;
  7.  
  8. }


Znalazłem taką pentle, jak ją przerobić żeby czytała od tyłu plik ?
askone
  1. <?php
  2. $news_array = array();
  3. $handle = @fopen("news.txt", "r");
  4. if ($handle) {
  5. while (!feof($handle)) {
  6. $buffer = fgets($handle, 4096);
  7. $item = array();
  8. $item['nr'] = strtok('|', $buffer)
  9. $item['data'] = strtok('|');
  10. $item['tresc'] = strtok('|');
  11.  
  12. $_news_array[] = $item;
  13. unset($item);
  14. }
  15. fclose($handle);
  16. }
  17. if(is_array($news_array))
  18. {
  19. foreach($news_array as $news)
  20. {
  21. i tutaj wyświetlaj....
  22. }
  23. }
  24. ?>


pisałem na sucho, więc mogą być literówki lub błędy składni. Jeśli i teraz nie załapiesz o co chodzi to skieruj się tutaj
walonek
Chyba sie poddaje nie mam pojecia jak to wyswietlic i czy to wogole dziala print_r($news_array); nic nie wyswietla wiec chyba cos jest nie tak.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.