Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Odwrócenie czytania wpisów
Forum PHP.pl > Forum > Przedszkole
hausner15
Witam - mój problem polega na tym że tworze sb i chciałbym by wpisy pojawiały sie w odwrotnej kolejności. Oto kod:

  1. <?php
  2.  
  3. $fo = fopen("shouts.txt","r");
  4. $fr = fread($fo);
  5. fclose($fo);
  6.  
  7.  
  8.  $fp = fopen("shouts.txt","w");
  9.  fwrite($fp,$_POST['user']."~".$_POST['shout']."n");
  10.  fclose($fp);
  11.  $shoutbox_page = "show.php#shout_down";
  12.  header("Location: $shoutbox_page");
  13.  
  14. ?>


Jest on na 1000% żle zrobiony tongue.gif . Odwrócenie wpisów ma polegać tu na zczytaniu zawartości pliku i zachowaniu jej, następnie wyczyszczeniu pliku, potem zapisaniu loginu i wpisu użytkownika, a następnie reszty która była już w pliku. Z wyczyszczeniem sobie poradziłem ale nie moge sobie poradzić by zawartość pliku była odczytana (nie wiem czy górna częśc kodu jest prawidłowa), a następnie by skrypt zapisał wartość która doszła i potem to co już wcześniej było. Uff to chyba wszystko - czekamna odpowiedz najlepiej z gotowcem tongue.gif .

P.S. Ewentualnie prosił bym na PW.


-------------------------
ort by Cienki1980
Cienki1980
Odczytaj plik za pomocą file" title="Zobacz w manualu PHP" target="_manual w wyniku dostaniesz tablicę.
Wyczyść plik, dopisz nowe dane a potem dopisz zawartość tablicy ... chociażby w pętli foreach.
hausner15
Zrobione. Tyle że bez pętli

Ale mam kolejny problem^^:

  1. <?php 
  2.  
  3. $wpisy = file("shouts.txt");
  4. $fp = array_reverse($wpisy);
  5.  
  6.  
  7. $fp[0]
  8. $fp[1]
  9. $fp[2]
  10. $fp[3]
  11. $fp[4]
  12. $fp[5]
  13. $fp[6]
  14. $fp[7]
  15. $fp[8]
  16. $fp[9]
  17. $fp[10]
  18. $fp[11]
  19. $fp[12]
  20. $fp[13]
  21. $fp[14]
  22. $fp[15]
  23. $fp[16]
  24. $fp[17]
  25. $fp[18]
  26. $fp[19]"
  27.  
  28. ?>


a pętle chciałbym wsadzić. Ponieważ to mi wyświetla 20 wpisów ale nie mogę nijak poradzić ze wstawieniem wszystkich wpisów (to ma być historia). Prosze o pomoc (najlepiej gotowca tongue.gif )
sobstel
file_put_contents" title="Zobacz w manualu PHP" target="_manual, file (ew. file_get_contents" title="Zobacz w manualu PHP" target="_manual), implode" title="Zobacz w manualu PHP" target="_manual, array_reverse to chyba wszystkie funkcje, ktore potrzebujesz np. w twoim kodzie zamiast printa z wszystkimi elementami tablicy to :

  1. <?php
  2. print implode('', $fp);
  3. ?>
hausner15
Dzięki działa - jak na nie znającego php to wyszło ok. Mam nadzieję że więcej problemów nie będę mieć.

Mam jeszcze jedną sprawe - jak zrobić by wpisy się automatycznie kasowały np. po 10 dniach?? Plz help...
Cienki1980
Cytat(hausner15 @ 8.05.2007, 18:44:38 ) *
Dzięki działa - jak na nie znającego php to wyszło ok. Mam nadzieję że więcej problemów nie będę mieć.

Mam jeszcze jedną sprawe - jak zrobić by wpisy się automatycznie kasowały np. po 10 dniach?? Plz help...


Na Twoim miejscu zastanowiłbym się nad wykorzystaniem bazy danych .. będzie o wiele prościej i przyjemniej. Jeżeli chcesz robić dalej to na pliku musiałbyś zapisywać czas stworzenia komentarza ( najlepiej mktime" title="Zobacz w manualu PHP" target="_manual ) i podczas każdorazowej operacji na tym pliku sprawdzać czy któryś wpis jest starszy niż 10 dni.

Odpowiedź na najbliższe pytanie: Żeby usuwać wpisy z pliku najlepiej będzie go odczytać za pomocą np file" title="Zobacz w manualu PHP" target="_manual po czym sprawdzić czy jakiś wpis ( element w tablicy ) jest starszy niż 10 dni po czym usunąć ten element z tablicy za pomocą unset" title="Zobacz w manualu PHP" target="_manual po czym na nowo plik zapisać danymi z zmienionej tablicy.
hausner15
Dzięki ale to sobie chyba daruje... Tylko napiszę funkcje która usuwa wszystko po jej uruchomieniu i raz poraz ją uruchomie smile.gif. A z baz danych nie skorzystam ponieważ nie umiem. Poza tym kod forum (txtbb) nakłada mi pewne ograniczenia, jak i sama wielkość bazy...
Cienki1980
Cytat(hausner15 @ 8.05.2007, 19:48:03 ) *
Dzięki ale to sobie chyba daruje... Tylko napiszę funkcje która usuwa wszystko po jej uruchomieniu i raz poraz ją uruchomie smile.gif. A z baz danych nie skorzystam ponieważ nie umiem. Poza tym kod forum (txtbb) nakłada mi pewne ograniczenia, jak i sama wielkość bazy...


No to skoro nie baza danych to zrób na plikach. W razie czego pomożemy. A oto zestaw potrzebnych funkcji a przynajmniej części z nich:
explode" title="Zobacz w manualu PHP" target="_manual
mktime" title="Zobacz w manualu PHP" target="_manual
date" title="Zobacz w manualu PHP" target="_manual

Spróbuj, potrenuj a w razie pytań pisz.
hausner15
Dobra wpadłem na inny pomysł - coś w stylu tego kodu:
  1. <?php
  2.  
  3.  $i = file("count.txt");
  4.  
  5.  $i = $i[0]
  6.  
  7.  $i++
  8.  
  9.  if ($i > 100) {
  10. $i = 1
  11.  }
  12.  
  13.  $fp = fopen("count.txt","w");
  14.  fwrite($fp,$i);
  15.  fclose($fp);
  16.  
  17.  
  18. $today = date("H:i");
  19.  
  20.  $fp = fopen($i.".txt","a");
  21.  fwrite($fp,"<b>[".$today."] ".$_POST['user'].":</b><br>".$_POST['shout']."<br>n");
  22.  fclose($fp);
  23.  
  24. ?>


Nie wiem czy działa, nie sprawdzałem ale chodzi mi o to by:

1. w pliku count.txt była wartość która miała by stanowić nazwę pliku
2. odczytać zawartość tego pliku
3. powiękrzyć ją o 1
4. sprawdzić czy wartość nie jest więkrza od 100 (wtedfy max 100 wiadomości by było, a nie czasem ograniczone biggrin.gif )
5. potem tą wartość zapisać by można było ponownie użyć jej później
6. następnie zapisać wiadomość w pliku pod nazwą tej zmiennej + .txt
7. I na końcu jakiś kod który odczyta wartości z tego folderu według daty utworzenia pliku (od najmłodszego - na gorze, do najstarszego - na dole).

Prosił bym najwyżej o poprawienie kodu i o dopisanie kodu do wyświetlania tej zawartości - bo tego właśnie nie umiem...
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.