Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Księga gości
Forum PHP.pl > Forum > Przedszkole
Olme
Mam już napisaną księgę gości.

Formularz wpisu (nie jest potrzebny w rozwiązaniu problemu, ale dołączam go, może ktoś skorzysta z niego):
  1. <LINK href="../skrypt/menupluspage.css" type=text/css rel=stylesheet>
  2. <META content="text/html; charset=iso-8859-2" http-equiv=Content-Type>
  3. <TITLE> Księga gosci </TITLE>
  4.  
  5. </HEAD>
  6.  
  7. <BODY BACKGROUND=../grafika/dk.jpg>
  8.  
  9. <TABLE BACKGROUND=../grafika/dk.jpg WIDTH=702 BORDER=0><TBODY>
  10. <TR>
  11.  
  12. <TD COLSPAN=2 ALIGN=center CLASS=pkpbig>
  13. Tutaj możesz wpisać się do mojej księgi gosci!
  14. </TD>
  15. </TR>
  16.  
  17. <TR>
  18.  
  19. <TD COLSPAN=2 HEIGHT=25>
  20. </TD>
  21. </TR>
  22.  
  23.  
  24. <TR CLASS=news>
  25.  
  26. <FORM METHOD="post" action="wpis.php">
  27.  
  28.  
  29. <TD WIDTH=200>
  30. Twoje imię lub pseudonim:
  31. </TD>
  32. <TD WIDTH=502>
  33. <INPUT TYPE="text" name="imie">
  34. </TD>
  35. </TR>
  36.  
  37. <TR CLASS=news>
  38. <TD>
  39. Adres e-mail:
  40. </TD>
  41. <TD>
  42.  
  43. <INPUT SIZE=30 TYPE="text" name="email">
  44. </TD>
  45.  
  46. </TR>
  47.  
  48. <TR CLASS=news>
  49. <TD>
  50. Strona www:
  51. </TD>
  52. <TD>
  53.  
  54. <INPUT SIZE=30 TYPE="text" name="www" VALUE="http://">
  55. </TD>
  56.  
  57. </TR>
  58.  
  59.  
  60. <TR CLASS=news>
  61.  
  62. <TD COLSPAN=2>
  63. Twój wpis:
  64. </TD>
  65. </TR>
  66.  
  67. <TR>
  68. <TD COLSPAN=2>
  69. <TEXTAREA NAME="wpis" ROWS="2" COLS="29" WRAP="on">
  70.  
  71. &nbsp&nbsp&nbsp
  72.  
  73. <INPUT type="submit" VALUE="Dodaj wpis do księgi">
  74. </FORM>
  75. </TD></TR>
  76. </BODY>
  77. </HTML>


plik zapisujący:

  1. <HTML>
  2. <HEAD>
  3. <meta http-equiv="refresh" content="1; URL=pokazwpisy.php">
  4. <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  5. <TITLE> Wpisy do księgi </TITLE>
  6. </HEAD>
  7. <BODY BACKGROUND=../grafika/dk.jpg>
  8. <?php
  9. $date=date("d.m.Y, H:i:s");
  10. $wpis=$_POST["wpis"];
  11. $imie=$_POST["imie"];
  12. $email=$_POST["email"];
  13. $www=$_POST["www"];
  14.  
  15. $plik=fopen("wpis.txt", "a");
  16. fputs($plik, "<TR><TD WIDTH=200 HEIGHT=25>Data wpisu:</TD><TD HEIGHT=25 WIDTH=602> $date</TD></TR><TR><TD HEIGHT=25>Twoje imię lub pseudonim:</TD><TD HEIGHT=25> $imie</TD></TR>
  17. <TR><TD HEIGHT=25>Adres e-mail:</TD><TD HEIGHT=25><A CLASS=news HREF=mailto:$email>$email</A></TD></TR>
  18. <TR><TD HEIGHT=25>Strona www:</TD><TD HEIGHT=25><A CLASS=news HREF=$www>$www</A></TD></TR>
  19. <TR><TD HEIGHT=29>Tresć wpisu:</TD><TD HEIGHT=29>$wpis</TD></TR>
  20. <TR><TD COLSPAN=2 HEIGHT=1 WIDTH=700 BACKGROUND=grafika/ddk.jpg ALIGN=center>--------------------------------------------</TD></TR>
  21. ");
  22. fclose($plik);
  23.  
  24. ?>
  25.  
  26. <BR><BR><BR>
  27. Wpis został dodany! Zaczekaj chwilę, zabieram Cię do księgi!
  28.  
  29.  
  30. </BODY>
  31. </HTML>


Ja to widzę tak, że trzeba by jeszcze stworzyć drugi plik do przechowywania postów na chwilę. Po dodaniu posta będzie on wstawiany do pliku wpis.txt, który będzie wtedy wyczyszczony, bo jego zawartość zostanie przekopiowana do pliku wpis2.txt, który przed tą operacją też będzie wyczyszczony.

Próbowałem też wstawić
  1. <? include('wpis2.txt'); ?>
pod skryptem zapisującym dane z formularza, ale coś mi się zawiesiło.

Ma ktoś z Was pomysł na rozwiązanie tego problemu?
Pigula
tak troche nie rozumiem chyba problemu ale wydaje mi sie ze Ci chodzi zeby wpisy byly wyswietlane od najnowszego do najstarszego?!? a wiec wczytujesz plik do tablicy za pomoca file i wyswietlasz w petli od ostatniego elementu do zerowego. mam nadzieje ze o to Ci chodzilo nie musisz miec zadnego drugiego pliku. aha poczytaj sobie jeszcze o flock przy zapisywaniu i odczytywaniu
Olme
Niestety, nadal nie wiem jak się do tego zabrać. Przejrzenie w manualu funkcji file" title="Zobacz w manualu php" target="_manual nie pomogło mi. O jakie pętle Ci chodziło?
strife
Cytat(Olme @ 2005-08-26 19:14:03)
Niestety, nadal nie wiem jak się do tego zabrać. Przejrzenie w manualu funkcji file" title="Zobacz w manualu php" target="_manual nie pomogło mi. O jakie pętle Ci chodziło?

Wczytujesz do tablicy file" title="Zobacz w manualu php" target="_manual, potem odwracasz tablicę aby było od najnowszego do najstarszego array_reverse" title="Zobacz w manualu php" target="_manual, i do pętli przy wyświetlaniu foreach" title="Zobacz w manualu php" target="_manual.

btw. też nie wiem czy dobrze zrozumiałem tongue.gif
Olme
Dzięki! Wypróbuje to.


Tak, dobrze zrozumieliście, przecież napisałem w temacie: "Księga gości, Chcę, aby najnowszy wpis był na górze".
Czyli od najnowszych do najstarszych.

--
Aha, czyli w takim razie mogę sobie zrobić coś takiego, że użytkownik będzie mógł wybrać sposób prezentacji wpisów od najstarszych do najnowszych lub na odwrót.
ActivePlayer
Dodatkowo, aby zaoszczędzic miejsce w pliku, mozesz zapisac kolejne wpisy w postaci
Kod
osoba||data||wpis||costam_jeszcze


a potem, kiedy odczytujesz funkcją file, wykonać explode()" title="Zobacz w manualu php" target="_manual i wstawic wartosci w kod html. zauwaz ze w Twoim pliku bardzo duzo miejsca zajmuje kod html (mowie o pliku w ktorym zapisujesz wpisy). Dodatkowo, to rozwiązanie nie pozwala Ci na łatwą zmianę wyglądu całosci... nie mozesz zmienic wyswietlania, nie modyfikując wpisów...
NuLL
http://forum.php.pl/index.php?showtopic=32251&hl=

Może się przydać - konwersja newsów na księgę to nic trudnego smile.gif
Morek
Też kiedyś miałem ten problem wystarczy dobrze poszukać na forum. Bo ja tu znalazłem właśnie odpowiedź.

No ale niech będzie, zrób tak najpier zapisz(przypisz) posta do zmiennej, potem odczytaj całą zawartość z pliku i ją skasuj. Teraz do czystego pliku zapisujesz zmienną z nowym newsem a potem to co było wcześniej w pliku.

I już możesz w stronie z KG dać zawartość pliku z "include".

Poniżej masz przykład z mojej KG.

  1. <?php
  2. $file="ogloszenia.txt";
  3. $nowy_news = "<tr><td bgcolor=lightgray align=left width=500 valign=top>
  4. <font class="tekst">
  5. <b>Kto: - </b>$nick | <b>GG:</b> - $tel | <b>Kontakt:</b> - <a href="mailto:$mail">$mail</a><BR>
  6. </td></tr>
  7. <tr><td align=left width=500 valign=top>
  8. <font class="tekst"><div align=justify>
  9. <BR>$tekst<br><hr size=1 color=black><BR>
  10. </td></tr>
  11.  
  12. ";
  13.  
  14. //odczytujemy zawartosc pliku
  15. $fp=fopen("$file", "r");
  16. flock($fp, 1);
  17. $file_contents = fread($fp, filesize($file));
  18. flock($fp, 3);
  19. fclose($fp);
  20.  
  21. //zapisujemy nowego news-a i wczesniej odczytane dane do pliku
  22. $fp=fopen("$file", "w");
  23. flock($fp, 2);
  24. fwrite($fp, "$nowy_newsn$file_contents");
  25. flock($fp, 3);
  26. fclose($fp);
  27. echo("<center><b>Wpis dodany!</b></center><BR>");
  28. }
  29. }
  30.  
  31. ?>
Olme
Morek, wielkie dzięki!

Działa!
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.