Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.01.2011, 13:44
Аспирант
Отправить личное сообщение для Saimon7887 Посмотреть профиль Найти все сообщения от Saimon7887
 
Регистрация: 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'>&nbsp;&nbsp;".$row_products['name']."</td>
                            <td align='right'>".$_SESSION['cart']['pr'][$i]."&nbsp;рублей</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">Общая сумма:&nbsp;&nbsp;&nbsp;<?php echo $_SESSION['summa']; ?> &nbsp;рублей</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.
Ответить с цитированием
  #2 (permalink)  
Старый 24.01.2011, 18:31
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

Хм, а как нам узнать что из мебя представляет массив $_SESSION ?

Сделайте print_r($_SESSION) и покажите нам. Естественно наберите в корзину одинаковых позиций
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2011, 19:33
Аспирант
Отправить личное сообщение для Saimon7887 Посмотреть профиль Найти все сообщения от Saimon7887
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 26.01.2011, 17:32
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 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]);
		}
	}

Только вынесите этот блок кода за цикл(вверх)
Ответить с цитированием
  #5 (permalink)  
Старый 26.01.2011, 23:06
Аспирант
Отправить личное сообщение для Saimon7887 Посмотреть профиль Найти все сообщения от Saimon7887
 
Регистрация: 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'>&nbsp;&nbsp;".$row_products['name']."</td>
                            <td align='right'>".$_SESSION['cart']['pr'][$i]."&nbsp;рублей</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">Общая сумма:&nbsp;&nbsp;&nbsp;<?php echo $_SESSION['summa']; ?> &nbsp;рублей</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>

И такая конструкция не работает, и чтото непонятное написано по этой ссылке
Мой скрипт работает только на половину, он удалять удаляет, только не могу счетчик "лимита удалений" пробывал и так и сяк, может ты попробуешь в эту сторону капнуть, есть идеи?
Ответить с цитированием
  #6 (permalink)  
Старый 27.01.2011, 13:26
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

Saimon7887,
Не понимаю зачем счетчик ? Удаляется то 1 товар ?? значит счетчик будет или 0 или 1. Просто не люблю вычитывать кучу кона не относящегося к тебе.
Если надо от суммы отнять то...
unset($_SESSION['cart']['tov'][$zzz]);
$_SESSION['summa']-=$_SESSION['cart']['pr'][$zzz];
unset($_SESSION['cart']['pr'][$zzz]);

Цитата:
и чтото непонятное написано по этой ссылке
ну даже с моими, ниже школьных, познаниями в английском я не понимаю чего там не понятно
Ответить с цитированием
  #7 (permalink)  
Старый 28.01.2011, 09:41
Аспирант
Отправить личное сообщение для Saimon7887 Посмотреть профиль Найти все сообщения от Saimon7887
 
Регистрация: 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 и тд. Почему!
Ответить с цитированием
  #8 (permalink)  
Старый 09.02.2011, 14:14
Аспирант
Отправить личное сообщение для Saimon7887 Посмотреть профиль Найти все сообщения от Saimon7887
 
Регистрация: 03.02.2010
Сообщений: 37

Ребят, срочно присрочно нужно решение проблемы. Кто поможет реально в решении, посути тут просто где то мышь зарылась, просто не могу понять где, и уже не знаю что делать.
Сотку на трубу закину, помогите плииззз!!!

Вариант DooMer`a не работает, если что!
Ответить с цитированием
  #9 (permalink)  
Старый 10.02.2011, 08:58
Аспирант
Отправить личное сообщение для Saimon7887 Посмотреть профиль Найти все сообщения от Saimon7887
 
Регистрация: 03.02.2010
Сообщений: 37

Всем спасибо если что-)))) Сам решил-)! Тему в топку
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать все элементы массива уникальными exec Общие вопросы Javascript 43 25.12.2015 01:14
Пустые элементы массива lammeR Общие вопросы Javascript 5 25.05.2010 02:59
Как удалить повторные элементы из массива? YISHIMITSY Общие вопросы Javascript 1 04.05.2010 00:04
Выбрать все элементы кроме $(this) shustrikk jQuery 2 13.03.2010 14:17
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37