Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zapis danych zamówienia do pliku na serwerze.
Forum PHP.pl > Forum > Przedszkole
vahz
Witam, kilka dni temu zacząłem się uczyć PHP i mysql z książki "php i mysql. tworzenie stron www. vademecum profesjonalisty. wydanie czwarte" Jestem właśnie na początku drugiego rozdziału, do tej pory z mniejszymi lub wiekszymi problemami radziłem sobie sam metodą prób i błędów, zawsze po jakimś czasie osiągając zamierzony efekt. Niestety teraz stanąłem w punkcie dla mnie bez wyjscia. W rozdziale drugim pojawia się skrypt który zapisuje do pliku *.txt na serwerze zamówienia klientów w fikcyjnym sklepie z elementami samochodowymi. Problem polega na tym, że skrypt nie tworzy mi pliku. Wnioskuje to po tym, że uruchamiając skrypt który ma wyciągnąć dane z pliku tego nie robi. Próbowałem wszystkiego, natknąłem się na podobny problem, jednak nawet to rozwiązanie nic mi nie dało http://forum.php.pl/index.php?showtopic=215047.


W czym tkwi problem?

Link do moich poczynań http://marcinmproba.xorg.pl/formularz.php
Link do skryptu sprawdzającego zamówienia http://marcinmproba.xorg.pl/zobaczzamowienia.php


Kod który przetwarza zamówienia i powinien zapisywać dane do pliku

  1. <html>
  2. <head>
  3. <title>Części samochodowe Janka - wyniki zamówienia</title>
  4. </head>
  5. <body>
  6. <hl>Części samochodowe Janka</hl>
  7. <?php
  8. $iloscopon = $_POST['iloscopon'] ;
  9. $iloscoleju = $_POST['iloscoleju'] ;
  10. $iloscswiec = $_POST['iloscswiec'];
  11. $jak = $_POST['jak'];
  12. $adres = $_POST['adres'];
  13. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  14. $data=date( ' H:i. jS F Y');
  15. $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t"
  16. .$iloscswiec." swiec zapłonowych\t".$wartosc
  17. ."PLN\t". $adres."\n";
  18. define( "CENAOPON", 100);
  19. define( "CENAOLEJU", 100);
  20. define( "CENASWIEC", 100);
  21.  
  22. ?>
  23.  
  24.  
  25. <?php
  26. switch($jak) {
  27. case "a" : {
  28. echo '<p style="color:red"> ' ;
  29. echo "Stały klient.";
  30. echo '</p>' ;
  31. }
  32. break;
  33. case "b" :
  34. echo "<p>Reklama telewizyjna.</p>";
  35. break;
  36. case "c" :
  37. echo "<p>Książka telefoniczna.</p>";
  38. break;
  39. case "d" :
  40. echo "<p>Znajomy.</p>";
  41. break ;
  42. default :
  43. echo "<p>Źródło nieznane.</p>";
  44. break;
  45. }
  46. ?>
  47.  
  48. <h2>Wyniki zamówienia</h2>
  49. <?php
  50. echo '<p>Zamówienie Państwa wygląda na stępująco: </p>' ;
  51. echo $iloscopon.' opon<br />' ;
  52. echo $iloscoleju.' oleju<br />' ;
  53. echo $iloscswiec.' świec zapłonowych<br />' ;
  54.  
  55.  
  56.  
  57. $ilosc = 0;
  58. $ilosc = $iloscopon + $iloscoleju + $iloscswiec;
  59. echo 'Zamówionych części: '.$ilosc. '<br />';
  60. $wartosc = 0.00;
  61.  
  62. $wartosc = $iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC;
  63. echo 'Cena netto: '.number_format($wartosc. 2).' PLN<br />';
  64.  
  65. $stawkavat = 0.22;
  66. $wartosc = $wartosc * (1 + $stawkavat);
  67. echo 'Cena brutto: '.number_format($wartosc. 2).' PLN<br />';
  68.  
  69.  
  70. if( $iloscopon < 10 )
  71. $znizka = 0;
  72. elseif( $iloscopon >= 10 && $iloscopon <= 49 )
  73. $znizka = 5;
  74. elseif( $iloscopon >= 50 && $iloscopon <= 99 )
  75. $znizka = 10;
  76. elseif( $iloscopon > 100 )
  77. $znizka = 15;
  78.  
  79.  
  80.  
  81. if( $ilosc == 0 ){
  82. echo '<p style="color:red"> ' ;
  83. echo 'Na poprzedniej stronie nie zostało złożone żadne zamówienie !<br />';
  84. echo '</p>' ;
  85. }
  86.  
  87. else {
  88. if ($iloscopon > 0)
  89. echo $iloscopon." opon<br /> ";
  90. if ($iloscoleju > 0)
  91. echo $iloscoleju." butelek oleju<br />";
  92. if ($iloscswiec > 0)
  93. echo $iloscswiec. " świec zapłonowych <br /> ";
  94. echo $znizka. " procent zniżki na opony <br /> ";
  95. echo '<p>zamówienie przyjete o ';
  96. echo date('H:i. jS F Y');
  97. echo $adres;
  98. echo $ciagwyjsciowy;
  99. echo '</p>';
  100. }
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t"
  108. .$iloscswiec." swiec zapłonowych\t".$wartosc
  109. ."PLN\t". $adres."\n";
  110.  
  111. @ $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');
  112.  
  113. flock($wp, LOCK_EX);
  114. if (!$wp) {
  115. echo "<p><strong> Zawówienie Państwa nie może zostać przyjęte w tej chwili.
  116. Proszę spróbować później.</strong></p></body></html>";
  117. }
  118. fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
  119. flock($wp, LOCK_UN);
  120. fclose($wp);
  121.  
  122. echo "<p>Zamówienie zapisane.</p>";
  123.  
  124.  
  125. ?>
  126.  
  127.  
  128. </body>
  129. </html>
nospor
Komunikat bledu wskazuje wyraznie ze blad jest z tworzeniem pliku....

Wywal wszystkie malpy @
Wlaczy wyswietlanie bledow
A wszystko bedzie jasne
Temat: Jak poprawnie zada pytanie
vahz
Usunąłem małpy, zuploadowalem strone i nadal nic nie wiem sad.gif. Btw wszystko piszę zwyczajnie w notatniku, dopiero przed chwilą zainstalowałem notepad++, mam nadzieję że będzie to ułatwieniem w pisaniu. Czy jest jakiś program który bez uploadu pokazuje błędy? Bo wywnioskowałem to z Twojej wypowiedzi.
nospor
W linku co ci podalem masz napisane jak wlaczyc WYSWIETLANIE bledow. Nie bez powodu ten link dostales :/
vahz
Zapomniałem dopisać w poprzednim poście że to zrobiłem, nic więcej na stronie sie nie wyświetla, jestem początkujący więc tym bardziej nie wiem co więcej mogę zrobić.
nospor
Pokaz kod po zmianach
vahz
  1. <html>
  2. <head>
  3. <title>Części samochodowe Janka - wyniki zamówienia</title>
  4. </head>
  5. <body>
  6. <hl>Części samochodowe Janka</hl>
  7. <?php
  8. ini_set('display_errors','1');
  9.  
  10. $iloscopon = $_POST['iloscopon'] ;
  11. $iloscoleju = $_POST['iloscoleju'] ;
  12. $iloscswiec = $_POST['iloscswiec'];
  13. $jak = $_POST['jak'];
  14. $adres = $_POST['adres'];
  15. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  16. $data=date( ' H:i. jS F Y');
  17. $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t"
  18. .$iloscswiec." swiec zapłonowych\t".$wartosc
  19. ."PLN\t". $adres."\n";
  20. define( "CENAOPON", 100);
  21. define( "CENAOLEJU", 100);
  22. define( "CENASWIEC", 100);
  23.  
  24. ?>
  25.  
  26. <?php
  27. switch($jak) {
  28. case "a" : {
  29. echo '<p style="color:red"> ' ;
  30. echo "Stały klient.";
  31. echo '</p>' ;
  32. }
  33. break;
  34. case "b" :
  35. echo "<p>Reklama telewizyjna.</p>";
  36. break;
  37. case "c" :
  38. echo "<p>Książka telefoniczna.</p>";
  39. break;
  40. case "d" :
  41. echo "<p>Znajomy.</p>";
  42. break ;
  43. default :
  44. echo "<p>Źródło nieznane.</p>";
  45. break;
  46. }
  47. ?>
  48.  
  49. <h2>Wyniki zamówienia</h2>
  50. <?php
  51. echo '<p>Zamówienie Państwa wygląda na stępująco: </p>' ;
  52. echo $iloscopon.' opon<br />' ;
  53. echo $iloscoleju.' oleju<br />' ;
  54. echo $iloscswiec.' świec zapłonowych<br />' ;
  55.  
  56.  
  57.  
  58. $ilosc = 0;
  59. $ilosc = $iloscopon + $iloscoleju + $iloscswiec;
  60. echo 'Zamówionych części: '.$ilosc. '<br />';
  61. $wartosc = 0.00;
  62.  
  63. $wartosc = $iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC;
  64. echo 'Cena netto: '.number_format($wartosc. 2).' PLN<br />';
  65.  
  66. $stawkavat = 0.22;
  67. $wartosc = $wartosc * (1 + $stawkavat);
  68. echo 'Cena brutto: '.number_format($wartosc. 2).' PLN<br />';
  69.  
  70.  
  71. if( $iloscopon < 10 )
  72. $znizka = 0;
  73. elseif( $iloscopon >= 10 && $iloscopon <= 49 )
  74. $znizka = 5;
  75. elseif( $iloscopon >= 50 && $iloscopon <= 99 )
  76. $znizka = 10;
  77. elseif( $iloscopon > 100 )
  78. $znizka = 15;
  79.  
  80.  
  81.  
  82. if( $ilosc == 0 ){
  83. echo '<p style="color:red"> ' ;
  84. echo 'Na poprzedniej stronie nie zostało złożone żadne zamówienie !<br />';
  85. echo '</p>' ;
  86. }
  87.  
  88. else {
  89. if ($iloscopon > 0)
  90. echo $iloscopon." opon<br /> ";
  91. if ($iloscoleju > 0)
  92. echo $iloscoleju." butelek oleju<br />";
  93. if ($iloscswiec > 0)
  94. echo $iloscswiec. " świec zapłonowych <br /> ";
  95. echo $znizka. " procent zniżki na opony <br /> ";
  96. echo '<p>zamówienie przyjete o ';
  97. echo date('H:i. jS F Y');
  98. echo $adres;
  99. echo $ciagwyjsciowy;
  100. echo '</p>';
  101. }
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. $ciagwyjsciowy = $data."\t".$iloscopon." opon \t".$iloscoleju." butelek oleju\t"
  109. .$iloscswiec." swiec zapłonowych\t".$wartosc
  110. ."PLN\t". $adres."\n";
  111.  
  112. $wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');
  113.  
  114. flock($wp, LOCK_EX);
  115. if (!$wp) {
  116. echo "<p><strong> Zawówienie Państwa nie może zostać przyjęte w tej chwili.
  117. Proszę spróbować później.</strong></p></body></html>";
  118. }
  119. fwrite($wp, $ciagwyjsciowy, strlen($ciagwyjsciowy));
  120. flock($wp, LOCK_UN);
  121. fclose($wp);
  122.  
  123. echo "<p>Zamówienie zapisane.</p>";
  124.  
  125.  
  126. ?>
  127.  
  128.  
  129. </body>
  130. </html>
nospor
Co wyswietla
echo "$DOCUMENT_ROOT/../zamowienia/zamowienia.txt";
?
vahz
/etc/apache2/htdocs/../zamowienia/zamowienia.txt
nospor
katalog zamowienia gdzie lezy? Bo wg twojego zapisu lezy w
/etc/apache2/
w co raczej watpie
vahz
Nie tworzyłem żadnych folderów/plików na serwerze. Z tego co zrozumiałem to ten skrypt miał wszystko stworzyć jeżeli nie było takiego pliku.
nospor
No wypadaloby utworzyc katalog zamowienia skoro tam zamierzasz zapisywac dane
vahz
w programie wygląda to tak, utworzyłem folder. Nie mam pomysłu co zrobić dalej, będe wdzieczny za kazda rade.

http://imgur.com/EYeV01a
nospor
zdjecie mi sie nie laduje


Dobra, niewazne.... skoro nie ogarniasz katalogow to nie:
$wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');
a:
$wp = fopen("zamowienia.txt", 'a+');
com
zacznij od ustawienia kodowania na UTF-8 bez bom smile.gif
vahz
zmieniłem
$wp = fopen("$DOCUMENT_ROOT/../zamowienia/zamowienia.txt", 'ab');
na:
$wp = fopen("zamowienia.txt", 'a+');

niestety nic nie dało

btw, próbowałem w notepadzie++ zmienić formatowanie o którym wpomiałeś, jeszcze bardziej wywaliło krzaki... sad.gif
com
bo jak tak chcesz to dajesz konwertuj na utf-8 bez bom a nie koduj smile.gif ale jak masz bom to pewnie gdzieś sie sypie tylko błedy msz ukryte..
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.