Forum Webscript.Ru

Программирование => PHP => Тема начата: Kostyab от 30 Сентября 2002, 19:38:26

Название: Не увязываются элементы прайс-листа
Отправлено: Kostyab от 30 Сентября 2002, 19:38:26
Привет всем! Спасибо за ответы на мой предыдущий вопрос, все отлично получилось!
Сейчас столкнулся с новой проблемой.
Есть прайс-лист, он состоит из массива
$shelf=array("Книга 1"=>25, "Книга 2"=>30, "Книга 3"=>40);
После чего строится html-таблица типа
книга -- цена -- количество заказанных книг (здесь поле формы)
$book -- $coast --
Все отлично строится, однако я застрял с "количеством заказанных книг" $quant. Мне никак не связать $quant, которое ввел пользователь с $book, которую он хочет заказать.
Всем желаю удачи! Пока
Название: Не увязываются элементы прайс-листа
Отправлено: GotZfild от 30 Сентября 2002, 20:22:22
Как вариант, можно сделать для каждой книги свою форму, а там можно связывать через hidden или другим способом.
Название: Не увязываются элементы прайс-листа
Отправлено: PilotV от 01 Октября 2002, 01:14:33
Лучше пересмотри для начала формат данных. Название в роли ключа - плохая идея.
Например,
array(key1=>array("name",price), key2=>...)
Название: Не увязываются элементы прайс-листа
Отправлено: rembo от 01 Октября 2002, 04:56:20


PS: $coast - берег, $cost - стоимость
Название: Не увязываются элементы прайс-листа
Отправлено: Britva от 01 Октября 2002, 10:43:57
в форме

в скрипте:
if(isset($submit) || isset($book)) {
    foreach($book as $key => $value) {
        // где $key - id книги, $value - ее цена
        if($value != "") {
           // тут добавляем или делаем что угодно
       }
    }
}
Название: Не увязываются элементы прайс-листа
Отправлено: Kostyab от 01 Октября 2002, 14:40:13
to: PilotV

Идея мне очень понравилась, я создал такой массив, но мне теперь никак не создать таблицу типа book--cost. Раньше я делал так:

print "";
reset ($shelf); //где $shelf  это название массива
$hd1=key($shelf);
$hd2=$shelf[$hd1];
while(list($book,$cost)=each($shelf)):
print "
                 
                 ";
endwhile;
print "
$bookЦена $cost руб. Количество:
   
";



Теперь я запутался, как добраться до элементов нового многомерного массива.
Спасибо всем откликнувшимся!
Название: Не увязываются элементы прайс-листа
Отправлено: PilotV от 01 Октября 2002, 16:16:18
Если ты имеешь в виду, что моя идея понравилась и ты сделал как я порекомендовал, то:
foreach ($shelf as $id=>$book)
echo "... $id ... $book[0] ... $book[1] ...";
Название: Не увязываются элементы прайс-листа
Отправлено: Kostyab от 01 Октября 2002, 17:36:54
to PilotV:
Да, я сделал так, хотя пока не совсем разобрался с многомерными массивами вообще, поэтому многое не понятно.
Если можно, задам еще один вопрос.
Я сделал так:

$shelf=array(key01=>array("Книга 1", 25),
                   key02=>array("Книга 2", 25),
                   key03=>array("Книга 3", 25));
print "";
reset ($shelf);
foreach ($shelf as $id=>$book){
print "
   
    ";}
print "
$book[0]Цена $cost[0] руб.Количество:
   
";

Однако цена $cost не вынимается. А вообще такой метод кажется очень удобным.
Название: Не увязываются элементы прайс-листа
Отправлено: Меняздесьдавнонет от 01 Октября 2002, 19:51:58

$shelf=array(
  key01=>array("title"=>"Книга 1", "price"=>25),
  key02=>array("title"=>"Книга 2", "price"=>25),
  key03=>array("title"=>"Книга 3", "price"=>30)
);
print "";
print "
   
   
   
";
reset ($shelf);
foreach ($shelf as $id=>$book){
print "
   
   
   
";
}
print "
НазваниеЦенаКоличество:
$book[\'title\']$book[\'price\'] руб.
";
Название: Не увязываются элементы прайс-листа
Отправлено: PilotV от 02 Октября 2002, 01:02:17
Или так... Но я обычно на объектах с малым количеством характеристик на ассоциативные массивы не размениваюсь.

Kostyab
Ты в моем коде $cost[0] видел? Замени на $book[1].
Название: Не увязываются элементы прайс-листа
Отправлено: PilotV от 02 Октября 2002, 01:03:12
By the way, перед foreach reset() не нужен.
Название: Не увязываются элементы прайс-листа
Отправлено: PilotV от 02 Октября 2002, 01:04:53
[OFF]О, меня уже завсегдатаем сделало... пойду посмотрю что за это дают[/OFF]
Название: Не увязываются элементы прайс-листа
Отправлено: Metaller от 02 Октября 2002, 09:59:31
RomikChef
[OFF]
Ты же не признаешь перебор ассоциативных массивов?! :)
[/OFF]
Название: Не увязываются элементы прайс-листа
Отправлено: Kostyab от 02 Октября 2002, 12:59:36
Спасибо большое за помощь! Однако в строке
$book[\'title\']
программа дает сбой типа
unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Название: Не увязываются элементы прайс-листа
Отправлено: Дмитрий Попов от 02 Октября 2002, 14:23:48
Kostyab


$shelf=array(
  key01=>array("title"=>"Книга 1", "price"=>25),
  key02=>array("title"=>"Книга 2", "price"=>25),
  key03=>array("title"=>"Книга 3", "price"=>30)
);
print "";
print "
   
   
   
";
reset ($shelf);
foreach ($shelf as $id=>$book){
print "
   
   
   
";
}
print "
НазваниеЦенаКоличество:
".$book[\'title\']."".$book[\'price\']." руб.
";
Т.е. Выводите массивы не в кавычках.
Название: Не увязываются элементы прайс-листа
Отправлено: Kostyab от 02 Октября 2002, 15:32:16
to: Попов Дмитрий
спасибо! а ларчик просто открывался! работает!!!!
Название: Не увязываются элементы прайс-листа
Отправлено: PilotV от 02 Октября 2002, 15:59:38
Да вообще-то просто:

...
print "
    $book[title]
    $book[price] руб.
    ...";
...
Название: Не увязываются элементы прайс-листа
Отправлено: Kostyab от 02 Октября 2002, 16:34:10
Спасибо, Дмитрий! Спасибо всем! Все заработало в лучшем виде!