Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Księga gości
_bezimienny
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 19.03.2006
Skąd: Wisła

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


Mam pewien problem. Chcę zrobić księgę gości opartą na plikach. Zatem...
Mam bazę danych w pliku baza.txt:
Cytat
user1|user1@mail.pl|wpis1
user2|user2@mail.pl|wpis2


Nastęnie zrobiłem skrypt czytający poszczególne dane:
  1. <?php
  2.  
  3. $j=1; // 1, bo są 2 wpisy
  4. for($i=$j; $i>0;$i--) // $i jest inkrementowane, żeby najnowsze były pierwsze
  5. {
  6. $user = file("baza.txt");
  7. $data = $user[$i];
  8. list($nick, $email, $wpis) = explode("|", $data);
  9. echo "$nick<br>";
  10. echo "$email<br>";
  11. echo "$wpis<br>";
  12. }
  13.  
  14. ?>

Chyba jest zrozumiały...

Teraz mój problem. Wyświetla mi tylko 1 wpis. Za pierwszym obiem $i=1, ok, skrypt działa, za drugim razem $i=0 - nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Nie wiem też jaką użyć funkcję, aby zczytało ile jest linijek w pliku :/ Być może lepiej użyć jakąś inną pętlę :?:

Prosze o pomoc!
pozdr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Maveilthain
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 27.02.2006
Skąd: Recz

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


Witam.

Mam problem odnośnie księgi gości i update'u.
Wykorzystałem kod z książki "php 101 praktycznych skryptów" przerabiając go na Update do stronki aktualności. (tylko członkowie strony znają link do updatowania)

Struktura jest następująca:

- add.temp - formularz dodawania
- index.php - plik inkluduje 'main.temp'
- main.temp - cały wygląd stronki, który inkluduje na górze strony 'add.temp'a potem 'update.php'
- update.php - plik otwierający i wyświetlający wpisy
- update.txt - baza wpisów.

Wszystko działa nawet dobrze, za wyjątkiem odświerzania, bo gdy ktoś sobie wypełni formularz i klinknie na 'wyślij' to widzi nowy swój wpis, natomiast gdy klinkinie na 'odświerz' w swojej przeglądarce to kopiuje mu się ostatni wpis i jeżeli będzie tysiące razy klikał to powstanie tysiące takich samych wpisów - użyłem CHMODów i nic
może jakieś ?flock()? nie wiem jak zmodyfikować pomocy.
Oto kody:

add.temp
  1. <STYLE TYPE="text/css">
  2.    table {vertical-align: MIDDLE;}
  3.  </STYLE>
  4.  
  5. <FORM   ACTION="../update/index.php"
  6.        METHOD="post">
  7. <CENTER><TABLE  WIDTH="556" BORDER="1" CELLPADDING="0" CELLSPACING="0">
  8. <TR>
  9.    <TD>News:
  10.    </TD>
  11.    <TD>
  12.        <TEXTAREA style="overflow:hidden;" NAME="contents" ROWS="5" COLS="85"></TEXTAREA>
  13.    </TD>
  14. </TR>
  15. <TR>
  16.    <TD COLSPAN="2"><P ALIGN="RIGHT">
  17.    <INPUT TYPE="text" NAME="who">
  18.    </TD>
  19. <TR>
  20.    <TD>
  21.        <INPUT TYPE="submit" VALUE="Dodaj">
  22.    </TD>
  23. </TR>
  24. </FORM>


index.php
  1. <?php
  2.  include("main.temp")
  3. ?>


main.temp
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
  2. <HTML>
  3. <HEAD>
  4. <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=ISO-8859-2">
  5. <META NAME="author" CONTENT="Michał Ligus">
  6. <META HTTP-EQUIV="reply-to" CONTENT>
  7. <META NAME="description" CONTENT>
  8. <META NAME="keywords" CONTENT>
  9. <META NAME="copyright" CONTENT="Michał Ligus">
  10. <META HTTP-EQUIV="content-language" CONTENT="pl">
  11. <META HTTP-EQUIV="creation-date" CONTENT="2006-03-04 18:53:10">
  12. <TITLE>Dodawanie Newsów</TITLE>
  13. <STYLE TYPE="text/css">
  14. table {color: #FFFFFF;}
  15. </STYLE>
  16. </HEAD>
  17.  
  18. <BODY BGCOLOR="BLACK">
  19. <CENTER>
  20. <TABLE BORDER="0" WIDTH="780">
  21. <TR>
  22. <TD WIDTH="755" ALIGN="center" VALIGN="TOP">
  23.  
  24. Dodaj News
  25.  
  26. </TD>
  27. </TR>
  28. <TR>
  29. <TD ALIGN="center" VALIGN="TOP">
  30. <?php
  31.  
  32. include('add.temp')
  33.  
  34. ?>
  35. </TD>
  36. </TR>
  37. </TABLE>
  38. <TABLE BORDER="0" WIDTH="780">
  39. <?php
  40.  
  41. include('update.php')
  42.  
  43. ?>
  44. </TD>
  45. </TABLE>
  46. </BODY>
  47. </HTML>



update.php
  1. <?php
  2.  
  3. $contents = $_POST["contents"];
  4. $who = $_POST["who"];
  5. $data = date("d.m.");
  6. $rok = date("Y");
  7. $czas = date(" G:i");
  8. $linia01 = "<TR><TD ALIGN=\"LEFT\"><P ALIGN=\"justify\"><FONT FACE=\"EngrvrsOldEng Bd BT\" COLOR=\"#ffff00\">R</FONT>ecz, ";
  9. $linia02 = "<FONT FACE=\"EngrvrsOldEng Bd BT\"><FONT COLOR=\"#ffff00\">A.</FONT>D. ";
  10. $linia03 = "</FONT><BR><HR COLOR=\"#7093db\">";
  11. $linia04 = "<P ALIGN=\"RIGHT\"><SMALL>";
  12. $linia05 = "</SMALL></P></P></TD></TR>";
  13.  
  14. function readNews()
  15. {
  16. $contents = "";
  17. $fp = fopen("update.txt", "r");
  18. while(!feof($fp)){
  19. $contents .= fgets($fp) . "<BR>";
  20. }
  21. fclose($fp);
  22. return $contents;
  23. }
  24. function addNews($contents, $who, $data, $rok, $czas, $linia01, $linia02, $linia03, $linia04, $linia05)
  25. {
  26. chmod("update.txt". "666");
  27. $fp = fopen("update.txt", "r");
  28. $tempC = fread($fp, filesize("update.txt"));
  29. fclose($fp);
  30. $fp = fopen("update.txt", "w");
  31. fputs($fp, $linia01. $data. $linia02. $rok. $czas. $linia03. $contents. $linia04. $who. $linia05. "\r");
  32. fputs($fp, $tempC);
  33. fclose($fp);
  34. }
  35. if($contents == "" && $who == ""){
  36. print(readNews());
  37. }
  38. else{
  39. addNews($contents, $who, $data, $rok, $czas, $linia01, $linia02, $linia03, $linia04, $linia05);
  40. chmod("update.txt". "644");
  41. print(readNews());
  42. }
  43. ?>


Ten post edytował Maveilthain 4.05.2006, 11:05:19
Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 01:07