2017-01-19 2 views
1

Так что я пытаюсь создать простой сайт электронной коммерции. Как только я отправлю форму (btn-submit), я не могу вставить какие-либо данные в свою базу данных. Выполняется только проверка адреса и контактного номера.Мой код не показывает errmsg, но не вставляет никаких данных в базу данных

Вот мой код:

if (isset($_POST['btn-submit'])) { 

    // clean user inputs 
    $oadd = trim($_POST['oadd']); 
    $oadd = strip_tags($oadd); 
    $oadd = htmlspecialchars($oadd); 

    $contact = trim($_POST['contact']); 
    $contact = strip_tags($contact); 
    $contact = htmlspecialchars($contact); 


    // address validation 
    if (empty($oadd)) { 
     $error = true; 
     $oaddError = "Please enter a valid address."; 
    } else if (strlen($oadd) < 5) { 
     $error = true; 
     $oaddError = "Please enter a valid address."; 
    } 

    // contact number validation 
    if (empty($contact)) { 
     $error = true; 
     $contactError = "Please enter your contact number."; 
    } else if (strlen($contact) < 7) { 
     $error = true; 
     $contactError = "Contact number must have atleast 7 digits."; 
    } else if (!preg_match("/^[0-9 ]+$/",$lname)) { 
     $error = true; 
     $lnameError = "Please enter a valid contact number."; 
    } 

    // if there's no error, continue to place order 
    if(!$error) { 
     $query = 'INSERT INTO cust_order(Order_Date, Order_Status, Order_Total , Address, Contact_No) VALUES (CURDATE(), "in process" , (SELECT SUM(p.Product_Price) FROM cart c, product p WHERE c.Prod_ID = p.Product_ID and c. User_ID = "'.$userRow['User_ID'].'"),"'.$oadd.'","'. $contact.'")'; 
     $res = mysql_query($query); 

     if ($res) { 
      $errTyp = "success"; 
      $errMSG = "Your order has been placed. To view the details, go to your order history"; 
      unset($oadd); 
      unset($contact); 
     } else { 
      $errTyp = "danger"; 
      $errMSG = "Something went wrong. Please try again later."; 
     } 

    } 

} 

Что может быть не так с моим кодом? Я делал подобные запросы на других страницах, но это единственный, кто не работает. Любая помощь будет принята с благодарностью! Заранее спасибо!

+0

'$ userRow [ 'user_id' ] 'Я не нахожу значение userRow? –

+0

извините. вот мой код до того, как он выше $ res = mysql_query ("SELECT * FROM users WHERE User_ID =". $ _ SESSION ['user']); $ userid = $ _ SESSION ['user']; $ userRow = mysql_fetch_array ($ res); $ error = false; if (isset ($ _ POST ['btn-submit'])) { – angelica

+1

** ПРЕДУПРЕЖДЕНИЕ **: Если вы просто изучаете PHP, пожалуйста, не используйте ['mysql_query'] (http: // php .net/manual/en/function.mysql-query.php). Это так ужасно и опасно, что он был удален в PHP 7. Замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /) и руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), объясняет лучшие практики. Ваши пользовательские данные ** не ** [правильно экранированы] (http://bobby-tables.com/php.html), и есть [SQL-инъекции ошибок] (http://bobby-tables.com/) и могут эксплуатироваться. – tadman

ответ

0

Попытка понять поток кода:

if(!$error) { 
    // This will only works when **$error is false and the not of false is true**, otherwise this block does not execute 
} 

Так что этот код работает только тогда, когда нет ошибки проверки не происходит в вашем коде и $error содержит false

+0

Так глупо мне не заметить эту часть. Ты прав. Я просто удалил его, и все сработало. Спасибо @Mayank и спасибо всем. :) – angelica

0
//$userRow is not define any where... 
//to check error occur or not : 
echo $error; 
if(!$error) 
{ 
    echo "IN IF"; 
    //also go with die.. 
    $res = mysql_query($query) or die(); 
} 
else 
{ 
    echo "IN ELSE"; 
} 
+1

'if()'? Объясните, что вы предлагаете. – chris85

Смежные вопросы