Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis/odczyt pliku [PHP]
Forum PHP.pl > Forum > Przedszkole
Boshi
Jak można zapisywać do pliku informacje przesłane przez formularz metodą PHOST? Co dokładnie trzeba podać w ścieżce fucnkcji fopen? Podsumowując: Mam formularz przysłajacy pewne dane metodą PHOST i chcę aby te dane były zapisywane w pliku w folderze gdzie mam obecnie skrypt. Jak dokładnie coś takiego wykonać? Wiem, że to podsawy podstaw, ale gubie się w tym.

Szymciosek
google przydatne jest bardzo

hasło: php zapis do pliku

http://www.kess.snug.pl/?sid=10&pid=19

tylko zamiast:
$dane = "tekst do wprowadzenia\n";

robisz
$dane = $_POST['zmienna'];

Mam nadzieję, że z metodą POST pracowałeś gdziekolwiek ?
Boshi
Czy pracowałem? Raczej z książką kod wygląda ogólnie tak: Dlaczego pytasz?

Formularz:

  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  4. <title>Części samochodowe Janka</title>
  5. </head>
  6. <body>
  7. <h1>Części samochodowe Janka</h1>
  8. <h2>Formularz zamówienia</h2>
  9.  
  10. <form action="przetworzzamowienie.php" method=post>
  11. <table border=0>
  12. <tr bgcolor=#cccccc>
  13. <td width=150>Produkt</td>
  14. <td width=15>Ilość</td>
  15. </tr>
  16. <tr>
  17. <td>Opony</td>
  18. <td align=left><input type="text" name="iloscopon" size=3 maxlength=3></td>
  19. </tr>
  20. <tr>
  21. <td>Olej</td>
  22. <td align=left><input type="text" name="iloscoleju" size=3 maxlength=3></td>
  23. </tr>
  24. <tr>
  25. <td>Świece Zapłonowe</td>
  26. <td align=left><input type="text" name="iloscswiec" size=3 maxlength=3></td>
  27. </tr>
  28. <tr>
  29. <td>Adres</td>
  30. <td align=left><input type="text" name="adres" size=40 maxlength=40></td>
  31. </tr>
  32. <tr>
  33. <td colspan=2 align=center><input type=submit value="Złóż zamówienie"></td>
  34. </tr>
  35. </table>
  36. </form>
  37.  
  38. </body>
  39. </html>


Skrypt:

  1. <?php
  2. //utwórz krótkie nazwy zmiennych
  3. $iloscopon = $_POST['iloscopon'];
  4. $iloscoleju = $_POST['iloscoleju'];
  5. $iloscswiec = $_POST['iloscswiec'];
  6. $adres = $_POST['adres'];
  7. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  8.  
  9. ?>
  10.  
  11. <html>
  12. <head>
  13.  
  14. <meta http-equiv=\"content-type\" content=\"text/html; charset=iso-8859-2\">
  15. <title>Części samochodowe Janka — wyniki zamówienia</title>
  16. </head>
  17. <body>
  18. <h1>Części samochodowe Janka</h1>
  19. <h2>wyniki zamówienia</h2>
  20. <?php
  21. echo isset($jak);
  22. echo '<br>';
  23. echo "<p>zamówienie przyjęte o</p>";
  24. echo date (' H: i. jS F ');
  25.  
  26. echo '<br><br>';
  27.  
  28. $ilosc=0;
  29. $ilosc = $iloscopon + $iloscoleju + $iloscswiec;
  30. echo '<b>zamówionych części:</b> '.$ilosc. '<br>';
  31.  
  32. /*skrypt obliczający ceny brutto oraz netto w zależności
  33. od zakupionych towarów*/
  34.  
  35. $wartosc = 0;
  36. //Argumenty funckji rozdzielamy przenickami, nie kropkami!
  37. @define ('CENAOPON', 100);
  38. @define ('CENAOLEJU', 20);
  39. @define ('CENASWIEC', 5);
  40.  
  41.  
  42. $wartosc = $iloscopon * CENAOPON //przemnożenie poszczególnych wartości przez stałe ceny, brane z STAŁYCH
  43. + $iloscoleju * CENAOLEJU
  44. + $iloscswiec * CENASWIEC;
  45.  
  46. echo ' cena netto: '.number_format($wartosc, 2). 'PLN<br>'; //Funkcja number format okresla ilosć miejsc po przecinku
  47. $stawkavat= 0.23; //stawka wat wynosi 23 %
  48. $wartosc= $wartosc * (1 + $stawkavat);
  49. echo 'cena brutto wynosi '.number_format($wartosc, 2). 'PLN<br>';
  50.  
  51. if($ilosc == 0 )
  52. {
  53. echo '<p><b><span style="color: #ff0000">';
  54. echo 'Na poprzedniej stronie nie zostalo żłożone żadne zamówieinie! <br>';
  55. echo '</b></span></p>';
  56. }
  57.  
  58.  
  59.  
  60.  
  61.  
  62. else
  63. {
  64. echo '<p><b><span style="color: #0033FF">';
  65. echo 'Dziękuje za zamówienie. Oto lista zamówionych części:<br>';
  66.  
  67. if ($iloscopon > 0 )
  68. echo $iloscopon. ' kompletów opon<br>';
  69. if ($iloscoleju > 0 )
  70. echo $iloscoleju. ' butelek oleju<br>';
  71. if ($iloscswiec > 0)
  72. echo $iloscswiec. ' swiec<br>';
  73. echo '</span></b></p>';
  74. }
  75.  
  76.  
  77.  
  78.  
  79. if($iloscopon <10 )
  80. $znizka = 0;
  81. elseif ($iloscopon >= 10 && $iloscopon <= 49)
  82. $znizka = 5;
  83. elseif($iloscopon >= 50 && $iloscopon <= 99)
  84. $znizka= 10;
  85. elseif($iloscopon >= 100)
  86. $znizka = 15;
  87.  
  88. if( $iloscopon >= 10)
  89.  
  90. echo '<b>Adres wysyłki to:</b>'. "<i> $adres<br></i> ";
  91. echo 'Na wybraną ilość opon dostali państwo '. "<i> $znizka</i>" . ' % znizki<br><br>';
  92.  
  93. $wartosc = $iloscopon * CENAOPON *((100-$znizka)/100); // Zmiennej $wartość przypisujemy X * cena podana w stałych (define)
  94.  
  95. ?>
  96. </body>
  97. </html>
  98.  
Szymciosek
Znam ten skrypt z vademecum.

Ale to co chcesz osiągnąć to pewnie zapisanie do pliku tych danych
  1. $iloscopon = $_POST['iloscopon'];
  2. $iloscoleju = $_POST['iloscoleju'];
  3. $iloscswiec = $_POST['iloscswiec'];
  4. $adres = $_POST['adres'];


w swoim skrypcie umieszczasz:
  1. $dane = $iloscopon.' '.$iloscoleju.' '.$iloscswiec.' '.$adres;
  2.  
  3. // przypisanie zmniennej $file nazwy pliku
  4. $file = "baza.txt";
  5.  
  6. // uchwyt pliku, otwarcie do dopisania
  7. $fp = fopen($file, "a");
  8.  
  9. // zapisanie danych do pliku
  10. fwrite($fp, $dane);
  11.  
  12. // zamknięcie pliku
  13. fclose($fp);


I teraz w zmiennej $dane masz spis czyli możesz dostać w pliku coś takiego:

Kod
4 14 12 Adres zamieszkania


Dodatkowo żeby w kolejnych liniach się zapisywało możesz dodać do $dane
  1. $dane = $iloscopon.' '.$iloscoleju.' '.$iloscswiec.' '.$adres.'\r\n';


Czy o to chodzi ?
Boshi
Tak jest to z vademekum, tak o to chodziło, wyjaśnij mi tylko jeszcze kilka kwestii.

1 Czy to
  1. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
jest konieczne do działania skryptu?
2
  1. $dane = $iloscopon.' '.$iloscoleju.' '.$iloscswiec.' '.$adres.'\r\n';
- W pliku tekstowym zapisuje sie obok siebie wyświetlając również \r\n chyba nie powinon a przez te komendy każdy kolejny wpis powininien być w osobnej lini?

Myślę, że wystarczy m ito wyjaśnić a do reszty dojdę z książki.

Dzięki za chęci pomocy smile.gif
!*!
1. Nie
2. Jak chcesz w nowej linii to użyj cudzysłowu
  1. $dane = $iloscopon.' '.$iloscoleju.' '.$iloscswiec.' '.$adres."\r\n";


Poza tym, do tak prostych rzeczy możesz używać funkcji file_put_contents.
Szymciosek
Tak, zapomniałem, że niektóre rzeczy muszą być w cudzysłowu a pisałem z ręki.
Co do Twojej nauki, warto coś robić z tej książki, ale nie opieraj się TYLKO na niej, przejrzyj manual jeśli jesteś na zapisywaniu do plików itd, przejrzyj inne przykłady, które znajdziesz w internecie, sprawdź co jeszcze możesz zrobić ciekawego, bo książka (z resztą jak często zobaczysz) to tylko podstawy i odsyłają do jakiegoś innego źródła.
Boshi
Tak wiem, nie robie tylko przykładów, testuje różne fucncję podane w niej, np pętle czy operatory Teraz popatrzę za zapisem/otwieraniem pliku.
Dzięki za wytłumaczenie wszystkiego obu wam smile.gif

Jeszcze jedno. Dlaczego ten skrypt
  1. $wartosc = $iloscopon * CENAOPON *((100-$znizka)/100); // Zmiennej $wartość przypisujemy X * cena podana w stałych (define)
nie obniża ceny o 5-10-15 %? jak w skrypcie wyżej. Np 50 opon x 100 =5000 * 23% podatku powinno być 6150 zł, jest ok, ale przy tej ilości towaru zniżka jest 10% a jej nie uwzględnia, czyli powinno być chyba 5535.
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.