Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Odczytanie i wyswietlenie danych z pliku
rad3ks
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.12.2009

Ostrzeżenie: (0%)
-----


Witam.

Napisałem taki prosty kod:
  1. <?php
  2. echo '<html>
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  5. </head>
  6. <body>
  7. <a href="test.php?action=add">Dodaj swój wpis</a><br>
  8. <a href="test.php">Pokaż wpisy</a>';
  9.  
  10. $action=$_GET['action'];
  11. if ($action==add) {
  12. echo '<form action="test.php?action=write" method="POST">
  13. <input type="text" value="wpisz nick" name="nick"><br>
  14. <textarea name="text">Wpisz swój tekst</textarea><br>
  15. <input type="submit" value="Wyślij">
  16. <input type="reset" value="Wyczyść">
  17. </form>
  18. <hr>';
  19. }
  20. $file = "file.txt";
  21. $size=filesize($file);
  22. if ($size<=0) {
  23. $size=1;
  24. }
  25. if ($action==write) {
  26. $nick = $_POST['nick'];
  27. $text = $_POST['text'];
  28. $fp = fopen($file, "a");
  29. $wpis = fread($fp, $size);
  30. $wpis = unserialize($wpis);
  31. $i = count($wpis);
  32. $wpis[$i++]['nick'] = $nick;
  33. $wpis[$i++]['text'] = $text;
  34. fwrite($fp, serialize($wpis));
  35. fclose($fp);
  36. echo "Pomyślnie dodano wpis!";
  37. }
  38. if ($action!=add && $action!=write) {
  39. $fp = fopen($file, "r");
  40. $wpis = fread($fp, $size);
  41. $wpis = unserialize($wpis);
  42. for ($i=0; $i==count($wpis); $i++) {
  43. echo $wpis[$i]['nick'];
  44. echo '<br>';
  45. echo $wpis[$i]['text'];
  46. echo '<br><hr><br>';
  47. }
  48. fclose($fp);
  49. }
  50. echo '</body></html>';
  51. ?>


Wpis jest dodawany do pliku, zapisywany itd. Nie działa odczyt lub wyświetlenie. Czy ktoś może mi pomóc w nauce ?

Pozdrawiam,
Radek
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #2





Goście







Ja bym to zrobił tak:

Kod
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
<body>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=add">Dodaj swój wpis</a><br>
<a href="<?php echo $_SERVER['PHP_SELF']; ?>">Pokaż wpisy</a>

<?php
$file = 'file.txt';

    
switch ($_GET['action'])
{
  case 'add':
        echo '<form action="' . $_SERVER['PHP_SELF'] . '?action=write" method="POST">
            <input type="text" value="wpisz nick" name="nick"><br>
            <textarea name="text">Wpisz swój tekst</textarea><br>
            <input type="submit" value="Wyślij">
            <input type="reset" value="Wyczyść">
            </form>
            <hr>';
    break;  

  case 'write':
    $nick = $_POST['nick'];
        $text = $_POST['text'];        
    $wpisy = file_get_contents($file);
        $wpisy .= "\n" . $_POST['nick'] . '|' . $_POST['text'];
        file_put_contents($file, $wpisy);
        echo  "Pomyślnie dodano wpis!";
    break;  

default:
        $wpisy = explode("\n", file_get_contents($file));
        $ilosc_wpisow = count($wpisy);

        for ($i = 0; $i < $ilosc_wpisow; $i++)
    {
            $wpis = explode('|', $wpisy[$i]);
            echo '<p>';
      echo '<b>Autor:</b> ' . $wpis[0];
            echo '<br />';
            echo '<b>Wpis:</b>';
      echo '<br />' . $wpis[1];
            echo '</p><br />';
        }
      break;
}

?>
</body>
</html>
Go to the top of the page
+Quote Post
rad3ks
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.12.2009

Ostrzeżenie: (0%)
-----


Wielkie dzięki za otwarcie oczu.
Jest jedynie niewielki problem, z którym nie potrafie sobie poradzić. Podczas wyświetlania pliku dodawany jest na poczatku listy Autor: i Wpis: bez treści. Jak z tym sobie poradzić?
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #4





Goście







Zmodyfikuj fragment default tak:

Kod
default:
$wpisy = trim(file_get_contents($file));
        $wpisy = explode("\n", $wpisy);
        $ilosc_wpisow = count($wpisy);

if($ilosc_wpisow > 0)
{
        for ($i = 0; $i < $ilosc_wpisow; $i++)
    {
            $wpis = explode('|', $wpisy[$i]);
            echo '<p>';
      echo '<b>Autor:</b> ' . $wpis[0];
            echo '<br />';
            echo '<b>Wpis:</b>';
      echo '<br />' . $wpis[1];
            echo '</p><br />';
        }
}
else
{
   echo 'Brak wpisów';
}
      break;
Go to the top of the page
+Quote Post
rad3ks
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.12.2009

Ostrzeżenie: (0%)
-----


ahh tez mogłem na to wpaść, dzieki (IMG:style_emoticons/default/smile.gif)
pojawił się jeszcze jeden mały problem:
Cytat
Notice: Undefined index: action in /Applications/MAMP/bin/mamp/test.php on line 13


błąd ten wyświetla się tylko przy oglądaniu wpisów

linia 13:
  1. switch ($_GET['action'])

Czy chodzi o to, że nie została przesłana wartość action przez GET? Czy jeżeli zrobie wyświetlanie wpisow wszedzie prócz action=write to bedzie ok? (mozna napisac osobna funkcje na wyswietlanie wpisow i dodać ją na koniec kodu ?
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #6





Goście







Możesz napisać funkcję, nie ma z tym problemu.
A z komunikatem to zamień początek switch na:

Kod
$action = (isset($_GET['action'])) ? $_GET['action'] : 'none';
switch ($action)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 22:39