Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Kolejność wyświetlanych wpisów w księdze gości
witu
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.07.2007

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


Witam!
Uruchomiłem na mojej stronie internetowej prostą księgę gości. Działa na zasadzie dodawania do pliku .dat nowych wpisów, a następnie odczytu z tego pliku i wyświetlania na stronie.

Problem polega na tym, że nowo dodawane wpisy dopisują się na dole listy, a nie u góry.
Prościej mówiąc, chcę aby wyświetlanie działało na zasadzie systemów newsów.
Nie wiem co zmienić, by skrypt pobierał dane z pliku .dat od końca do początku, (ew. żeby skrypt zapisywał nowe wpisy na początku pliku - efekt chyba ten sam). Niestety nie pamiętam skąd ściągnąłem ten skrypt, ściągałem ich trochę jednocześnie więc nie jestem w stanie sobie przypomnieć...

zamieszczam kody skryptu:

część zapisująca do pliku:
  1. <?php
  2. $nazwa_pliku="baza.dat";
  3.  
  4. $imie=$_REQUEST["imie"];
  5. $imie=nl2br($imie);
  6. $imie=str_replace("r\n","",$imie);  
  7. $tresc=$_REQUEST["tresc"];
  8. $tresc=nl2br($tresc);
  9. $tresc=str_replace("r\n","",$tresc);  
  10. if (($fp=fopen($nazwa_pliku,"a"))!==false)
  11. {
  12. flock($fp,LOCK_EX);
  13. fputs($fp,$imie."r\n");
  14. fputs($fp,$tresc."r\n");
  15. flock($fp, LOCK_UN);
  16. fclose($fp);
  17. }
  18. ?>


część odczytująca z pliku
  1. <?php
  2. $nazwa_pliku="baza.dat";
  3. echo "<a href=\"index.php?id=dodaj\"><span style=\"font-weight: bold;\">Nowy wpis</span></a><br /><br />";
  4. if (($fp=fopen($nazwa_pliku,"r"))!==false)
  5. {
  6. $i=0; //ilosc wpisow
  7. flock($fp, LOCK_SH); // blokowanie pliku do odczytu
  8. while (($linia1=fgets($fp))!==false)
  9. {
  10. $linia2=fgets($fp);
  11. echo "<span style=\"font-weight: bold\">".$linia1."</span>";
  12. echo "<br />".$linia2."<br /><br />";
  13. echo "<hr />";
  14. $i++;
  15. }
  16. flock($fp, LOCK_UN); //zwolnienie blokady
  17. fclose($fp);
  18. }
  19.  
  20. if ($i==0)
  21. echo "<span style=\"font-weight: bold;\">Nie ma na razie żadnych wpisów</span><br /><br />";
  22.  
  23. echo "<a href=\"index.php?id=dodaj\"><span style=\"font-weight: bold;\">Nowy wpis</span></a><br /><br />";
  24. ?>


Ten post edytował witu 19.02.2008, 01:17:56
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
witu
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 14.07.2007

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


nowotny: no fakt nie napisałem zbyt wiele ale mi się spać chciało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) teraz jeszcze pokminię coś z innych tematów na forum.

kszychu: ustawiłem przy fopen() parametr X w pliku zapisującym i teraz w ogóle nie zapisuje do pliku...


dodano 22.03.2008:
udalo mi się rozkminić juz jakis czas temu ale dzisiaj sobie przypomnialem o tym temacie. zamieszczam kod księgi, która działa cudownie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
dodałem nawet licznik wpisów i datę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

część wyświetlająca:
  1. <!-- plik wpisownia.php -->
  2. <center>
  3. <p>
  4. <span style="font-size:x-large;"><b>WPISOWNIA</b></span>
  5. </p>
  6. </center>
  7. <br />
  8. <?
  9. $nazwa = "baza.dat"; 
  10. $myFile = fopen($nazwa, "r");
  11. $i = -1;
  12. while(!feof($myFile)) {
  13.  $myLine = fgets($myFile, 2000);
  14.  $i++; 
  15.  }
  16. fclose($myFile);
  17.  
  18. echo "<a href=\"index.php?id=dodaj\"><span style=\"font-weight: bold;\">Nowy wpis</span></a> Ilość wpisów we Wpisowni: $i<br /><br />";
  19.  
  20. $file = array_reverse( file('baza.dat') );
  21.  
  22. foreach($file as $key => $value)
  23. {
  24. list($imie, $tresc) = explode("|||", $value);
  25. echo $imie .'<br />';
  26. echo $tresc .'<br /><br />';
  27. echo '<hr>';
  28. }
  29. echo "<a href=\"index.php?id=dodaj\"><span style=\"font-weight: bold;\">Nowy wpis</span></a><br /><br />";
  30.  
  31.  
  32. ?>


część dodająca:
Kod
<!-- plik dodaj.php -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" >
<title>Dodawanie wiadomości</title>
</head>
<body>

<form method="post" action="index.php?id=zapisz">
<div>
   Imię: <input type="text" name="nick" /><br />
   Treść:<br />
    <textarea cols="35" name="pole" rows="12">
</textarea>  <br />
   <input type="submit" value="Wyślij"/>
</div>
</form>
</body>
</html>


czesc zapisująca:
  1. <!-- plik zapisz.php -->
  2. <META HTTP-EQUIV="Refresh" CONTENT="javascript:history.back()"> 
  3. <?php
  4.  
  5. if($pole=="")
  6. {
  7.  
  8. echo("<br /><br /><h4><b>Napisz coś ;)<br /><br /><a href='javascript:history.back();'>Wstecz</a></b></h4>");
  9. }
  10. else {
  11.  
  12. $nick = $_POST['nick'];
  13. $pole = $_POST['pole'];
  14.  
  15. $nick = HTMLSpecialChars($nick);
  16. $anonim = "Gość";
  17. if($nick=="") $nick = $anonim;
  18. $pole = HTMLSpecialChars($pole);
  19. $date = date("j.m.Y G:i");
  20. $text = ereg_replace("\n", "<br />", $pole);
  21. $wynik = '<b>'. $nick . '</b>'. "  " . $date . '|||' .$text. "\n";
  22. $plik ="baza.dat";
  23. $fp = fopen($plik, "a");
  24.  
  25. fwrite ($fp, $wynik);
  26. fclose($fp);
  27.  
  28. echo '<span style="font-size:small;"> <a href="index.php?id=ksiega" /> <b>Powrót</b></a></span><br />';
  29. echo '<center><h2> Dzięki za wpis! </h2></center>';
  30. }
  31. ?>


do pelni szczescia brakuje jeszcze pliku tekstowego ktory przechowuje wpisy: baza.dat , ktorego chmody musimy ustawic na 777.
pozdr!
Witu

Ten post edytował witu 22.03.2008, 00:44:33
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: 25.09.2025 - 23:51