|
|
|
| На нужную страницу каждый раз при нажатии на кнопку подгружаются новые данные из get запроса которые нужно занести в массив , как это правильно сделать чтобы данные не перезаписывались ? | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 12:57)
| | Вопрос какой массив в итоге нужен? | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 12:57)
| | смотря что за данные, но скорее всего лучше использовать сессию
а дописывать в сессионный массив можно по-разному | |
|
|
|
|
|
|
|
для: Valick
(03.07.2012 в 13:38)
| | Это для передачи в корзину новых данных
Со страницы откуда будут приходить данные , есть 3 переменные
1 id
2 val
3 color
Нужно их заносить в масив и делать выборку по id когда остальная информация будет доставатся с базы данных | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 14:26)
| | Данные добавляются в уже существующий массив? Если да, то можно просто добавить новый элемент оператором присванивания
<?php
$arr[$_GET['id']]['val'] = $_GET['val'];
$arr[$_GET['id']]['col'] = $_GET['color'];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(03.07.2012 в 14:30)
| | Не понял задумки , а для чего вписывается сначала в id а потом пункт val ?
И еще как теперь вывести все из масива чтобы увидеть что все переменные которые передал существуют , попробовал через
foreach ($arr['1'] as $value) {
echo "<b>$value</b><br>";
Но выдает ошибку , хотя в любом случае мне нужно показывать 2 переменные в ряд | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 15:42)
| | Задумка в создании двумерного массива | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 14:26)
| | Так вы сперва определитесь со структурой массива корзины, а потом уже решайте вопрос добавления и прочего. | |
|
|
|
|
|
|
|
для: confirm
(03.07.2012 в 14:32)
| | А что я такого написал что вы так решили написать ??
В корзине делается так , туда передается id и из базы достается вся информация о товаре и т.д.
А сейчас нужно сделать так.
На странице товара есть комплектующие которые выбирать может сам покупатель для каждого отдельного товара
То есть цвет коробочки и вид ленты , для одного товара у меня получается показать переменную , но если я выбираю 2 разных товара , то он показывает последнюю выборку на оба товара. | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 15:05)
| | >А что я такого написал что вы так решили написать ??
Видите ли, массив может иметь любую структуру. К примеру, ваши слова туда передается id и из базы достается вся информация о товаре совсем еще не означают, что в данном массиве является первичным, то-ли id товара, то-ли нечто иное, подразумевающее под собою и id в частности.
А что касается корзины, то в нее есть два способа добавления - единичного товара, и массива товаров. В любом из этих способов удобно чтобы первичным ключом массива корзины был id товара. А так ли у вас?
Что касается добавления, то то, как вам посоветовали выше не подойдет, так как все, что вы получаете от пользователя нужно проверять, а тем более id товара, которые подразумеваются как параметры запроса к базе.
Вот потому я так и написал. Вот определитесь со структурой массива своей корзины, определитесь как товары в нее могут добавляться (по штучно/по несколько), вот тогда и ответ можно сформулировать.
Да и вообще, такая вещь как корзина подразумевает многое - это не только добавление товара в нее, но еще и редактирование корзины (удаление, очистка и т.п.), краткое отображение корзины, и полное отображение ее. | |
|
|
|
|
|
|
|
для: confirm
(03.07.2012 в 15:41)
| | В корзину передается товар и заносится в массив товаров
Ну вот сам тестовый сайт _gift2man.ru/fullcard.php?st=131
на конце ссылки видим цифры по которым достался товар
Наводим мышкой на кнопку купить и видим что эти цифры и передаются на страницу корзины.
А по этому номеру на странице корзины достает инфу о товаре с базы данных.
Это было первоначально сделано в корзине и все работает.
Далее если нажать на 1 из Футляров и потом навести на ссылку купить мы уже видим новую переменную которую нужно внести в какой нить масив
Нажимает на кнопку купить и видим что переменная показывается после слов футляр номер
и показывается цифра от переменной от 1 до 3.
Но если зайти еще на какой нить товар , и выбрать другой футляр , то данные перезапишутсяи будет один футляр на 2 товара.
Вот для этого и хочу создать масив с данными , где будет номер товара . В ссылке был 131 и номер футляра и ленты , а потом сделать выборку с проверкой , если товар который достается из базы данных ратляра и ленты.
PS: Про редактирование и удаление пока не задумываюсь , так как если в массиве будет 30 -40 товаров , то не будет сложности ее обработать , | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 16:11)
| | Начнем с этого - уберите якорь (#) со ссылок, или блокируйте обработку переходов по ссылке.
И вообще, запомните, щелкаются все элементы документа, а не только теги А, и их использование ради щелчка, не лучший подход. Заставлять пользователя следить за скачками в начало страницы, это не есть хорошо.
Значит, например, корзина в сессии, тогда ее структура должна быть такой:
<?
$_SESSION['cart'] = array(
id=>array("параметр_1"=>"значение", "параметр_2"=>"значение")
//и т.д...
);
|
При получении GET массива проверяете является ли id числом, и если да, то существует ли уже такой товар в корзине, и если да, то увеличиваете значение, если нет, то добавляете.
Редактирование (работа с корзиной, как и ее представление) никак не определяется числом товаров ней - это сервис для пользователя, а не удобная или не удобная функция в плане РНР. | |
|
|
|
|
|
|
|
для: confirm
(03.07.2012 в 16:30)
| | Простите пожалуйста что не по теме, но очень нужна помощь, а с вами связаться по другому нельзя(((
Вы не могли бы помочь мне, я опубликовала тему в форуме, и не знаю как справиться с проблемами, я буду очень благодарна вам! Моя тема в этом разделе вторая!!! | |
|
|
|
|
|
|
|
для: confirm
(03.07.2012 в 16:30)
| | вообще код такой при добавлении ,
if (isset($add) && $add>0) {
if (!isset($gids)) {
$gids = array();
$counts = array();
};
$i=0;
while ($i<count($gids) && $gids[$i] != $add) $i++;
if ($i < count($gids))
$counts[$i]++;
else {
$gids[count($gids)] = $add;
$counts[count($counts)] = 1;
};
session_register("gids");
session_register("counts");
if (isset($order_step)) {
session_unregister("order_step");
unset($order_step);
};
};
|
$add == это и есть номер товара
тока не могу понять где успело в этом коде добавится $i в $counts и $gids и куда еще можно подставить названия футляра и ленты
$counts[$i] количество товаров
$gids[$i] номера товаров
а это я так понял если добавляют второй раз
if (isset($update)) {
$vars = get_defined_vars();
foreach ($vars as $key => $val)
if (strstr($key, "count_")) {
if ($val>0) {
for ($i=0; $i<count($gids); $i++)
if ($gids[$i] == str_replace("count_","",$key)) {
$counts[$i] = $val;
};
}
else {
$i=0;
while ($gids[$i] != str_replace("count_","",$key) && $i<count($gids)) $i++;
$gids[$i]=0;
session_register("gids");
session_register("counts");
};
};
if (isset($order_step)) {
session_unregister("order_step");
unset($order_step);
};
};
|
ну и удаление
if (isset($remove) && $remove>0) {
$i=0;
while ($i<count($gids) && $gids[$i] != $remove) $i++;
if ($i<count($gids)) $gids[$i]=0;
session_register("gids");
session_register("counts");
if (isset($order_step)) {
session_unregister("order_step");
unset($order_step);
};
}; | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 17:44)
| | session_register это ни к чему - $_SESSION['name'] и все. И ваш код это слишком... Совет - забудьте пока о корзине и все что с ней связано, а зайти в раздел РНР - функции работы с массивами. Среди этих функций есть те, что намного упростят ваш код, седлают его более легким и удобным для различных операций с корзиной.
Как ознакомитесь с данным разделом, тогда можно будет и продолжить данную тему. Поверьте, то что я вам советую, сделать стоит, и даже обязательно. | |
|
|
|
|
|
|
|
для: confirm
(03.07.2012 в 17:57)
| | Это не мой код , если бы я хорошо понимал что с чем связано , то не написал бы
тока не могу понять где успело в этом коде добавится $i в $counts и $gids и куда еще можно подставить названия футляра и ленты
Ладно почитаю , но не охота все с нуля делать ( | |
|
|
|
|
|
|
|
для: kvins
(03.07.2012 в 18:28)
| | А я бы начал, так как код такой корзины годится только для мусорной корзины, не более, уж поверьте. | |
|
|
|