Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как записывать в массив новые данные ?
 
 автор: kvins   (03.07.2012 в 12:57)   письмо автору
 
 

На нужную страницу каждый раз при нажатии на кнопку подгружаются новые данные из get запроса которые нужно занести в массив , как это правильно сделать чтобы данные не перезаписывались ?

  Ответить  
 
 автор: confirm   (03.07.2012 в 13:00)   письмо автору
 
   для: kvins   (03.07.2012 в 12:57)
 

Вопрос какой массив в итоге нужен?

  Ответить  
 
 автор: Valick   (03.07.2012 в 13:38)   письмо автору
 
   для: kvins   (03.07.2012 в 12:57)
 

смотря что за данные, но скорее всего лучше использовать сессию
а дописывать в сессионный массив можно по-разному

  Ответить  
 
 автор: kvins   (03.07.2012 в 14:26)   письмо автору
 
   для: Valick   (03.07.2012 в 13:38)
 

Это для передачи в корзину новых данных
Со страницы откуда будут приходить данные , есть 3 переменные

1 id
2 val
3 color

Нужно их заносить в масив и делать выборку по id когда остальная информация будет доставатся с базы данных

  Ответить  
 
 автор: cheops   (03.07.2012 в 14:30)   письмо автору
 
   для: kvins   (03.07.2012 в 14:26)
 

Данные добавляются в уже существующий массив? Если да, то можно просто добавить новый элемент оператором присванивания
<?php
  $arr
[$_GET['id']]['val'] = $_GET['val'];
  
$arr[$_GET['id']]['col'] = $_GET['color'];
?>

  Ответить  
 
 автор: kvins   (03.07.2012 в 15:42)   письмо автору
 
   для: cheops   (03.07.2012 в 14:30)
 

Не понял задумки , а для чего вписывается сначала в id а потом пункт val ?

И еще как теперь вывести все из масива чтобы увидеть что все переменные которые передал существуют , попробовал через

foreach ($arr['1'] as $value) {
echo "<b>$value</b><br>";

Но выдает ошибку , хотя в любом случае мне нужно показывать 2 переменные в ряд

  Ответить  
 
 автор: cheops   (04.07.2012 в 13:43)   письмо автору
 
   для: kvins   (03.07.2012 в 15:42)
 

Задумка в создании двумерного массива

  Ответить  
 
 автор: confirm   (03.07.2012 в 14:32)   письмо автору
 
   для: kvins   (03.07.2012 в 14:26)
 

Так вы сперва определитесь со структурой массива корзины, а потом уже решайте вопрос добавления и прочего.

  Ответить  
 
 автор: kvins   (03.07.2012 в 15:05)   письмо автору
 
   для: confirm   (03.07.2012 в 14:32)
 

А что я такого написал что вы так решили написать ??

В корзине делается так , туда передается id и из базы достается вся информация о товаре и т.д.

А сейчас нужно сделать так.

На странице товара есть комплектующие которые выбирать может сам покупатель для каждого отдельного товара

То есть цвет коробочки и вид ленты , для одного товара у меня получается показать переменную , но если я выбираю 2 разных товара , то он показывает последнюю выборку на оба товара.

  Ответить  
 
 автор: confirm   (03.07.2012 в 15:41)   письмо автору
 
   для: kvins   (03.07.2012 в 15:05)
 

>А что я такого написал что вы так решили написать ??

Видите ли, массив может иметь любую структуру. К примеру, ваши слова туда передается id и из базы достается вся информация о товаре совсем еще не означают, что в данном массиве является первичным, то-ли id товара, то-ли нечто иное, подразумевающее под собою и id в частности.

А что касается корзины, то в нее есть два способа добавления - единичного товара, и массива товаров. В любом из этих способов удобно чтобы первичным ключом массива корзины был id товара. А так ли у вас?

Что касается добавления, то то, как вам посоветовали выше не подойдет, так как все, что вы получаете от пользователя нужно проверять, а тем более id товара, которые подразумеваются как параметры запроса к базе.

Вот потому я так и написал. Вот определитесь со структурой массива своей корзины, определитесь как товары в нее могут добавляться (по штучно/по несколько), вот тогда и ответ можно сформулировать.

Да и вообще, такая вещь как корзина подразумевает многое - это не только добавление товара в нее, но еще и редактирование корзины (удаление, очистка и т.п.), краткое отображение корзины, и полное отображение ее.

  Ответить  
 
 автор: kvins   (03.07.2012 в 16:11)   письмо автору
 
   для: confirm   (03.07.2012 в 15:41)
 

В корзину передается товар и заносится в массив товаров

Ну вот сам тестовый сайт _gift2man.ru/fullcard.php?st=131

на конце ссылки видим цифры по которым достался товар

Наводим мышкой на кнопку купить и видим что эти цифры и передаются на страницу корзины.

А по этому номеру на странице корзины достает инфу о товаре с базы данных.
Это было первоначально сделано в корзине и все работает.

Далее если нажать на 1 из Футляров и потом навести на ссылку купить мы уже видим новую переменную которую нужно внести в какой нить масив

Нажимает на кнопку купить и видим что переменная показывается после слов футляр номер
и показывается цифра от переменной от 1 до 3.

Но если зайти еще на какой нить товар , и выбрать другой футляр , то данные перезапишутсяи будет один футляр на 2 товара.



Вот для этого и хочу создать масив с данными , где будет номер товара . В ссылке был 131 и номер футляра и ленты , а потом сделать выборку с проверкой , если товар который достается из базы данных ратляра и ленты.



PS: Про редактирование и удаление пока не задумываюсь , так как если в массиве будет 30 -40 товаров , то не будет сложности ее обработать ,

  Ответить  
 
 автор: confirm   (03.07.2012 в 16:30)   письмо автору
 
   для: kvins   (03.07.2012 в 16:11)
 

Начнем с этого - уберите якорь (#) со ссылок, или блокируйте обработку переходов по ссылке.
И вообще, запомните, щелкаются все элементы документа, а не только теги А, и их использование ради щелчка, не лучший подход. Заставлять пользователя следить за скачками в начало страницы, это не есть хорошо.

Значит, например, корзина в сессии, тогда ее структура должна быть такой:
<?
$_SESSION
['cart'] = array(
 
id=>array("параметр_1"=>"значение""параметр_2"=>"значение")
 
//и т.д...
);

При получении GET массива проверяете является ли id числом, и если да, то существует ли уже такой товар в корзине, и если да, то увеличиваете значение, если нет, то добавляете.

Редактирование (работа с корзиной, как и ее представление) никак не определяется числом товаров ней - это сервис для пользователя, а не удобная или не удобная функция в плане РНР.

  Ответить  
 
 автор: Lenny_Bars   (03.07.2012 в 16:35)   письмо автору
 
   для: confirm   (03.07.2012 в 16:30)
 

Простите пожалуйста что не по теме, но очень нужна помощь, а с вами связаться по другому нельзя(((
Вы не могли бы помочь мне, я опубликовала тему в форуме, и не знаю как справиться с проблемами, я буду очень благодарна вам! Моя тема в этом разделе вторая!!!

  Ответить  
 
 автор: kvins   (03.07.2012 в 17:44)   письмо автору
 
   для: 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);
};

};

  Ответить  
 
 автор: confirm   (03.07.2012 в 17:57)   письмо автору
 
   для: kvins   (03.07.2012 в 17:44)
 

session_register это ни к чему - $_SESSION['name'] и все. И ваш код это слишком... Совет - забудьте пока о корзине и все что с ней связано, а зайти в раздел РНР - функции работы с массивами. Среди этих функций есть те, что намного упростят ваш код, седлают его более легким и удобным для различных операций с корзиной.
Как ознакомитесь с данным разделом, тогда можно будет и продолжить данную тему. Поверьте, то что я вам советую, сделать стоит, и даже обязательно.

  Ответить  
 
 автор: kvins   (03.07.2012 в 18:28)   письмо автору
 
   для: confirm   (03.07.2012 в 17:57)
 

Это не мой код , если бы я хорошо понимал что с чем связано , то не написал бы

тока не могу понять где успело в этом коде добавится $i в $counts и $gids и куда еще можно подставить названия футляра и ленты

Ладно почитаю , но не охота все с нуля делать (

  Ответить  
 
 автор: confirm   (03.07.2012 в 18:30)   письмо автору
 
   для: kvins   (03.07.2012 в 18:28)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования