Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Utworzenie pliku, jeśli ten nie istnieje
mrRosso
post 12.07.2013, 17:50:45
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Witam, nie mogę uporać się z takim problemem. Mam bota, do którego jak się napisze pierwszy raz to tworzy katalog a w nim plik tekstowy o nazwie zmiennej $from, czyli w tym przypadku numer gg. Skleciłem kod i tworzy on ładnie katalog o nazwie $from, w nim plik txt o nazwie $from i dodatkowo zapisuje to, co użytkownik przesłał do skryptu i o to mi chodziło. Ale problem powstaje, jeśli ten sam użytkownik napisze ponownie(bo katalogi etc. z jego numerem są już utworzone) to wyrzuca błąd, że taki katalog itd itd już istnieje. To użyłem funkcji file_exists() z nadzieją, że pomoże, ale chyba coś źle robię... Niżej zamieszczam kod, proszę o pomoc.


  1. $plik = $from; //deklaracja ścieżki do pliku
  2. $sprawdz = file_exists($plik); //sprawdzenie czy plik istnieje
  3. if (!$sprawdz) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  4. {
  5. mkdir('./baza/'.$from, 0777);
  6. }
  7. else
  8. {
  9. }
  10. $tresc = (implode(" ", $msg));
  11. $kiedy = date("(Y-m-d H:i)");
  12. if($fp = fopen('baza/'.$from.'/'.$from.'.txt', 'a+'));
  13. if(fwrite($fp, "<$from>[$kiedy]: $tresc\n\r"));
  14. if(fclose($fp))


Próbowałem również tak, ale wtedy sypie błędami, że źle klamry są


  1. $plik = $from; //deklaracja ścieżki do pliku
  2. $sprawdz = file_exists($plik); //sprawdzenie czy plik istnieje
  3. if (!$sprawdz) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  4. {
  5. mkdir('./baza/'.$from, 0777);
  6. }
  7. else
  8. {
  9. $tresc = (implode(" ", $msg));
  10. $kiedy = date("(Y-m-d H:i)");
  11. if($fp = fopen('baza/'.$from.'/'.$from.'.txt', 'a+'));
  12. if(fwrite($fp, "<$from>[$kiedy]: $tresc\n\r"));
  13. if(fclose($fp))
  14. }


Ten post edytował mrRosso 12.07.2013, 17:51:08
Go to the top of the page
+Quote Post
widmo_91
post 12.07.2013, 17:55:40
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Najprościej będzie użyć file_put_contents z flagą FILE_APPEND

  1. file_put_contents($plik, $dane, FILE_APPEND)


Jeżeli plik nie istnieje to go utworzy, jeżeli istnieje to dopiszę na końcu.
Go to the top of the page
+Quote Post
mrRosso
post 12.07.2013, 17:59:49
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


To muszę tej funkcji użyć zamiast tych dwóch funkcji file_exists i mkdir czy tylko jednej i jakiej?
Go to the top of the page
+Quote Post
widmo_91
post 12.07.2013, 18:01:44
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


Zamiast tych 2, wyżej opisałem jej działanie.
Go to the top of the page
+Quote Post
mrRosso
post 12.07.2013, 18:18:26
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


Prawie dobrze, ale teraz jest tak.

Jeśli jest katalog o nazwie $from to ta funkcja, którą podałeś tworzy w niej plik txt też o nazwie $from i to jest dobrze, ale jeśli nie ma katalogu to wywała error, że takiego nie ma. A ta funkcja, którą podałeś, tworzy tylko plik a katalogu nie.

  1. $tresc = (implode(" ", $msg));
  2. $plik = 'baza/'.$from.'/'.$from.'.txt'; //deklaracja ścieżki do pliku
  3. file_put_contents($plik, $tresc, FILE_APPEND);


a ten błąd to

  1. <br />
  2. <b>Warning</b>: file_put_contents(baza/7345200/7345200.txt) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in <b>/home/rosso16/public_html/bot/bot.php</b> on line <b>295</b><br />




Ten post edytował mrRosso 12.07.2013, 18:17:14
Go to the top of the page
+Quote Post
widmo_91
post 12.07.2013, 18:21:26
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 25
Dołączył: 10.08.2009

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


  1. $tresc = (implode(" ", $msg));
  2. $plik = 'baza/'.$from.'/'.$from.'.txt'; //deklaracja ścieżki do pliku
  3. if (!file_exists('baza/'.$from)) mkdir('baza/'.$from);
  4. file_put_contents($plik, $tresc, FILE_APPEND);
Go to the top of the page
+Quote Post
mrRosso
post 12.07.2013, 18:23:19
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 2.01.2012

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


teraz jest super! dzięki wielkie za pomoc i oczywiście piwko leci! wink.gif
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 Wersja Lo-Fi Aktualny czas: 14.07.2025 - 18:44