Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Prosta księga gości, wpisy na początku książki
kamil_lk
post
Post #1





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


Mam pytanie. Jak zrobić, żeby wpisy w książce zapisywały się na początku, a nie na końcu np.

wpis czwarty
wpis trzeci
wpis drugi
wpis pierwszy

Wiem że jest parametr r+, ale działa on tylko wtedy kiedy plik z danymi jest już utworzony.
Poniżej podaje źródła..

index.php
  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=ISO-8859-2" />
  4. </head>
  5. <body>
  6.  
  7. <table align="center"><tr><td>
  8. <h1>KSIĘGA GOŚCI</h5>
  9. <form action="zapis.php" method="post">
  10. Nick:<br><input type="text" name="nick" value="" /><br>
  11. Treść:<br><textarea name="wpis" rows="10" cols="50"></textarea><br>
  12. <input type="submit" value="wyślij" />
  13. </form><br><br>
  14. </td></tr></table>
  15. <hr width="100%" />
  16.  
  17. <?
  18. $a= @filesize("dane.txt");
  19. if ($a)
  20. {
  21. $odczyt= fopen("dane.txt", "r");
  22. $czytaj= fread ($odczyt, filesize("dane.txt"));
  23. echo $czytaj;
  24. }
  25. else {
  26. echo "Brak wpisów.";
  27. }
  28. ?>
  29.  
  30. </body>
  31. </html>



zapis.php
  1. <html>
  2. <head>
  3. <meta http-equiv="refresh" content="3;URL=index.php">
  4. </head>
  5. <body>
  6.  
  7. <?php
  8. ini_set('display_errors','1');
  9. ?>
  10.  
  11. <?
  12. $nick= $_POST['nick'];
  13. $wpis= $_POST['wpis'];
  14. if (empty($nick) && empty($wpis))
  15. {
  16. echo "WYPEŁNIJ POLA FORMULARZA!";
  17. }
  18. else {
  19. $zapis= fopen("dane.txt", "a");
  20. fwrite($zapis, "<b>Dodał:</b> <p>".$nick."</p> <b>Wpis:</b> <p>".$wpis."</p><br><hr width=100% />");
  21. fclose($zapis);
  22. }
  23. ?>
  24.  
  25. </body></html>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




algorytm:
1) wczytujesz zawartosc pliku do zmiennej
2) doklejasz na poczatek tej zmiennej nowy wpis
3) zapisujesz te zmienna spowrotem do pliku
Go to the top of the page
+Quote Post
kamil_lk
post
Post #3





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


Cytat(nospor @ 4.06.2008, 16:25:53 ) *
2) doklejasz na poczatek tej zmiennej nowy wpis


jak to zrobić?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. $zm = 'cos';
  3. $zm = 'przed'.$zm;
  4. ?>

No toz to podstawy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kamil_lk
post
Post #5





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


tzn, że w pliku wpis.php mam otworzyć drugi raz ten sam plik, utworzyć taką samą zmienną do której dopisze to co otworzyłem?
Go to the top of the page
+Quote Post
marcio
post
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Nie qwiem czy cie dobrze zrozumialem chcesz je zapisywac na poczatku zeby miec najnowsze wpisu jako pierwsze??

Jesli tak to dlaczego nie zapiszesz ich normalnie i nie wyswietlisz w odwrotnej kolejnosci za pomoca array_reverse() ale nie wiem czy dobze cie zrozumialem
Go to the top of the page
+Quote Post
kamil_lk
post
Post #7





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


Cytat(marcio @ 4.06.2008, 16:37:27 ) *
Nie qwiem czy cie dobrze zrozumialem chcesz je zapisywac na poczatku zeby miec najnowsze wpisu jako pierwsze??

Jesli tak to dlaczego nie zapiszesz ich normalnie i nie wyswietlisz w odwrotnej kolejnosci za pomoca array_reverse() ale nie wiem czy dobze cie zrozumialem


dobrze mnie zrozumiałeś.. a jak to zrobić?
Go to the top of the page
+Quote Post
marcio
post
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $zawartosc = file('dane.txt');
  3. foreach($zawartosc as $all) $wpisy = array_reverse($all, true);
  4. echo($wpisy);
  5. ?>

Cos takiego tak na szybko zobacz jak sie wykorzystuje array_reverse()
http://www.php.ssng.info/function.array-reverse.php
Go to the top of the page
+Quote Post
-gox-
post
Post #9





Goście







Bez watpienia lepszy sposob, to zapisywanie na poczatku, zapisujesz duuuuzo rzadziej niz prezentujesz, wiec takie rozwiazanie bedzie bez watpienia znaczenie szybsze, szegolnie gdy nie wysweitlasz za jedym zamachem wszystkich wpisow..

pamietaj tylko, ze jesli plik z baza osiagnie wiekszy rozmar niz ten zadeklarowany w iniset(memory_limit), bedzie problem...
Go to the top of the page
+Quote Post
kamil_lk
post
Post #10





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


nospor.. mógłbyś rozpisać jak to zrobić? ;>
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Przecież ~nospor już to zrobił...

  1. <?php
  2. $dane=file_get_contents($plik);
  3. file_put_contents($plik, "<b>Dodał:</b> <p>".$nick."</p> <b>Wpis:</b> <p>".$wpis."</p><br><hr width=100% />".$dane);
  4. ?>


bez tych fopen() i fread()

Pozdawiam.
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: 23.08.2025 - 23:30