2014-02-20 3 views
0

Пожалуйста, помогите мне. У меня возникли проблемы в сравнении Как сравнить количество, которое было вставлено из запасов из базы данныхСравнение из текстового поля с базой данных

<?php 
session_start(); 
include_once("config.php"); 

//empty cart by distroying current session 
if(isset($_GET["emptycart"]) && $_GET["emptycart"]==1) 
{ 
    $return_url = base64_decode($_GET["return_url"]); //return url 
    session_destroy(); 
    header('Location:'.$return_url); 
} 

//add item in shopping cart 
if(isset($_POST["type"]) && $_POST["type"]=='add') 
{ 
    $product_code = filter_var($_POST["product_code"], FILTER_SANITIZE_STRING); //product code 
    $product_qty = filter_var($_POST["product_qty"], FILTER_SANITIZE_NUMBER_INT); //product code 
    $return_url  = base64_decode($_POST["return_url"]); //return url 
    $sel = mysql_query("SELECT * FROM products"); 
    $product_stock = mysql_fetch_assoc($sel); 
    //limit quantity for single product 
    if($product_qty > $products['stock']) 
    { 
     die('<div align="center">Not enought quantity<br /><a href="index.php">Back To Products</a>.</div>'); 
    } 
+0

Какую ошибку вы получили? –

+0

обычно с '=' –

+0

mysql_fetch_assoc() ожидает, что параметр 1 будет ресурсом, null указан в C: \ xampp \ htdocs \ webdev \ prac \ php-shopping-cart-sample-815061 \ cart_update.php в строке 20 – user3235016

ответ

0

Ваша ошибка в этой строке:

if($product_qty > $products['stock']) 

Что такое $products['stock']? Вы уже определили результат MySQL следующим образом:

$product_stock = mysql_fetch_assoc($sel); 

Итак, вы имели в виду?

if($product_qty > $product_stock['stock']) 

Кроме того, ваш код уязвим для перепрофилирования-атак: https://www.owasp.org/index.php/Top_10_2013-A10-Unvalidated_Redirects_and_Forwards

Вы должны убедиться, что вы каким-то образом проверить параметр return_url, позволяя только действительный список URL-адресов. Лучше бы:

$valid_urls = array(1 => 'http://link1.com', 2 => '...'); 

А потом:

$return_url_param = (int)$_GET["return_url"]; 
$return_url = isset($valid_urls[$return_url_param] ? $valid_urls[$return_url_param] : 'http://defaulturl.com'); 
0

Вы сравниваете $product_qty из-за неправильной переменной. Попробуйте изменить $products['stock'] на $product_stock['stock'].

Исправленный блок кода: -

<?php 

//add item in shopping cart 
if (isset($_POST["type"]) && $_POST["type"] == 'add') { 
    $product_code = filter_var($_POST["product_code"], FILTER_SANITIZE_STRING); //product code 
    $product_qty = filter_var($_POST["product_qty"], FILTER_SANITIZE_NUMBER_INT); //product code 
    $return_url = base64_decode($_POST["return_url"]); //return url 
    $sel = mysql_query("SELECT * FROM products"); 
    $product_stock = mysql_fetch_assoc($sel); 
    //limit quantity for single product 
    if ($product_qty > $product_stock['stock']) { 
     die('<div align="center">Not enought quantity<br /><a href="index.php">Back To Products</a>.</div>'); 
    } 
} 
Смежные вопросы