Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Tworzenie pliku
Forum PHP.pl > Forum > Przedszkole
terreska
Szukałam... bezskutecznie sad.gif
Jaka komenda w php służy do tworzenia pliku?
strife
Cytat(terreska @ 24.03.2007, 23:27:24 ) *
Szukałam... bezskutecznie sad.gif
Jaka komenda w php służy do tworzenia pliku?


Cześć Tereska biggrin.gif

Poczytaj o fopen" title="Zobacz w manualu PHP" target="_manual, file_put_contents" title="Zobacz w manualu PHP" target="_manual.

Pozdrawiam.
mike
Chyba lepiej touch()
terreska
Cytat(strife @ 25.03.2007, 00:31:26 ) *
Cześć Tereska biggrin.gif


Chyba ktoś ogląda za dużo filmów tongue.gif

Touch() zdało egzamin, dzięki.
jarmiar
a da się zrobić coś takiego żeby tworzyć np plik html na podstawie kodu wpisanego z textarea?
Cienki1980
Cytat(jarmiar @ 25.03.2007, 11:02:14 ) *
a da się zrobić coś takiego żeby tworzyć np plik html na podstawie kodu wpisanego z textarea?


Tworzysz plik *.html i zapisujesz do niego zawartość textarea.... chyba, że myślisz o czymś innym
jarmiar
jak zrobić to w php aby stworzył mi taki plik?
Cienki1980
Cytat(jarmiar @ 25.03.2007, 11:09:43 ) *
jak zrobić to w php aby stworzył mi taki plik?

Trzeba zaznajomić się z funkcjami:
fopen" title="Zobacz w manualu PHP" target="_manual
fwrite" title="Zobacz w manualu PHP" target="_manual ub file_put_contents" title="Zobacz w manualu PHP" target="_manual
fclose" title="Zobacz w manualu PHP" target="_manual
jarmiar
tak , znam te funkcje, ale one dopisują tylko zawartość do pliku, który istnieje.
a ja chcę stworzyć plik, a dopiero poźniej dopisać do niego wartość
mike
Cytat(jarmiar @ 25.03.2007, 11:13:48 ) *
(...) a ja chcę stworzyć plik, a dopiero poźniej dopisać do niego wartość
To przeczytaj ten wątek od początku mad.gif
Nazwa tej funkcji już padła.
Cienki1980
Cytat(jarmiar @ 25.03.2007, 11:13:48 ) *
tak , znam te funkcje, ale one dopisują tylko zawartość do pliku, który istnieje.
a ja chcę stworzyć plik, a dopiero poźniej dopisać do niego wartość

Z tego co można wyczytać w manualu do funkcji fopen:
Cytat
w - Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego początku i obcina plik do zerowej długości. Jeśli plik nie istnieje to próbuje go utworzyć.

No chyba, że to nie jest tworzenie pliku questionmark.gif
jarmiar
mam tutaj taki kod:
  1. <?
  2. $plik = $_POST['plik'];
  3. $zawartosc = $_POST['zawartosc'];
  4. function dodaj() {
  5. $dane = $zawartosc;
  6. $file = $plik;
  7.  
  8. $fp = fopen($file, "w");
  9.  
  10.  
  11. flock($fp, 2);
  12.  
  13. fwrite($fp, $dane);
  14.  
  15.  
  16. flock($fp, 3);
  17.  
  18. fclose($fp);
  19. }
  20.  
  21. $tworzenie = touch($plik);
  22. echo($tworzenie);
  23. if($tworzenie) {
  24.  
  25. dodaj();
  26. if(dodaj()) {
  27. echo('Stworzono plik');
  28. }
  29. else {
  30. echo('Błąd');
  31. }
  32. }
  33. ?>


tworzy mi plik o podanej nazwie ale już nie chcę dopisać do niego zawaretości textarea.
wyskakuje mi błąd:

Warning: flock(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 11

Warning: fwrite(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 13

Warning: flock(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 16

Warning: fclose(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 18

Warning: flock(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 11

Warning: fwrite(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 13

Warning: flock(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 16

Warning: fclose(): supplied argument is not a valid stream resource in /webpocket/wykonaj.php on line 18


w czym jest błąd?
poprawcie mi ten kod jeśli możecie.
mike
Cytat(jarmiar @ 25.03.2007, 13:28:16 ) *
poprawcie mi ten kod jeśli możecie.
Śnisz tongue.gif My Ci powiemy jak a Ty sam poprawisz tongue.gif

Próbujesz wewnątrz funkcji skorzystać ze zmiennej $plik do otworzenia pliku za pomocą fopen(). Tej zmiennej nie widać wewnątrz funkcji, stąd plik nie zostaje otworzony i dlatego flock() wywala błąd.

Poczytaj o zasięgu zmiennych
jarmiar
Cytat(mike_mech @ 25.03.2007, 12:37:26 ) *
Śnisz tongue.gif My Ci powiemy jak a Ty sam poprawisz tongue.gif

Próbujesz wewnątrz funkcji skorzystać ze zmiennej $plik do otworzenia pliku za pomocą fopen(). Tej zmiennej nie widać wewnątrz funkcji, stąd plik nie zostaje otworzony i dlatego flock() wywala błąd.

Poczytaj o zasięgu zmiennych


to ja już naprawdę nie mam pojęcia.

proszę napisz mi gotowy kod, będę bardzo wdzięczny
mike
Człowieku, więcej samodzielności!

Napisałeś posta 3 minuty po tym jak Ci odpowiedziałem. Zakładając że wciskałeś F5 co chwila to miałeś najwyżej 2 minuty na przeczytanie tego co Ci wysłałem i postaranie sie o poprawienie samemu.
Zrobiłeś to czy wyszedłeś z założenia, że nie wiesz, pojęczysz chwilę i dostaniesz gotowca? Odpowiedź jest prosta.

Żałosne.
jarmiar
Cytat(mike_mech @ 25.03.2007, 12:45:21 ) *
Człowieku, więcej samodzielności!

Napisałeś posta 3 minuty po tym jak Ci odpowiedziałem. Zakładając że wciskałeś F5 co chwila to miałeś najwyżej 2 minuty na przeczytanie tego co Ci wysłałem i postaranie sie o poprawienie samemu.
Zrobiłeś to czy wyszedłeś z założenia, że nie wiesz, pojęczysz chwilę i dostaniesz gotowca? Odpowiedź jest prosta.

Żałosne.



poprawiłem swój kod dużo wcześniej bo zamieniłem na funkcję file_put_conents()

parser nie wywala błędu ale nie chce mi zapisac do utworzonego pliku nic.

oto mój kod
  1. <?
  2. $plik = $_POST['plik'];
  3. $zawartosc = $_POST['zawartosc'];
  4. function dodaj() {
  5. $plik = $_POST['plik'];
  6. $zawartosc = $_POST['zawartosc'];
  7. $dane = $zawartosc;
  8. $file = $plik;
  9.  
  10. file_put_contents($plik, $zawartosc);
  11. }
  12.  
  13. $tworzenie = touch($plik);
  14. echo($tworzenie);
  15. if($tworzenie) {
  16. chmod($plik, 0777);
  17. dodaj();
  18. if(dodaj()) {
  19. echo('Stworzono plik');
  20. }
  21. else {
  22. echo('Błąd');
  23. }
  24. }
  25. ?>
Cienki1980
Hmm no nie wiem co Tobie tam nie pasuje, bo mi kod działa .. znaczy działa tak, że plik tworzy i zapisuje do niego zawartość.
Jedynym felerem jest to, że funkcja dodaj() nic nie zwraca i sprawdzając warunek w 18 linii zawsze będzie false i pokaże się komunikat "Błąd".

Zresztą w 17 linii wywołujesz funkcję dodaj() i robisz to w linii 18.
jarmiar
zrobiłem też jak ty mówiłeś i nie działa.

napisałem jeswzcze inny kod i tutaj mi nie działa.
może coś pomożesz

plik wykonaj.php

  1. <?
  2. if(auth()) {
  3. $uzytkownik = $_SESSION["USER_LOGIN"];
  4. $plik = $_POST['plik'];
  5. $zawartosc = $_POST['zawartosc'];
  6. $tworzenie = touch($uzytkownik."/".$plik);
  7. echo($tworzenie);
  8. chmod($uzytkownik."/".$plik, 0777);
  9. if($tworzenie) {
  10. echo "<form method=POST action=index.php?page=wykonaj2>
  11. <p>
  12. Plik $plik <input type=hidden name=plik value=$plik>&nbsp; utworzono poprawnie&nbsp; <br>
  13. Zawartość pliku którą chcesz wysłać:<br>
  14. <br>
  15. <textarea rows=14 name=zawartosc cols=41><html>
  16. <head>
  17. </head>
  18. <body>
  19. </body>
  20. </html></textarea><br>
  21. <input type=submit value=Dalej></p>
  22. </form>
  23. ";
  24. }
  25. else {
  26. echo('Nie można utworzyć pliku');
  27. }
  28. }
  29. else {
  30. echo('Zaloguj się');
  31. }
  32. ?>


plik wykonaj2.php

  1. <?
  2. if(auth()) {
  3. function zapisz() {
  4. $uzytkownik = $_SESSION["USER_LOGIN"];
  5. $dane = $_POST['zawartosc'];
  6. $file = $_POST['plik'];
  7. $fp = fopen($file, "w");
  8. flock($fp, 2);
  9. fwrite($fp, $dane);
  10. flock($fp, 3);
  11. fclose($fp);
  12. }
  13. if(zapisz()) {
  14. echo("Plik został utworzony poprawnie.<br> Możesz teraz zobaczyć swój plik <a href=$uzytkownik/$plik>tutaj</a>");
  15. }
  16. else {
  17. echo('Wystąpił błąd przy zapisie');
  18. }
  19. }
  20. else {
  21. echo('Zaloguj się');
  22. }
  23. ?>
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.