24.01.2011, 13:44
|
Аспирант
|
|
Регистрация: 03.02.2010
Сообщений: 37
|
|
Удаляет все одинаковые элементы из массива $_SESSION[] полтос на мобилу кто поможет
Вообщем ребят очень прошу помощи, сначала код:
Это код удаления позиции из корзины
<?php $head = "no_header"; require_once('_inc/bd.php');
if (isset($_POST['process'])) {$process = $_POST['process'];}
session_start();
//Показ корзины
if ($process == "enter_cart") {
?><div id="cont">
<table cellpadding="2px" cellspacing="5px" border="0px">
<thead>
<tr>
<td align="center" width="400px">Наименование</td>
<td align="center" width="150px">Цена</td>
<td align="center" width="150px">Удалить</td>
</tr>
</thead>
<tbody>
<?php
$i = 0;
foreach ($_SESSION['cart']['tov'] as $n => $tovar[$n]) {
if ($_POST['action'] == "delete_tovar") { //Удаление позиции СОБСТВЕННО ВОТ ЗДЕСЬ И ПРОБЛЕМА---)))) ВНИЗУ ВОПРОС!!!!--++_)
if ($_SESSION['cart']['tov'][$i] == $_POST['tovar_delete']) {
unset($_SESSION['cart']['tov'][$i]);
unset($_SESSION['cart']['pr'][$i]);
}
}
$tovar_v = $_SESSION['cart']['tov'][$i];
$result_products = mysql_query("SELECT `name` FROM `products` WHERE `id`='$tovar_v'", $db);
$row_products = mysql_fetch_array($result_products);
if (!empty($tovar_v)) {
echo "
<tr>
<td align='left'> ".$row_products['name']."</td>
<td align='right'>".$_SESSION['cart']['pr'][$i]." рублей</td>
<td id='cart_delete' align='center'"; ?> onclick="javascript: tovar_delete('<?php echo $tovar_v; ?>', 'enter_cart', 'delete_tovar')" <?php echo ">Удалить</td>
</tr>
";
}
$summa = $summa + $_SESSION['cart']['pr'][$i];
$i++;
}
$_SESSION['summa'] = $summa;
?>
</tbody>
<tfoot>
<tr>
<td colspan="3" align="center"><?php if ($_SESSION['summa'] == 0) {echo "Корзина пуста!";} ?></td>
</tr>
<tr>
<td colspan="3" id="total_summa">Общая сумма: <?php echo $_SESSION['summa']; ?> рублей</td>
</tr>
</tfoot>
</table>
<center>
<table cellpadding="0px" cellspacing="0px" border="0px" id="cart_buttons" width="160px" align="center">
<tr>
<td id="zakaz">
</td>
</tr>
</table>
</center>
</div>
<?php
}
?>
<script type="text/javascript" language="javascript">
$('#zakaz').click(function(){ //entering cart
$('#content').fadeOut(0);
$('#content').fadeIn(200);
$.ajax({
url:'_page/index_zakaz.php',
type:'POST',
data:'page=index',
dataType:'html',
success:function(html){
$('#content').html(html);
}
});
});
//delete_tovar
function tovar_delete(id_tovar, action, view){
$.ajax({
url:'cart_user.php',
type:'POST',
data:({tovar_delete:id_tovar, process:action, action:view}),
dataType:'html',
success:function(html){
$('#content').html(html);
}
});
};
//end_delete_tovar
</script>
Скрипт собственного производства сильно не пинайте, просто кто знает подскажите где ошибка!??? Буду Оооочень признателен.
Вот короче если в списке товаров есть одинаковые товары, то при удалении одной позиции, он удаляет все одинаковые позиции. Что только я уже не пробывал, может просто туплю. Подскажите плиззззз где ошибка? Кто поможет полтос на мобилу пришлю (P.S. Которые поддерживает webmoney.)
P.P.S. Можно посмотреть в реале taibai.ru добавьте несколько одинаковых товаров, а потом в корзине попробуйте удалить.
Последний раз редактировалось Saimon7887, 25.01.2011 в 20:05.
|
|
24.01.2011, 18:31
|
Ламер
|
|
Регистрация: 19.02.2010
Сообщений: 295
|
|
Хм, а как нам узнать что из мебя представляет массив $_SESSION ?
Сделайте print_r($_SESSION) и покажите нам. Естественно наберите в корзину одинаковых позиций
|
|
24.01.2011, 19:33
|
Аспирант
|
|
Регистрация: 03.02.2010
Сообщений: 37
|
|
Выполнил
Цитата:
|
Array ( [cart] => Array ( [tov] => Array ( [0] => 2105 [1] => 2951 [2] => 2951 [3] => 2914 [4] => 2914 [5] => 2915
[6] => 2916 [7] => 2003 ) [pr] => Array ( [0] => 150 [1] => 239 [2] => 239 [3] => 170 [4] => 170 [5] => 210 [6] => 260 [7] => 40 ) ) [summa] => 1478 )
|
А вот таким макаром добавляю
if (isset($_POST['tovar_select'])) {$_SESSION['cart']['tov'][] = $_POST['tovar_select'];} //выбранный товар
if (isset($_POST['tovar_price'])) {$_SESSION['cart']['pr'][] = $_POST['tovar_price'];} //цена товара
Последний раз редактировалось Saimon7887, 24.01.2011 в 19:43.
|
|
26.01.2011, 17:32
|
Ламер
|
|
Регистрация: 19.02.2010
Сообщений: 295
|
|
if ($_POST['action'] == "delete_tovar") { //Удаление позиции СОБСТВЕННО ВОТ ЗДЕСЬ И ПРОБЛЕМА---)))) ВНИЗУ ВОПРОС!!!!--++_)
$zzz = array_search($_POST['tovar_delete'],$_SESSION['cart']['tov'])
if ($zzz!==false) {
unset($_SESSION['cart']['tov'][$zzz]);
unset($_SESSION['cart']['pr'][$zzz]);
}
}
Только вынесите этот блок кода за цикл(вверх)
|
|
26.01.2011, 23:06
|
Аспирант
|
|
Регистрация: 03.02.2010
Сообщений: 37
|
|
<?php $head = "no_header"; require_once('_inc/bd.php');
if (isset($_POST['process'])) {$process = $_POST['process'];}
session_start();
//Показ корзины
if ($process == "enter_cart") {
?><div id="cont">
<table cellpadding="2px" cellspacing="5px" border="0px">
<thead>
<tr>
<td align="center" width="400px">Наименование</td>
<td align="center" width="150px">Цена</td>
<td align="center" width="150px">Удалить</td>
</tr>
</thead>
<tbody>
<?php
$i = 0;
if ($_POST['action'] == "delete_tovar") { //Удаление позиции СОБСТВЕННО ВОТ ЗДЕСЬ И ПРОБЛЕМА---)))) ВНИЗУ ВОПРОС!!!!--++_)
$zzz = array_search($_POST['tovar_delete'],$_SESSION['cart']['tov']);
if ($zzz !== false) {
unset($_SESSION['cart']['tov'][$zzz]);
unset($_SESSION['cart']['pr'][$zzz]);
}
}
echo $zzz;
foreach ($_SESSION['cart']['tov'] as $n => $tovar[$n]) {
/*if ($_POST['action'] == "delete_tovar") {
if (($_SESSION['cart']['tov'][$i] == $_POST['tovar_delete'])) {
unset($_SESSION['cart']['tov'][$i]);
unset($_SESSION['cart']['pr'][$i]);
}
}*/
$tovar_v = $_SESSION['cart']['tov'][$i];
$result_products = mysql_query("SELECT `name` FROM `products` WHERE `id`='$tovar_v'", $db);
$row_products = mysql_fetch_array($result_products);
if (!empty($tovar_v)) {
echo "
<tr>
<td align='left'> ".$row_products['name']."</td>
<td align='right'>".$_SESSION['cart']['pr'][$i]." рублей</td>
<td id='cart_delete' align='center'"; ?> onclick="javascript: tovar_delete('<?php echo $tovar_v; ?>', 'enter_cart', 'delete_tovar')" <?php echo ">Удалить</td>
</tr>
";
}
$summa = $summa + $_SESSION['cart']['pr'][$i];
$i++;
}
$_SESSION['summa'] = $summa;
?>
</tbody>
<tfoot>
<tr>
<td colspan="3" align="center"><?php if ($_SESSION['summa'] == 0) {echo "Корзина пуста!";} ?></td>
</tr>
<tr>
<td colspan="3" id="total_summa">Общая сумма: <?php echo $_SESSION['summa']; ?> рублей</td>
</tr>
</tfoot>
</table>
<center>
<table cellpadding="0px" cellspacing="0px" border="0px" id="cart_buttons" width="160px" align="center">
<tr>
<td id="zakaz">
</td>
</tr>
</table>
</center>
</div>
<?php
/*$tt = 0;
while ($tt !== count($_SESSION['cart']['tov'])) {
echo "tov = ".$_SESSION['cart']['tov'][$tt]." pr = ".$_SESSION['cart']['pr'][$tt]."<br />";
$tt++;
}*/
print_r($_SESSION);
}
?>
<script type="text/javascript" language="javascript">
$('#zakaz').click(function(){ //entering cart
$('#content').fadeOut(0);
$('#content').fadeIn(200);
$.ajax({
url:'_page/index_zakaz.php',
type:'POST',
data:'page=index',
dataType:'html',
success:function(html){
$('#content').html(html);
}
});
});
//delete_tovar
function tovar_delete(id_tovar, action, view){
$.ajax({
url:'cart_user.php',
type:'POST',
data:({tovar_delete:id_tovar, process:action, action:view}),
dataType:'html',
success:function(html){
$('#content').html(html);
}
});
};
//end_delete_tovar
</script>
И такая конструкция не работает, и чтото непонятное написано по этой ссылке
Мой скрипт работает только на половину, он удалять удаляет, только не могу счетчик "лимита удалений" пробывал и так и сяк, может ты попробуешь в эту сторону капнуть, есть идеи?
|
|
27.01.2011, 13:26
|
Ламер
|
|
Регистрация: 19.02.2010
Сообщений: 295
|
|
Saimon7887,
Не понимаю зачем счетчик ? Удаляется то 1 товар ?? значит счетчик будет или 0 или 1. Просто не люблю вычитывать кучу кона не относящегося к тебе.
Если надо от суммы отнять то...
unset($_SESSION['cart']['tov'][$zzz]);
$_SESSION['summa']-=$_SESSION['cart']['pr'][$zzz];
unset($_SESSION['cart']['pr'][$zzz]);
Цитата:
|
и чтото непонятное написано по этой ссылке
|
ну даже с моими, ниже школьных, познаниями в английском я не понимаю чего там не понятно
|
|
28.01.2011, 09:41
|
Аспирант
|
|
Регистрация: 03.02.2010
Сообщений: 37
|
|
Сообщение от DooMer
|
Saimon7887,
Не понимаю зачем счетчик ? Удаляется то 1 товар ?? значит счетчик будет или 0 или 1. Просто не люблю вычитывать кучу кона не относящегося к тебе.
Если надо от суммы отнять то...
unset($_SESSION['cart']['tov'][$zzz]);
$_SESSION['summa']-=$_SESSION['cart']['pr'][$zzz];
unset($_SESSION['cart']['pr'][$zzz]);
ну даже с моими, ниже школьных, познаниями в английском я не понимаю чего там не понятно
|
Да блин я только рад бы но увы не работает твой способ, все равно удаляет по две а то и по три, и переменная $zzz выдает странные значения то 0 то 1 то 2 то 3 хотя нажимаю на позиции и индексом 11 13 и тд. Почему!
|
|
09.02.2011, 14:14
|
Аспирант
|
|
Регистрация: 03.02.2010
Сообщений: 37
|
|
Ребят, срочно присрочно нужно решение проблемы. Кто поможет реально в решении, посути тут просто где то мышь зарылась, просто не могу понять где, и уже не знаю что делать.
Сотку на трубу закину, помогите плииззз!!!
Вариант DooMer`a не работает, если что!
|
|
10.02.2011, 08:58
|
Аспирант
|
|
Регистрация: 03.02.2010
Сообщений: 37
|
|
Всем спасибо если что-)))) Сам решил-)! Тему в топку
|
|
|
|