Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Путаница между двумя циклами foreach, foreach ($cart as $idsealy => $qty) и .. 
:(
    Опции темы
Гриша
Дата 18.6.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Путаница "foreach ($cart as $idsealy => $qty)" и "foreach ($cart as $idemt => $
Здравствуйте. Подскажите пожалуйст решение.

ПРИ ПОПАДАНИИ НА СТРАНИЦУ КОРЗИНЫ ДЛЯ ПОКУПОК (cart.php), в зависимоти от выбора пользователем значения на предыдущей странице,
передается GET запрос: magazin/cart?new=$idsealy или magazin/cart?new=$idsealy.
Если например запрос будет равным magazin/cart?new=$idsealy, то в корзине появляется строчка с именем $idsealy и количество $qty=1,
т.е. срабатывает функция display_cart (где foreach ($cart as $idsealy => $qty)),

но также получается, что также вызывается функция display_cart_emt (где foreach ($cart as $idemt => $qty)) и в ней тоже отображается строчка из функции display_cart,
т.е. строчки дублируются.
Происходится путаница между "foreach ($cart as $idsealy => $qty)" и "foreach ($cart as $idemt => $qty)".

Подскажите пожалуйста, как сделать так, чтобы если например вызывается запрос: magazin/cart?new=$idsealy,
то срабатывала только функция display_cart. Нужно сделать какое-то условие, но я у меня не получается.


Вот часть, кода отвечающая за содержание и вывод электронной корзины.

Код

<?php
session_start(); 

@ $new = $HTTP_GET_VARS['new'];

if($new)
{
//Выбран новый элемент
if(!isset($HTTP_SESSION_VARS['cart']))
{
$HTTP_SESSION_VARS['cart'] = array();
}
if(isset($HTTP_SESSION_VARS['cart'][$new]))
$HTTP_SESSION_VARS['cart'][$new]++;
else 
$HTTP_SESSION_VARS['cart'][$new] = 1;
}

//Если тележка не пуста, то вызываются функции display_cart и display_cart_emt,
//в противно случае выводится соответсвующее сообщение:
if(isset($HTTP_SESSION_VARS['cart']) && array_count_values($HTTP_SESSION_VARS['cart']))
{
display_cart($HTTP_SESSION_VARS['cart']);
display_cart_emt($HTTP_SESSION_VARS['cart']);
}
else
{
echo '<p>Ваша корзина пуста</p>'; 
}
?>

Функция display_cart и display_cart_emt такие:

Код

<?php

function display_cart($cart)
{
global $HTTP_SESSION_VARS;

// Вывести каждый элемент в виде строки
foreach ($cart as $idsealy => $qty)
{ 
echo "<p><input type=\"text\" name=\"$idsealy\" value=\"$qty\" size=\"2\"></p>";
}
}


function display_cart_emt($cart)
{
foreach ($cart as $idemt => $qty)
{ 
echo "<p><input type=\"text\" name=\"$idemt\" value=\"$qty\" size=\"2\"></p>";
}
}
?>


Это сообщение отредактировал(а) Гриша - 19.6.2005, 17:05
--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
PARROT
Дата 18.6.2005, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Код

//напиши условие:
if(это) {
вызывается это;
}
else {
if(другое) {
вызывается другое;
}
}



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
o.s.a.
Дата 18.6.2005, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Xo4y B MocKBy
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 16.2.2005
Где: Ташкент

Репутация: 2
Всего: 15



Цитата
передается GET запрос: magazin/cart?new=$idsealy или magazin/cart?new=$idsealy.

так один и тот де запрос smile

как я понял у тебя должно быть либо magazin/cart?new=$idsealy, либо magazin/cart?new=$idemt
А вся разница при выводе заключается лишь в названии текстового поля.
Если я все правильно понял, то делай проверку:
Код

if ( $_GET['new']==idsealy )  {display_cart($HTTP_SESSION_VARS['cart']);}
if ( $_GET['new']==idemt )  {display_cart_emt($HTTP_SESSION_VARS['cart']);}


Это сообщение отредактировал(а) o.s.a. - 19.6.2005, 19:15


--------------------
Не могу стоять, пока другие работают, пойду полежу.
PM MAIL ICQ   Вверх
Гриша
Дата 19.6.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Спасибо за ответы.
Я понимаю, что нужно условие.

o.s.a., вы меня правильно поняли, я попробовал ваше условие, но получается так, что в корзине ничего не выводится.
Т.е.
if ( isset($_GET['idsealy']) ) не подходит под этот запрос, magazin/cart?new=$idsealy.
Вот я ин незнаю, как добраться до $idsealy, чтобы условие ее восприняло.
--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
Гриша
Дата 19.6.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НУС(незнаю|узнаю|создаю)
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 12.6.2005
Где: Земля, Москва, Хр ущевка

Репутация: 1
Всего: 1



Вот этот пример, помоему, очень хорошо объясняет суть проблемы.
Например пользователь заходит на страницу sealy.php, нажимает на ссылку "отправить" (magazin/cart.php?new=$idsealy, например $idsealy=10), и передает сценарию cart.php переменную new = $idsealy (например new = 10), в количестве равную 1 ($qty), если на ссылку нажать один раз.
Получается так, что вод именно поле, где отображается количество:

echo "<p><input type=\"text\" name=\"$idsealy\" value=\"$qty\" size=\"2\"></p>";

отображается также и в функции display_cart_emt (как-будто , пользователь зашел на страницу emt.php и нажал один раз на ссылку magazin/cart.php?new=$idemt, и вызвалась функция display_cart_emt, но в строке отобразтлось только количество, $emt, а значение ее не отобразилось, т.е. елибы он равнялась 10, то это в строке не отобразилось бы)

Это сообщение отредактировал(а) Гриша - 19.6.2005, 20:29
--------------------
Если долго мучиться, что-нибудь получитЬся.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1069 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.