|
|
|
| подскажите! как реализовать такое условие, если товар имется в корзине, то когда еще раз когда нажимаешь на кннопку в "в корзину" выводило сообщение -товар имеется в корзине и не добовлять товар в корзину?
исходный код:
<? session_start();
function addtocart($product_id, $product_price) {
$_SESSION['prod_count']++;
$incart=$_SESSION['prod_count'] - 1;
$_SESSION['product_id'][$incart] = $product_id;
$_SESSION['product_price'][$incart] = $product_price;
$_SESSION['product_count'][$incart] = 1;
}
$summ=$_SESSION['product_price'][$i]* $_SESSION['product_count'][$i];
$price=$_SESSION['product_price'][$i];
?>
<?
if(!empty($_POST)){
addtocart($_POST["product_id"],$_POST["product_price"]);
}
include "setup/options.php";
if(!mysql_connect($host,$USER,$PASSWD)) exit(@mysql_error());
if(!mysql_select_db($DB)) exit(@mysql_error());
$r = mysql_query("SELECT * FROM CLIPS WHERE kod = {$_GET['kod']}");
$page = "<form id='form1' name='form1' method='post' action='{$_SERVER["REQUEST_URI"]}'>";
while($f = mysql_fetch_array($r)){
$page .= "<table border=1 width=100%>
<tr><td align=center bgcolor=#000000><font color=white>код: {$f['kod']}</font></td>
<td align=center bgcolor=#000000><font color=white>место установки:</font></td>
<td align=center bgcolor=#000000><font color=white>тип: {$f['tip']}</font></td></tr>
<tr><td width=5% align=left bgcolor=#FFFFFF height=5px><img src='clips/{$f['image']}' width=120px height=120px></td>
<td align=center>{$f['setup']}</td><td width=120px height=120px>картинка</td></tr>
<tr><td align=center bgcolor=#000000><font color=white>OEM:</font></td>
<td align=center bgcolor=#000000><font color=white>марка автомобиля:</font></td>
<td align=center bgcolor=#000000><font color=white>размеры:</font></td></tr>
<tr><td bgcolor=#E8E8E8 align=center>{$f['original']}</td>
<td align=center>{$f['marka']}</td>
<td>T= {$f['T']} <br>H= {$f['H']}<br>F= {$f['F']}<br>D= {$f['D']}<br>T1= {$f['T1']}<br>
T2= {$f['T2']}<br>L= {$f['L']}<br>G= {$f['G']}<br>S1= {$f['S1']}<br>S= {$f['S']}<br>
S min= {$f['Smin']}<br>S max= {$f['Smax']}</td></tr></table><br>
<p class=contGLAV2><strong>Цена: {$f['price']} бел.руб.</strong></p>
<input type=hidden name='product_price' value=".$f[price]." />
<input type=hidden name='product_id' value=".$f[id]." />
<input type=hidden name='tocart' value=tocart />
<table border=0 width=100%><tr><td align=center>
<input type=submit name='sub' value='В корзину' id='korz' />
</td></tr></table>";
$f['price']=$_SESSION['price'];
echo "$f[price]";
}
$page .= "</label></form>";
echo $page;
?>
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 15:50)
| | При помощи функции in_array() проверьте есть ли $product_id в массиве $_SESSION['product_id']. Если есть, товар уже есть в корзине, если нет - это новый товар. | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 16:17)
| | как это записать и куда?
if(in_array($_SESSION['product_id']))
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 16:31)
| | Функция in_array() принимает два параметра
if($product_id, in_array($_SESSION['product_id']))
{
// Товар уже есть
}
else
{
// Это новый товар
}
|
>как это записать и куда?
А куда вам нужно? Собственно из ответов на это и состоит процесс программирования :))) технически мы во всем поможем, но залезть в вашу голову и прочитать, как вам видится приложение мы уже не можем. Собственно за это программисты и ценятся, что они это сами умеют извлекать из своей головы и воплощать в код. | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 16:40)
| | Я все понимаю. Спасибо вам. Вот куда я вставил.
<?
if(!empty($_POST)){
if($product_id, in_array($_SESSION['product_id']))
{
echo "Товар уже есть";
}
else
{
addtocart($_POST["product_id"],$_POST["product_price"]);
}
}
|
выводит ошибку:
Parse error: syntax error, unexpected T_STRING in .................
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 16:51)
| | А на какую строку указывает ошибка? | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 17:07)
| | if($product_id in_array($_SESSION['product_id'])) | |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 18:05)
| | А, это я подошибся (нет возможности проверить ваш код), следует заменить эту строку так
if(in_array($product_id, $_SESSION['product_id']))
|
| |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 18:07)
| | когда нажимаю кнопку в корзину выдает ошибку
Warning: in_array() [function.in-array]: Wrong datatype for second argument in
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 18:10)
| | Распечатайте дамп массива $_SESSION, как он выглядит? | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 18:14)
| |
Array
(
[prod_count] => 1
[product_id] => Array
(
[0] => 1
)
[product_price] => Array
(
[0] => 50000
)
[product_count] => Array
(
[0] => 1
)
)
|
только почему-то когда я нажимаю кнопку массив пуст- потом нажимаю обновить страницу и только тогда выводит вышеуказаный массив.
что это пулучается что кождый раз если пользователь обновит страницу столько товара и добавится в корзинк. С другой стороны и если реализовать то что мы сейчас делаем все будет нормально.... | |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 18:18)
| | Значит у вас в сессию данные не поступают, поэтому и in_array() жалуется, лучше перед этой функцией поставить проверку is_array(), чтобы не допускать ситуации проверки, когда $_SESSION['product_id'] пуст. | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 19:10)
| | извините я не понимаю!!!!
проверка in_array() это как? так что ли? извините еще раз
if (isset(in_array($_SESSION['product_id'])))
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 19:24)
| | или вот так?
if(is_array($_SESSION['product_id']))
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(24.12.2011 в 19:26)
| | Совершенно верно. | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 20:10)
| | а что нам это дает - что мы узнали что переменная является массивом.
может можно реализовать так, только получается что товар добавляется 1 раз и все, и другие уже тоже не добавляются, как правильно написать чтобы $_SESSION[product_id] не добавила такой же id: ?
if($_SESSION[product_id]=$_SESSION[product_id]) | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 20:10)
| | СПАСИБО БОЛЬШОЕ - ВСЕ ПОЛУЧИЛОСЬ!!!!!!!! извините просто не туда вставил код.
Подскажите не получается убрать эту ошибку:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in
|
уже все перепробовал - как вы сказали поставить перед i
f(in_array($product_id, $_SESSION['product_id']))
|
проверку:
if(is_array($_SESSION['product_id']))
|
но не чего не выходит. Помогите пожалуйсто, при таком коде вообще не чего не добавляет в корзину :
<? session_start();
function addtocart($product_id, $product_price) {
if(is_array($_SESSION['product_id'])){
if(in_array($product_id, $_SESSION['product_id'])){
echo "<p class=contGLAV2><font color=#BEBEBE><strong>товар уже есть в корзине</font></strong></p>";
}
else
{
$_SESSION['prod_count']++;
$incart=$_SESSION['prod_count'] - 1;
$_SESSION['product_id'][$incart] = $product_id;
$_SESSION['product_price'][$incart] = $product_price;
$_SESSION['product_count'][$incart] = 1;
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: RuslanBLR
(26.12.2011 в 13:41)
| | Попробуйте изменить вот это условие
if(is_array($_SESSION['product_id'])){
| следующим образом
if(is_array($_SESSION['product_id']) && !empty($_SESSION['product_id'])){
|
| |
|
|
|
|
|
|
|
для: cheops
(26.12.2011 в 13:56)
| | ошибку не выводит - но не чего и не добавляет!
может я опять не так проверяю ( не туда добавил) потому что без этой проверки все нормально - но ошибку выводит:
<?
function addtocart($product_id, $product_price) {
if(is_array($_SESSION['product_id']) && !empty($_SESSION['product_id'])){
if(in_array($product_id, $_SESSION['product_id'])){
echo "<p class=contGLAV2><font color=#BEBEBE><strong>товар уже есть в корзине</font></strong></p>";
}
else
{
$_SESSION['prod_count']++;
$incart=$_SESSION['prod_count'] - 1;
$_SESSION['product_id'][$incart] = $product_id;
$_SESSION['product_price'][$incart] = $product_price;
$_SESSION['product_count'][$incart] = 1;
}
}
}
?>
|
ошибку выводит только один раз при первом добавлении товара - потом все нормально - это когда без проверки is_array | |
|
|
|
|
|
|
|
для: cheops
(26.12.2011 в 13:56)
| | СПАСИБО ВАМ БОЛЬШОЕ!!!!! РАЗОБРАЛСЯ ЧТО Я НЕПРАВИЛЬНО СДЕЛАЛ!!!!!!! ОГРОМНОЕ СПАСИБО!!!!!!!!!!
вот что получилось:
<? session_start();
$_SESSION['product_id'][$incart] = $product_id;
function addtocart($product_id, $product_price) {
if(is_array($_SESSION['product_id']) && !empty($_SESSION['product_id'])){
if(in_array($product_id, $_SESSION['product_id'])){
echo "<p class=contGLAV2><font color=#BEBEBE><strong>товар уже есть в корзине</font></strong></p>";
}
else
{
$_SESSION['prod_count']++;
$incart=$_SESSION['prod_count'] - 1;
$_SESSION['product_id'][$incart] = $product_id;
$_SESSION['product_price'][$incart] = $product_price;
$_SESSION['product_count'][$incart] = 1;
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 20:10)
| | извините у меня ошибка вылезла, помогите пожалуйсто!!!!
вот код:
<? session_start();
$_SESSION['product_id'][$incart] = $product_id;
function addtocart($product_id, $product_price) {
if(is_array($_SESSION['product_id']) && !empty($_SESSION['product_id'])){
if(in_array($product_id, $_SESSION['product_id'])){
echo "<p class=contGLAV2><font color=#BEBEBE><strong>товар уже есть в корзине</font></strong></p>";
}
else
{
$_SESSION['prod_count']++;
$incart=$_SESSION['prod_count'] - 1;
$_SESSION['product_id'][$incart] = $product_id;
$_SESSION['product_price'][$incart] = $product_price;
$_SESSION['product_count'][$incart] = 1;
}
}
}
?>
|
а это дамп сессии карзины и там получаю 1 пустой index - от чего это???
<?
Array
(
[product_id] => Array
(
[] => Array
(
[] =>
[0] => 1
[1] => 2
[2] => 3
)
[0] => 1
[1] => 2
[2] => 3
)
[prod_count] => 3
[product_price] => Array
(
[0] => 50000
[1] => 100000
[2] => 34000
)
[product_count] => Array
(
[0] => 1
[1] => 1
[2] => 1
)
)
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 19:10)
| | видимо я не туда вствил проверку if(in_array($product_id, $_SESSION['product_id']))
как я думаю, потому что когда обнавляю страницу и массив заполняется, то и ошибка пропадает, то и товар продолжает добавлятся в карзину при обновлении!!!!! | |
|
|
|
|
|
|
|
для: cheops
(24.12.2011 в 17:07)
| | извините, ошибся вот эту ошибку выдает:
Parse error: syntax error, unexpected ',' in
|
на эту строку:
if($product_id, in_array($_SESSION['product_id']))
|
| |
|
|
|