Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] ostatnio dodany plik
Substr
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 8
Dołączył: 22.06.2009

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


Witam. Ściągnąłem stąd http://skrypty.webpc.pl/pokaz59.html skrypt downloadu. Pieknie przystosowalem go do swojej strony, tak by był zgodny z validatorem i niby wszystko działa. Ale, do pliku last.dat dodawana jest linijka z ostatnio dodanym do downloadu plikiem.

Część kodu odpowiedzialnego za dodawanie wyglada tak.
plik admin.php
  1. $write_str="$line[0]||$line[1]||$line[2]\n";
  2. if ($line[2]!="") {
  3. fputs ($f, $write_str);
  4. }
  5. }
  6. flock($f, 3);
  7. fclose($f);
  8. $base_file=("data/$base_name.dat");
  9. $desc=stripslashes($desc);
  10. $title=stripslashes($title);
  11. $desc=eregi_replace("\n", "<br>", $desc);
  12. $add_data="0||$title||$f_name||$desc||$size||$f_id\n";
  13. $fp=fopen($base_file, "a");
  14. flock($fp, 2);
  15. if ($f_name!="") {
  16. fputs ($fp, $add_data);
  17. flock($fp, 3);
  18. fclose($fp);
  19. $categ=str_replace("_", " ", $cat_name);
  20. $lf=fopen("data/last.dat", "w");
  21. flock($lf, 2);
  22. fputs($lf, "<a href=download/download.php?action=save&cat=$base_name&id=$f_id>$title</a>");
  23. flock($lf, 3);
  24. fclose($lf);
  25. echo "$menu<br>Dodano plik <b>$f_name</b> do kategorii <b>$categ</b>.";
  26. if (!eregi("http://", $f_name)) {
  27. if (file_exists("files/$f_name")) {
  28. echo "<br>Plik jest już umieszczony w katalogu \"download/files\".";
  29. }
  30. else {
  31. echo "<br>Przekopiuj teraz plik do katalogu \"download/files\".";
  32. }
  33. }
  34. else {
  35. echo "<br>Plik będzie pobierany ze zdalnego serwera.";
  36. }
  37. }
  38. break;


Zapisuje on do pliku last.dat coś takiego
  1. <a href=download/download.php?action=save&cat=kategoria&id=nazwa>nazwa pliku</a>


i w tym jest problem, ze zapisuje tylko _ostatni_ plik, a poprzedni kasuje. Ja chciałbym aby zapisywał np 5 ostatnich i tu zaczyna sie mój problem. PHP znam w stopniu początkującym, jeśli ktoś ma jakieś rady jak to zrobić to chętnie wysłucham i dziekuje za pomoc.

Ten post edytował Substr 24.08.2009, 12:10:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Rady:

1. Nie używaj eregi tylko preg_match
2. Używaj file_get_contents i file_put_contents


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Substr
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 8
Dołączył: 22.06.2009

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


Ten skrypt był pisany w 2002 roku.. hehe
Dodałem do kodu
  1. $lf=fopen("data/last.dat", "w");


zamiast 'w', 'a'.. tylko, że dodaje mi na końcu pliku, a ja wolał bym aby dodawał na początku. Niestety nie mogę znaleść w jakim trybie jest to możliwe, bo 'r+' nie działa.

Ma ktoś jakiś pomysł na to, żeby do pliku zapisywał tylko 5 lini i w razie potrzeby stare kasował a nowe dodawał?
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Wczytaj plik linia po linii file i potem podmień jedną i zapisz do pliku.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Substr
post
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 8
Dołączył: 22.06.2009

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


Powiedzmy, ze mam cos takiego

  1. <?php
  2. $plik = 'jakis_plik.txt';
  3. $zawartosc = file($plik);
  4. unset($zawartosc[0]);
  5. $zawartosc = implode("r\n",$zawartosc);
  6. $u = fopen($plik,'w');
  7. fwrite($u,$zawartosc);
  8. ?>


Chyba to był by kod odpowiedzialny za usuniecie 1 lini w tablicy. Jesli nie to prosze o poprawienie.

Teraz takie pytanie, w jakim trybie zapisac by dodał na początku pliku?
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jako taki nie istnieje tryb otwarcia, który by pozwalał dodawać i jednocześnie ustawiał się na początku. Musisz ręcznie mu to wskazać. Dlatego otwórz plik w trybie append (a) i przesuń wskaźnik pliku na jego początek by móc dopisywać na początku.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 18:38