За последние 24 часа нас посетили 34463 программиста и 1693 робота. Сейчас ищут 647 программистов ...

Cоздание файлов PHP 5.3.5

Тема в разделе "PHP для новичков", создана пользователем Валерий_paparazzi, 16 фев 2011.

  1. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Недавно занялся изучением 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>';

    }
    Почему-то файл не создается(Подскажите,пожалуйста,в чем может быть дело?(Ошибок никаких не выдает)
    ?>
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    мб права на папку "только для чтения"
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    при всех неожиданных эффектах нужно всегда смотреть в ЛОГ ОШИБОК =)
     
  4. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Так дело в том,что в логе ничего нет(
     
  5. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Кстати,пытался создать в папке,заведомо доступной для записи,тоже ничего произошло
     
  6. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Замени свой выделенный код следующим и посмотри что выводит
    PHP:
    1.  
    2. $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'ab');
    3. if (!$fp)
    4. {
    5. echo '<p><strong>В настоящий момент ваш запрос не может быть обработан. '
    6. .'Пожалуйста, попытайтесь позже.</strong></p></body></html>';
    7. }
    8. fwrite($fp, $outputstring, strlen($outputstring));
    9. fclose($fp);
    10.  
    11. echo '<p>Заказ записан.</p>';
    12. }
    13.  
     
  7. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Вывело,как и раньше:
    Автозапчасти от Боба
    Результаты заказа

    Заказ обработан в 16:37, 16th February

    Список вашего заказа:
    6 -> автопокрышек
    6 -> бутылок с маслом
    6 -> свечей зажигания
    Заказано товаров: 18
    6 автопокрышек
    6 бутылок машинного масла
    6 свечей зажигания
    Итого(включая скидку): $684.00
    Всего, включая налог с продаж: $752.4

    Адрес доставки: rgtrtrrt

    Регулярный клиент.
    В логе по прежнему ничего нет.
     
  8. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Забыл упомянуть,раньше создал еще один 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>
    Выводит:
    Автозапчасти от Боба
    Заказы клиентов

    Нет ожидающих заказов. Пожалуйста, попытайтесь позже.
    То есть,я так понял,файл так и не создался.
     
  9. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    у тебя скобка закрывающая не там - switch нужно раньше закрывать сразу после break;
    PHP:
    1.  
    2. switch ($find)
    3. {
    4. case 'a' :
    5. echo '<p>Регулярный клиент.</p>';
    6. break;
    7. case 'b' :
    8. echo '<p>Клиент,обратившийся после телевизионной рекламы.</p>';
    9. break;
    10. case 'c' :
    11. echo '<p>Клиент,обратившийся в результате нахождения информации в телефонном справочнике.</p>';
    12. break;
    13. case 'd' :
    14. echo '<p>Клиент,обратившийся в результате чьей-то устной рекомендации.</p>';
    15. break;
    16. default :
    17. echo '<p>Мы не можем определить, на основе какой информации вы нас нашли.</p>';
    18. break;
    19. }
    20. $outputstring = $date."\t".$tireqty." автопокрышек\t".$oilgty.
    21. " бутылок с маслом\t".$sparkqty.
    22. " cвечей зажигания\t\$".$totalamount."\t".$address."\n";
    23. //открыть файл для добавления
    24. @ $fp = fopen("$DOCUMENT_ROOT/../orders/orders.txt",'ab');
    25. if (!$fp)
    26. {
    27. echo '<p><strong>В настоящий момент ваш запрос не может быть обработан. '
    28. .'Пожалуйста, попытайтесь позже.</strong></p></body></html>';
    29. }
    30. fwrite($fp, $outputstring, strlen($outputstring));
    31. fclose($fp);
    32.  
    33. echo '<p>Заказ записан.</p>';
    34.  
    35.  
     
  10. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Спасибо,ошибку исправил
    Теперь просто пишет после всего:
    В настоящий момент ваш запрос не может быть обработан. Пожалуйста, попытайтесь позже.
    То есть опять файл не создается(
     
  11. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Вот поудалял,все что можно было,чтобы исключить еще ошибки:
    <?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б

    В настоящий момент ваш запрос не может быть обработан. Пожалуйста, попытайтесь позже.
     
  12. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Всем спасибо,разобрался наконец)