Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]problem z utworzeniem pliku .txt i wpisaniu danych po wrzuceniu na serwer
Forum PHP.pl > Forum > Przedszkole
imysz
Witam. Uczę się php i napotkałem na problem. mam formularz i plik php który go przetwarza. Na localhost w momencie kliknięcia złóż zamówienie, wszystkie dane wpisane w formularzu zostały zapisane w pliku tekstowym. Po wrzuceniu plików na darmowy serwer nie da się w ogóle zapisać zamówień w dokumencie tekstowym.

formularz

CODE
<form action="przetworz.php" method="post">

<table>
<tr class="form">
<td class="main1">Produkt</td>
<td class="main">Ilość</td>
</tr>
<tr>

<td>Opony</td>
<td class="td_align"><input type="text" name="iloscopon" size="4" maxlength="4" /></td>
</tr>
<tr>

<td>Olej</td>
<td class="td_align"><input type="text" name="iloscoleju" size="4" maxlength="4" /></td>
</tr>
<tr>

<td>Świece</td>
<td class="td_align"><input type="text" name="iloscswiec" size="4" maxlength="4" /></td>
</tr>
<tr>
<td >Skąd dowiedzili się Państwo o sklepie? </td>
<td class="td_align"><select name="jak">
<option></option>
<option value="a">Jestem stałym klijentem</option>
<option value="b">Reklama tv</option>
<option value="c">Książka telefoniczna</option>
<option value="d">Znajomy</option>
</select>
</td>
</tr>
<tr>
<td>Adres do wysyłki</td>
<td><input type="text" name="adress" size="50" maxlength="50" /></td>
</tr>


<tr>
<td colspan="2" align="center"><input type="submit" value="Złóż zamówienie"/></td>
</tr>

</table>


</form>


plik który przetwarza formularz

CODE
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-language" content="pl" />
<title>Wyniki zamówienia</title>
</head>

<body>

<h1>Części samochodowe</h1>
<h2>Wyniki zamówienia:</h2>

<?php

// tworzenie którkich nazw zmiennych
$iloscopon = $_POST['iloscopon'];
$iloscoleju = $_POST['iloscoleju'];
$iloscswiec = $_POST['iloscswiec'];
$jak = $_POST['jak'];
$adress = $_POST['adress'];
$date=date('H:i, jS F');

$ilosc =0;
$ilosc = $iloscopon + $iloscoleju + $iloscswiec;

//sprawdzenie czy wypełniono formularz
if ($ilosc==0)
{
echo '<font color=red><b> formularz został wypełniony nieprawidłowo</b> </font><br/>';
}
else{

echo '<p>Zamówienie przyjęte o ';
echo date('H:i, jS F');
echo '</p>';

if($iloscopon >0)
echo $iloscopon. ' Opon<br/>';
if($iloscoleju >0)
echo $iloscoleju. ' Oleju <br/>';
if ($iloscswiec >0)
echo $iloscswiec. ' Świec zapłonowych<br/>';


echo '<br/>Łącznie sztuk: '.$ilosc.'<br/>' ;

$wartosc = 0.00;

define ('CENAOPON' , 100);
define('CENAOLEJU' , 10);
define('CENASWIEC' , 4);

$wartosc = $iloscopon * CENAOPON + $iloscoleju * CENAOLEJU + $iloscswiec * CENASWIEC;

echo 'Cena netto: ' .number_format($wartosc, 2). ' PLN<br/>';

$stawkavat = 1.22; // stawka VAT wynosi 22 % czyli 122% ceny netto
$wartosc = $wartosc * ( $stawkavat );

echo 'Cena brutto: ' .number_format($wartosc, 2). ' PLN<br/>';



if ($iloscopon <10)
$znizka = 0;
elseif($iloscopon >= 10 && $iloscopon <=49)
$znizka= 0.05;
elseif($iloscopon >=50 && $iloscopon <=99)
$znizka= 0.10;
elseif($iloscopon >=100)
$znizka=0.20;


$wartosc= $wartosc * (1 - $znizka );
echo '<br/><font color=red><b> RABAT </b></font><br/>';
echo 'Zniżka wynosi: ' .($znizka * 100). ' %<br/>';
echo 'Cena po znizce(brutto): '. number_format($wartosc, 2). ' PLN';




switch($jak)
{
case 'a';
echo '<p>Stały klijent</p>';
break;
case 'b';
echo '<p>Reklama</p>';
break;
case 'c';
echo '<p>Książka</p>';
break;
case 'd';
echo '<p>Znajomy</p>';
break;
default;
echo '<br/>Nie wybrano żadnej opcji';
break;
}


echo '<br/>' .$adress. '<br/>';


$ciagwyjsciowy = $date."\t".$iloscopon." Opon \t".$iloscoleju." Butelek oleju\t".$iloscswiec." Świec zapłonowych\t".$wartosc ." PLN\t". $adress. " \r\n";



// otwarcie pliku w celu zapisania
@ $wp = fopen('../zamowienia.txt', 'ab');;

if (!$wp)
{
echo '<p><strong> Zamówienie nie może zostać przyjęte w tej chwili.' . 'Proszę spróbować później.</strong></p></body></html>';
exit;
}

fwrite($wp, $ciagwyjsciowy,strlen($ciagwyjsciowy));
fclose($wp);

echo '<br/><p>zamówienie przyjęte</p>';
}





?>
</body>



</html>


coś chyba jest nie tak w tym momencie:
CODE
@ $wp = fopen('../zamowienia.txt', 'ab');;

if (!$wp)
{
echo '<p><strong> Zamówienie nie może zostać przyjęte w tej chwili.' . 'Proszę spróbować później.</strong></p></body></html>';
exit;
}

fwrite($wp, $ciagwyjsciowy,strlen($ciagwyjsciowy));
fclose($wp);


jak to rozwiązać ?
pozdrawiam
flashdev
Wyłącz tłumienie błędów (@) i pokaż jaki błąd zwraca php.
Sprawdź czy ustawiłeś dla pliku '../zamowienia.txt' odpowiednie atrybuty (chmod).
Spróbuj otworzyć plik w taki sposób:
$wp = fopen('../zamowienia.txt', 'w');
imysz
usunąłem @

kod teraz wygląda w ten sposób
CODE
$wp = fopen('../zamowienia.txt', 'w');

if (!$wp)
{
echo '<p><strong> Zamówienie nie może zostać przyjęte w tej chwili.' . 'Proszę spróbować później.</strong></p></body></html>';
exit;
}

fwrite($wp, $ciagwyjsciowy,strlen($ciagwyjsciowy));
fclose($wp);

echo '<br/><p>zamówienie przyjęte</p>';


i nadal wyświetla się komunikat "Zamówienie nie może zostać przyjęte w tej chwili..." po usunięci at nic się nie zmieniło co do komunikatu..
Pawel_W
trochę Cię nie rozumiem, po co się męczysz z czymś takim:
  1. fwrite($wp, $ciagwyjsciowy,strlen($ciagwyjsciowy));

jak i tak masz pusty plik, więc wystarczy
  1. file_put_contents('nazwa.txt', $ciagwyjsciowy);


i sprawdź jak te chmody winksmiley.jpg
kfc4
Dla uściślenia powinny wynosić 777.
imysz
okej, doszedłem już do tego.

ma być tak w fopen:

CODE
$wp = fopen('./zamowienia.txt', 'ab');


chmod miałem 644

a co do fwrite, to po zmienieniu na file_put_contents wyrzuca taki błąd

" Fatal error: Call to undefined function: file_put_contents() in /var/www/sites/yoyo.pl/t/e/test4163/przetworz.php on line 118 ".

z fwrite działa normalnie. Wpisałem tak, bo na razie uczę się z książki i ćwiczę na tych przykładach które tam są. smile.gif a jaka jest różnica pomiędzy file_put_contents a fwrite ?

pozdrawiam
Pawel_W
file_put_contents nie potrzebuje wskaźniku pliku (otwarcia przez fopen()), ale nie jest obsługiwane przez wszystkie serwery ;(
imysz
bo testowałem właśnie file_put_contents i na jednym działo, a na drugim już nie. teraz już wiem smile.gif

a co do chmod to tak, ma być 777
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.