ФорумПрограммированиеPHP для идиотов → Не покупается товар ( инет -магазин )

Не покупается товар ( инет -магазин )

  • Женя

    Сообщения: 23 Репутация: N Группа: Кто попало

    Spritz 29 февраля 2012 г. 3:37

    Помогите пожалуйста решить проблему, в моем магазине, при нажатии на кнопку "купить", должно быть написано " Спасибо за покупку!" , в моём случае, пишет: "К сожалению в данный момент заказ невозможен по техническим причинам. Попробуйте сделать заказ позже."
    Вот код, вроде же все правильно написано, форма передает в "act=spasibo", что не так то?

    <?php 
    error_reporting(0);

    function template()
    {
    return include("./includes/mysql.php");
    }


    function shop_list_cat($shop_query){
    get_cat($shop_query);
    };

    function shop_catalog_show($prod)
    {
    echo "$prod";
    $result = mysql_query("SELECT * FROM products WHERE cat='$prod' ");
    if (!$result) {
    echo "Выборка не удалась!<br>";
    exit (mysql_error());
    }
    if ( mysql_num_rows($result) > 0) {
    $products = mysql_fetch_array($result);
    }
    else {
    exit ( "База данных пуста!");
    }
    do{
    echo '
    <span class="cat_head">'.$products['name'].'</span>
    <br><img src="./img/kat_fon.png" height="5" width="670" />
    <table width="700" height="100" border="0">
    <tr>
    <td width="283" height="207" align="left" valign="top"><p><img src="'.$products['img'].'" height="219" /></p></td>
    <td width="408" align="left" valign="top" class="description"><p>'.$products['text'].' </p></td>
    </tr><tr>
    <td align="left" valign="middle"> <a href="./catalog.php?act=buy&item='.$products['name'].'&price='.$products['price'].'"><IMG SRC="./img/buy.gif" ALT="КУПИТЬ!"></a></td>
    <td align="left" valign="middle"><strong class="price">'.$products['price'].'</strong></td>
    </tr>
    </table><br/><!–<br/><br/> –>
    ';
    } while ($products = mysql_fetch_array($result));


    };



    function shop_say_spasibo($item,$price,$name,$addr,$phone){

    if ($name == '' OR $addr == '' OR $phone == ''){
    echo 'Заполните все поля.<br><input type="button" value="Заполнить" onclick="history.back()">';
    exit;
    };



    shop_mail($item,$price,$name,$addr,$phone);

    echo '
    <div align="center"><br/>
    Спасибо за покупку!<br/>
    </div>

    Вы заказали<br/><br/>
    Наименование: '.$item.'<br/>
    Цена: '.$price.'<br/>
    С доставкой по адресу: '.$addr.'<br/>
    <div align="center"><br/>

    <br/><br/>
    </div>
    ';
    };






    function shop_buy($shop_item_name,$shop_item_price){
    echo '
    <div>
    <form id="form1" name="form1" method="post" action="./catalog.php?act=spasibo">
    <table width="550" border="0" align="left">
    <tr>
    <td width="140" align="left" valign="top"><strong>Товар:</strong></td>
    <td width="353" align="left" valign="top">'.$shop_item_name.'</td>
    </tr><tr>
    <td align="left" valign="top"><strong>Цена:</strong></td>
    <td align="left" valign="top">'.$shop_item_price.' грн.</td>
    </tr><tr>
    <td align="left" valign="top"><strong>Ваше имя:</strong></td>
    <td align="left" valign="top"><input name="name" type="text" id="name" style="border:thin dashed #CCC" size="60" /></td>
    </tr><tr>
    <td align="left" valign="top"><strong>Адрес доставки:</strong></td>
    <td align="left" valign="top"><input name="addr" type="text" id="addr" style="border:thin dashed #CCC" size="60" /></td>
    </tr><tr>
    <td align="left" valign="top"><strong>Номер телефона:</strong></td>
    <td align="left" valign="top"><input name="phone" type="text" id="phone" style="border:thin dashed #CCC" size="60" /></td>
    </tr><tr>
    <td colspan="2"><div align="center">
    <input type="submit" name="button" id="button" value=" КУПИТЬ! " />
    </div></td></tr>
    </table>
    <input name="item" type="hidden" value="'.$shop_item_name.'" />
    <input name="price" type="hidden" value="'.$shop_item_price.'" />
    </form>
    </div>
    ';

    };


    function shop_mail($item,$price,$name,$addr,$phone){

    $message = "
    ПРЕВЕД!Есть заказ!

    Товар: $item
    Цена: $price
    Заказчик: $name
    Адрес: $addr
    Телефон: $phone

    Спасибо за внимание.
    " ;
    mail(PRODAVEC_MAIL,"ЗАКАЗ!","$message","From: ".FROM_MAIL."")
    or die ('К сожалению в данный момент заказ невозможен по техническим причинам. Попробуйте сделать заказ позже.');

    };



    ?>


    CATALOG.PHP
    <?php

    if (isset($_GET['act']))
    {
    $action = $_GET['act'];
    if ($action == 'list') { shop_list_cat($_GET['cat']); };
    if ($action == 'buy') { shop_buy($_GET['item'],$_GET['price']); };
    if ($action == 'spasibo') { shop_say_spasibo($_POST['item'],$_POST['price'],$_POST['name'],$_POST['addr'],$_POST['phone']); };
    if ($action == 'show') { shop_catalog_show ($_GET['prod']); };

    }ELSE{
    shop_list_cat("default");
    };
    ?>


    красным выделил, то, что по идее должно срабатывать,
    зелёным, это форма передает в catalog.php,
    голубым, то, что у меня срабатывает.
    В чем может быть ошибка?
  • Женя

    Сообщения: 23 Репутация: N Группа: Кто попало

    Spritz 29 февраля 2012 г. 3:43, спустя 6 минут 11 секунд

    Интернет магазин на локальной машине.
    При включенном показе ошибок, выдает следующее:

    Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\sportfood\includes\functions.php on line 140
  • Женя

    Сообщения: 23 Репутация: N Группа: Кто попало

    Spritz 29 февраля 2012 г. 4:10, спустя 26 минут 35 секунд

    Установил sendmail на wamp сервер, все равно не отправляет письмо…
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 29 февраля 2012 г. 8:34, спустя 4 часа 24 минуты 6 секунд

    коли не изменяет мне память, у тебя отправка идет через smtp, а не через sendmail, поменяй настройки в php.ini
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 29 февраля 2012 г. 11:02, спустя 2 часа 28 минут 36 секунд

    Вообще конечно жуткий говнокод.
    Зачем передавать передавать spasibo черз GET когда можно hidden поле сделать и спокойно со всеми переменными в POST передать.
    Из catalog.php ибери все IF и почитай про switch case.
    На локалке сам никогда отправку почты не тестю, проще потом уже на хостинге всё проверить. один хрен не факт что если дома работает, заработает у хостера.
    from TRIAL with LOVE
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 29 февраля 2012 г. 12:10, спустя 1 час 7 минут 58 секунд

    TRIAL, нуп
    Сапожник без сапог
  • lekafe

    Сообщения: 149 Репутация: N Группа: Адекваты

    Spritz 29 февраля 2012 г. 12:53, спустя 42 минуты 12 секунд

    много хуевого кода =_____=
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 29 февраля 2012 г. 13:22, спустя 29 минут 43 секунды

    мда пиздец… я просто уйду отсюда )
  • Женя

    Сообщения: 23 Репутация: N Группа: Кто попало

    Spritz 29 февраля 2012 г. 13:47, спустя 24 минуты 59 секунд


    коли не изменяет мне память, у тебя отправка идет через smtp, а не через sendmail, поменяй настройки в php.ini


    Вот настройки из php.ini, тут все правильно?

    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP =
    sendmail_from =
    sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
    smtp_port = 25
    ; http://php.net/smtp-port
  • Fujin

    Сообщения: 23 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 22:08, спустя 171 день 8 часов 20 минут

    Я к марксизму приобщусь,
    Я на Фурцевой женюсь.
    Буду тискать сиски я
    Самые марксиськия.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!