Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][txt]Źle działający FEOF?
Forum PHP.pl > Forum > Przedszkole
Chester47
Witam. Przejdę od razu do rzeczy. Ćwiczę swoje umiejętności z php i zrobiłem mini system komentarzy opartych na pliku tekstowym. Niby w miarę działa, ale po dodaniu komentarza i jego wyświetleniu powstaje dodatkowa tabelka, tak jakby pętla źle działała. Można to zobaczyć na stronie www.robertoz.prv.pl.

Fragment kodu, który odczytuje komentarze z pliku tekstowego (najpierw odczytuje wiersze, potem rozbija je na tablice z danymi):
  1. <?php
  2. $czesci_koment = array(); // tablica, w której sa poszczególne dane
  3.  
  4. if ( (!file_exists("komentarze.txt")) || (filesize("komentarze.txt") == 0) ) //jesli plik nie istnieje lub jest pusty
  5. echo '<table id="viewcomms"><tr><td class="nocomm">Brak komentarzy</td></tr></table>';
  6.  
  7. else
  8. {
  9. @ $plik = fopen("komentarze.txt", 'rb');
  10. if (!$plik) // w razie błędu
  11. {
  12. echo '<table id="viewcomms"><tr><td>Bład techniczny. Przepraszamy.</td></tr></table></body></html>';
  13. }
  14.  
  15.  
  16. while (!feof($plik))
  17. {
  18. $czesci_koment = fgetcsv($plik, 700, "\t"); //tablica, 0-autor, 1-czas dodania, 2-tresc, 3(opcjon.)-gg
  19. if (strlen($czesci_koment[3]) > 0) // jesli jest podane gg
  20. {
  21. $uplynelo = intval(((time()-$czesci_koment[1])/60)); // czas (w minutach), który upłynał od wysłania posta
  22.  
  23. echo '<table id="viewcomms"><tr><td style="width: 130px">'.$czesci_koment[0].'</td>
  24. <td>'.$uplynelo.' minut temu</td></tr>
  25. <tr><td colspan="2">'.htmlspecialchars($czesci_koment[2]).'</td></tr></table>';
  26. }
  27. else // je?li nie jest podane gg
  28. {
  29. $uplynelo = intval(((time()-$czesci_koment[1])/60));
  30.  
  31. echo '<table id="viewcomms"><tr><td style="width: 130px"><a href="gg:'.$czesci_koment[3].'">'.$czesci_koment[0].'</a></td>
  32. <td>'.$uplynelo.' minut temu</td></tr>
  33. <tr><td colspan="2">'.htmlspecialchars($czesci_koment[2]).'</td></tr></table>';
  34. }
  35. }
  36. fclose($plik);
  37.  
  38. }
  39. ?>

strife
Strona na której można było to zobaczyć wywala 403 (brak uprawnień).
Chester47
sorki, www.robertoz.prv.pl/formularz.php

zmieniłem trochę kod i działa. Ale nadal nie wiem czym to było spowodowane.
  1. while (!feof($plik))
  2. {
  3. $czesci_koment = fgetcsv($plik, 700, "\t"); //0-autor, 1-czas dodania, 2-tresc, 3(opcjon.)-gg
  4. if (strlen($czesci_koment[3]) > 0) // je?li jest podane gg
  5. {
  6. $uplynelo = (intval((time()-$czesci_koment[1])/60)); // czas (w minutach), który upłynął od wysłania posta
  7.  
  8. if ( (empty($czesci_koment[0])) || (empty($czesci_koment[2])) ) // jeśli brak autora lub treści, przerwij
  9. break;
  10.  
  11. echo '<table id="viewcomms"><tr><td style="width: 130px">'.$czesci_koment[0].'</td>
  12. <td>'.$uplynelo.' minut temu</td></tr>
  13. <tr><td colspan="2">'.htmlspecialchars($czesci_koment[2]).'</td></tr></table>';
  14. continue;
  15. }
  16. else // je?li nie jest podane gg
  17. {
  18. $uplynelo = intval(((time()-$czesci_koment[1])/60));
  19.  
  20. if ( (empty($czesci_koment[0])) || (empty($czesci_koment[2])) )
  21. break;
  22.  
  23. echo '<table id="viewcomms"><tr><td style="width: 130px"><a href="gg:'.$czesci_koment[3].'">'.$czesci_koment[0].'</a></td>
  24. <td>'.$uplynelo.' minut temu</td></tr>
  25. <tr><td colspan="2">'.htmlspecialchars($czesci_koment[2]).'</td></tr></table>';
  26. continue;
  27. }
  28. }
  29. fclose($plik);
  30.  
  31. }

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.