Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapis danych z formularza do pliku
Forum PHP.pl > Forum > Przedszkole
daros17
Hey

Mam taki głupi problem, a mianowicie kod poniżej zapisuje to co wrzucam w formularz i zapisuje w plikach txt. pierwszy plik to plik0.txt natepny to plik1.txt i tak dalej każdy plik ma to co wpisalem do formularza ostatni raz, a ja chce aby to co wpisalem pierwszy raz bylo w pliku plik0.txt itp

jak to przerobić?

zapisuje jedynie liczby co do poprawki?

  1. <form action="" method="POST">
  2. <textarea name="wrzuc"></textarea>
  3. <input type="submit" name="submit" value="Wyslij">
  4.  
  5. <?php
  6.  
  7. if(isset($_POST['submit']))
  8. {
  9. echo 'Tekst został zapisany';
  10. }
  11. {
  12. $k=0;
  13. $wrzuc=$_POST['wrzuc'];
  14. $tresc = $wrzuc;
  15. for ($i=0; $i<$wrzuc; $i++)
  16. {
  17. file_put_contents('plik'.$i.'.txt', $tresc);
  18.  
  19. }
  20. }
  21.  
  22. ?>
  23.  
pablo_83
Nie wiem czy dobrze rozumiem o co Ci chodzi, chcesz aby dane z formularza lądowały w pliku plik0.txt questionmark.gif

Jeśli tak to wyrzuć z nazwy pliku zmienną $i.

Jeśli masz jedno pole w formularzu to po co Ci pętla??

i jeszcze jedno jaki sens ma przypisywanie $treść = $wrzuć questionmark.gif?, tworzysz nową zmienną aby przypisać jej wartość starej?questionmark.gif trochę bez sensu.

Nie wiem czy dobrze zrozumiałem Twój problem, jeśli chodzi o coś innego sprecyzuj pytanie.
ZeTu
Zawartość dodaj.php lub dodaj.html
  1. <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
  2. <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='pl' lang='pl'>
  3. <head>
  4. <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-2' />
  5. </head>
  6. <html>
  7. <body>
  8. <table>
  9. <form method="post" action="add.php">
  10. <tr><td>Tytuł:</td><td><input type="text" name="tytul" size=20></td></tr>
  11. <tr><td><br>Treść:</td><td><textarea rows="6" name="tresc" cols="60"></textarea></td></tr>
  12. </p>
  13. <tr><td></td>
  14. <td><input type="submit" value="Dodaj"> <input type="reset" value="Wyczyść"></td></tr>
  15. </form>
  16. </td></tr>
  17. </table>
  18.  
  19. </body>
  20. </html>


Zawartość add.php
  1. <? extract($_REQUEST);
  2. $napis="Zobacz";
  3. $dataloc="nn.txt";
  4.  
  5. $zobacz="<a href=zobacz.php>$napis</a>";
  6.  
  7. $read=fopen($dataloc, "r");
  8. $fileread = fread($read, filesize($dataloc));
  9. fclose($read);
  10.  
  11.  
  12. fwrite (fopen("nn.txt", "r+"), "<b>$tytul $tytulz</b><br>$trescz $tresc<br><br>
  13. \n $fileread ");
  14.  
  15. fclose(fopen("nn.txt", "a+"));
  16.  
  17. echo ("$zobacz");
  18. ?>


nn.txt puste (chmod 777)

Zawartość zobacz.php
  1. <?
  2. $sciezka = 'nn.txt';
  3. $plik = fopen($sciezka, 'r');
  4. $zawartosc = fread($plik, filesize('nn.txt'));
  5. echo $zawartosc
  6. ?>


"ś" = "¶"
Demo http://karol-drag.eu/demo/dodaj.html
Pobierz gotowca http://karol-drag.eu/demo/pobierz-demo.zip

Nie żebym chciał reklamować (swoją) stronę, po prostu chcę ułatwić Ci życie, bo tak to musisz kopiować to i usuwać te nry linijek.
daros17
Jakby miały lądować w pliku "plik0.txt" to nie miałbym z tym problemu...

mamy formularz jesli wrzuce tam napis - dsabhfsdfgsdhfs to ma zapisywac w pliku "plik0.txt"

jesli za 5 minut znow cos dodam w formularzu np -asdfsfsdfsd to ma zapisywac w pliku "plik1.txt"

wiec po to mi petla
ZeTu
Czyli ma zapisać w pliku plik0.txt, po 5 minutach w plik1.txt, a potem znowu po 5 minutach w plik0.txt?
daros17
No nie..

przykład:
lol1 do pliku -> plik0.txt
lol2 do pliku -> plik1.txt
lol3 do pliku -> plik2.txt
lol4 do pliku -> plik3.txt

itp
markonix
Każdy nowy wpis do nowego pliku?

To po prostu sprawdzaj jaki plik jest ostatni lub nazwę zapisuj w innym pliku (żeby nie listować całego katalogu).
daros17
a jak sprawdzic jaki plik jest ostatni? myslalem o file_exits ale to sprawdza czy plik istnieje. moglbys mnie jakos naprowadzic
ZeTu
A pliki mają się tworzyć same? czy Ty sobie utworzysz pliki plik0.txt itd?
daros17
Tak pliki maja sie same tworzyc i sie tworza, ale kazdy poprzedni plik jest nadpisany tym co dodalem ostatni raz w fomularzu
markonix
Formularz jest wysyłany raz, nie masz kilku inputów więc nie rozumiem w ogóle celowości tej pętli.

daros17
to w takim razie jak miałby to zrobić?

jeśli np co 30 sekund wysyłam nowe dane z formularza i ma zapisywać się w nowych plikach a nie tych samych czyli plik0.txt plik1.txt plik2.txt plik3.txt plik4.txt plik5.txt itp
ZeTu
Robię Ci ten skrypt, ale błędy mi wyskakują, jak je uda się usunąć, to Ci to zrobię.
amii
  1. $tablica - array();
  2. $dir = "przykladowy/katalog"; //dajesz parametry 777 zeby mial prawo do zapisu
  3. $content = $_POST['formularz']; //zmienna z treścią z twojego formularza
  4.  
  5.  
  6. // Czytamy zawartość katalogu, powinien byc pusty i tam powinny być zapisywane pliki txt
  7. function katalog($dir, $tablica) {
  8. if (is_dir($dir)) {
  9. if ($dh = opendir($dir)) {
  10. while (($file = readdir($dh)) !== false) {
  11. if ($file != "." && $file != "..") {
  12. $tablica = $file;
  13. }
  14. }
  15. closedir($dh);
  16. }
  17. }
  18. return $tablica;
  19. }
  20.  
  21. $tablica = katalog($dir, $tablica);
  22.  
  23. $i = count($tablica);
  24. $handle=fopen('plik'.$i.'.txt', "w+");
  25. if($handle) {
  26. fwrite($handle, $contnet);
  27. fclose($handle);
  28. }
  29. else die('Blad otwarcia pliku plik'.$i.'.txt');
ZeTu
Chodzi Ci o takie coś? http://karol-drag.eu/demo1/
Skrypt mojego autorstwa do pobrania przez ten link http://karol-drag.eu/demo1/pobierz-demo1.zip
pablo_83
jeśli chcesz unikatowość plików to możesz zamiast $i w nazwie wstawić aktualny czas i masz po problemie.

Jeśli ma to być nazwa + numer to możesz zmienić sobie nazwę do postaci plik_0.txt, plik_1.txt itd

wtedy pobierasz sobie nazwy plików dajesz nazwę do tablicy, jako selektora używasz właśnie _
i sprawdzasz jaka cyfra jest największa (tutaj jakąś pętle stosujesz), jak pętla dojdzie do końca (czy masz już liczbę w nazwie ostatnio utworzonego pliku)
robisz zmienną np

$x = twoja_liczba + 1;

i prz tworzeniu kolejnego pliku
plik_$x.txt

i problem z głowy.

jeśli w danym katalogu masz tylko te pliki możesz też zrobić count ilości plików i do tej liczby + 1

nie wiem do czego potrzebujesz różnorodności tych plików, ale dodanie aktualnego czasu wydaj mi się bardziej rozsądne, przy szukaniu potem jakiegoś pliku będzie Ci go łatwiej znaleźć data mówi o wiele więcej niż tylko numeracja
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.