Недавно занялся изучением PHP по книге Лоры Томсон "Разработка вэб-приложений с помощью PHP и MYSQL".В данный момент прохожу плоские файлы Пытаюсь создать файл,который занимается считыванием из формы(по примеру) Вот файл с формой: <form action="processororder.php" method=post> <table border="0"> <tr bgcolor="#cccccc"> <td width="150">Товар</td> <td width="15">Количество</td> </tr> <tr> <td>Автопокрышки</td> <td align="center"><input type="text" name="tireqty" size="3" maxlength="3"></td> </tr> <tr> <td>Машинное масло</td> <td align="center"><input type="text" name="oilqty" size="3" maxlength="3"></td> </tr> <tr> <td>Свечи зажигания</td> <td align="center"><input type="text" name="sparkqty" size="3" maxlength="3"></td> </tr> <tr> <td>Адрес доставки</td> <td align="center"><input type="text" name="address" size="30" maxlength="30"></td> </tr> <tr> <td>Как вы нашли компанию "Автозапчасти от Боба? "</td> <td><select name="find"> <option value = "a">Я регулярный клиент</option> <option value = "b">В телевизионной рекламе</option> <option value = "c">В телефонном справочнике</option> <option value = "d">Кто-то порекомендoвал</option> </select> </td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Отправить заказ"></td> </tr> </table> </form> А вот сам обработчик: <? //cоздать короткие имена переменных $tireqty = $_POST['tireqty']; $oilqty = $_POST['oilqty']; $sparkqty = $_POST['sparkqty']; $find = $_POST['find']; $address = $_POST['address']; $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; ?> <html> <head> <title>Автозапчасти от Боба</title> </head> <body> <h1>Автозапчасти от Боба</h1> <h2>Результаты заказа</h2> <? echo "<p>Заказ обработан в "; echo date('H:i, jS F');//H-часы в 24 часовом формате,і-минуты с ведущим нулем,j-день месяца без ведущего //нуля,S-суффикс "th",F-полное название месяца echo '</p>'; echo '<p>Список вашего заказа: </p>'; echo $tireqty. ' -> автопокрышек<br />'; echo $oilqty. ' -> бутылок с маслом<br />'; echo $sparkqty. ' -> свечей зажигания<br />'; $totalqty = 0; $totalqty = $tireqty + $oilqty + $sparkqty;//количество заказанных товаров echo 'Заказано товаров: '.$totalqty. '<br />'; if ($totalqty == 0) { echo '<font color=red>'; echo 'Вы ничего не заказали на предыдущей странице!</br />'; echo '</font>'; } else { //если выбрано больше 0 автопокрышек if ($tireqty>0) echo $tireqty. ' автопокрышек<br />'; else { echo '!!!Вернитесь обратно и введите количество автопокрышек,которые вы хотите купить!!!Или вы их хотите украсть?(Не советую,штраф 100 долларов)</br />'; } //если выбрано больше 0 бутылок if ($oilqty>0) echo $oilqty. ' бутылок машинного масла<br />'; else { echo '!!!Вернитесь обратно и введите количество бутылок машинного масла,которые вы хотите купить!!! Или вы их хотите украсть?(Не советую,штраф 100 долларов) </br />'; } //если выбрано больше 0 свечей зажигания if ($sparkqty>0) echo $sparkqty. ' свечей зажигания<br />'; else { echo '!!!Вернитесь обратно и введите количество свечей зажигания,которые вы хотите купить!!! Или вы их хотите украсть?(Не советую,штраф 100 долларов)</br />'; } } $totalamount = 0.00; //const define('TIREPRICE',100); define('OILPRICE',10); define('SPARKPRICE',4); //даем скидку!!!! if ($tireqty < 10) $discount = 0; elseif($tireqty >= 10 && $tireqty <= 49) $discount = 0.05; elseif($tireqty >= 50 && $tireqty <= 99) $discount = 0.1; elseif($tireqty > 100) $discount = 0.15; $totalamount = ($tireqty * TIREPRICE)-(($tireqty *TIREPRICE)*$discount) + $oilqty * OILPRICE + $sparkqty * SPARKPRICE; echo 'Итого(включая скидку): $' .number_format($totalamount,2).'<br />'; //number_format - сумы представлены в виде строк с двумя десятичными разрядами $taxrate = 0.10; //местный налог с продаж составляет 10% $totalamount = $totalamount * (1 + $taxrate); echo 'Всего, включая налог с продаж: $' .$totalamount. '<br />'; echo '<p>Адрес доставки: '.$address. '</p>'; switch ($find) { case 'a' : echo '<p>Регулярный клиент.</p>'; break; case 'b' : echo '<p>Клиент,обратившийся после телевизионной рекламы.</p>'; break; case 'c' : echo '<p>Клиент,обратившийся в результате нахождения информации в телефонном справочнике.</p>'; break; case 'd' : echo '<p>Клиент,обратившийся в результате чьей-то устной рекомендации.</p>'; break; default : echo '<p>Мы не можем определить, на основе какой информации вы нас нашли.</p>'; break; $outputstring = $date."\t".$tireqty." автопокрышек\t".$oilgty. " бутылок с маслом\t".$sparkqty. " cвечей зажигания\t\$".$totalamount."\t".$address."\n"; //открыть файл для добавления @ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'ab'); if (!$fp) { echo '<p><strong>В настоящий момент ваш запрос не может быть обработан. ' .'Пожалуйста, попытайтесь позже.</strong></p></body></html>'; exit; } fwrite($fp, $outputstring, strlen($outputstring)); fclose($fp); echo '<p>Заказ записан.</p>'; } Почему-то файл не создается(Подскажите,пожалуйста,в чем может быть дело?(Ошибок никаких не выдает) ?>
Замени свой выделенный код следующим и посмотри что выводит PHP: error_reporting(E_ALL); $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'ab'); if (!$fp) { echo '<p><strong>В настоящий момент ваш запрос не может быть обработан. ' .'Пожалуйста, попытайтесь позже.</strong></p></body></html>'; exit; } fwrite($fp, $outputstring, strlen($outputstring)); fclose($fp); echo '<p>Заказ записан.</p>'; }
Вывело,как и раньше: Автозапчасти от Боба Результаты заказа Заказ обработан в 16:37, 16th February Список вашего заказа: 6 -> автопокрышек 6 -> бутылок с маслом 6 -> свечей зажигания Заказано товаров: 18 6 автопокрышек 6 бутылок машинного масла 6 свечей зажигания Итого(включая скидку): $684.00 Всего, включая налог с продаж: $752.4 Адрес доставки: rgtrtrrt Регулярный клиент. В логе по прежнему ничего нет.
Забыл упомянуть,раньше создал еще один php документ для считывания из файла: <?php //создать короткое имя переменных $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; ?> <html> <head> <title>Автозапчасти от Боба - Заказы клиентов</title> </head> <body> <h1>Автозапчасти от Боба</h1> <h2>Заказы клиентов</h2> <?php @ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'rb'); if (!$fp) { echo '<p><strong>Нет ожидающих заказов. ' .'Пожалуйста, попытайтесь позже.</strong></p>'; exit; } while (!feof($fp)) { $order= fgets($fp, 999); echo $order. '<br />'; } fclose($fp); ?> </body> </html> Выводит: Автозапчасти от Боба Заказы клиентов Нет ожидающих заказов. Пожалуйста, попытайтесь позже. То есть,я так понял,файл так и не создался.
у тебя скобка закрывающая не там - switch нужно раньше закрывать сразу после break; PHP: switch ($find) { case 'a' : echo '<p>Регулярный клиент.</p>'; break; case 'b' : echo '<p>Клиент,обратившийся после телевизионной рекламы.</p>'; break; case 'c' : echo '<p>Клиент,обратившийся в результате нахождения информации в телефонном справочнике.</p>'; break; case 'd' : echo '<p>Клиент,обратившийся в результате чьей-то устной рекомендации.</p>'; break; default : echo '<p>Мы не можем определить, на основе какой информации вы нас нашли.</p>'; break; } $outputstring = $date."\t".$tireqty." автопокрышек\t".$oilgty. " бутылок с маслом\t".$sparkqty. " cвечей зажигания\t\$".$totalamount."\t".$address."\n"; //открыть файл для добавления @ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'ab'); if (!$fp) { echo '<p><strong>В настоящий момент ваш запрос не может быть обработан. ' .'Пожалуйста, попытайтесь позже.</strong></p></body></html>'; exit; } fwrite($fp, $outputstring, strlen($outputstring)); fclose($fp); echo '<p>Заказ записан.</p>';
Спасибо,ошибку исправил Теперь просто пишет после всего: В настоящий момент ваш запрос не может быть обработан. Пожалуйста, попытайтесь позже. То есть опять файл не создается(
Вот поудалял,все что можно было,чтобы исключить еще ошибки: <?php // создать короткие имена переменных $tireqty = $_POST['tireqty']; $oilqty = $_POST['oilqty']; $sparkqty = $_POST['sparkqty']; $address = $_POST['address']; $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; ?> <html> <head> <title>Автозапчасти от Боба - Результаты заказа</title> </head> <body> <h1>Автозапчасти от Боба</h1> <h2>Результаты заказа</h2> <?php $date = date('H:i, jS F'); echo '<p>Заказ обработан в '; echo $date; echo '</p>'; echo '<p>Список вашего заказа: </p>'; $totalqty = 0; $totalqty = $tireqty + $oilqty + $sparkqty; echo 'Заказано товаров: '.$totalqty.'<br />'; if( $totalqty == 0) { echo 'Вы ничего не заказали на предыдущей странице!<br />'; } else { if ( $tireqty>0 ) echo $tireqty.' автопокрышек <br />'; if ( $oilqty>0 ) echo $oilqty.' бутылок с маслом<br />'; if ( $sparkqty>0 ) echo $sparkqty.' свечей зажигания<br />'; } $totalamount = 0.00; define('TIREPRICE', 100); define('OILPRICE', 10); define('SPARKPRICE', 4); $totalamount = $tireqty * TIREPRICE + $oilqty * OILPRICE + $sparkqty * SPARKPRICE; $totalamount=number_format($totalamount, 2, '.', ' '); echo '<p>Итого по заказу: '.$totalamount.'</p>'; echo '<p>Адрес доставки: '.$address.'</p>'; $outputstring = $date."\t".$tireqty." автопокрышек\t".$oilqty. " бутылок с маслом\t".$sparkqty. " свечей зажигания\t\$".$totalamount."\t".$address."\n"; // открыть файл для добавления @ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt", 'ab'); if (!$fp) { echo '<p><strong>В настоящий момент ваш запрос не может быть обработан. ' .'Пожалуйста, попытайтесь позже.</strong></p></body></html>'; exit; } fwrite($fp, $outputstring, strlen($outputstring)); fclose($fp); echo '<p>Заказ записан.</p>'; ?> </body> </html> Результат таков: Автозапчасти от Боба Результаты заказа Заказ обработан в 17:45, 16th February Список вашего заказа: Заказано товаров: 18 6 автопокрышек 6 бутылок с маслом 6 свечей зажигания Итого по заказу: 684.00 Адрес доставки: Радостная 2б В настоящий момент ваш запрос не может быть обработан. Пожалуйста, попытайтесь позже.