Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Помогите с построением цикла foreach.. Очень нужно, Прошу помощи у знатоков помочь мне правильно построить цикл.
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Веду разработку сайта на CMF Cotonti. Столкнулся с проблемой построения цикла при отправке заявок методом POST и последующей их обработке. Но обо всем по порядку:

У меня на сайте в результате поиска (поиск сделал сам) выдает медиаплощадки в цикле в табличном виде, То есть обычная выдача циклом. В поисковой выдаче медиаплощадок первой колонкой идет чекбокс, далее цена за выход рекламы, количество выходов (инпут, где юзер сам ставит цифру), цена контакта и общая цена за все выходы рекламы. В таблице все подсчеты производятся и выводятся Яваскриптом онлайн, и после перезагрузки данные сохраняются во всех инпутах (использовал SessionStorage).Здесь все нормально.
Проблема начинается при обработке следующего запроса.

Пользователь выбирает понравившиеся ему медиаплощадки (ставит чекбоксы в тех,что ему подходят), и под всеми площадками нажимает кнопку сабмита и отправляет заявки на размещение рекламы.

Во всех инпутах я прописал имена, чтобы можно было споймать их в контоллере $_POST['...'],
так вот в инпут чекбокса мне приходит массив с ID ВЫБРАННЫХ площадок, как мне и нужно, но во все остальные инпуты (цена за выход, общая цена и прочее) приходят все данные, то есть те, из площадок, которые пользователь не выбирал.
Подскажите, пожалуйста,как построить выборку данных именно выбранных чекбоксами площадок (то есть их цена, общая стоимость, количество выходов)??

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


Ну как то так примерно:
    foreach ($post['id'] as $id)
{
$name_square[$id] = $post['name_square'][$id];
}


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Спасибо, Twin! Сейчас попробую разобраться, ато уже замучился!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 12 дней
Карма: 77




$val = array();
foreach ($_POST AS $key1=>$value){
if (is_array($value))
foreach ($value AS $key2=>$value)
$val[$key2][$key1] = $value;
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Сейчас прикреплю кусок кода, де я спотыкаюсь. Спасибо Kusss, сейчас попробую и ваш код применить к своему!!!



if(isset($_POST['send_orders'])) { ///Если заявки были отправлены
if ($usr['id'] < 1)
{

cot_redirect(cot_url('message', "msg=930&".$sys['url_redirect'], '', true));
}
else {

$markets = array();

$markets['id'] = $_POST['marketID']; ///// массив с ID нужных мне площадок
$markets['user_id'] = $_POST['user'];
$markets['user_name'] = $_POST['user_name'];
$markets['name_square'] = $_POST['name_square'];
$markets['cenazavihod'] = $_POST['cenazavihod'];
$markets['colvihodovtv'] = $_POST['colvihodovtv'];
$markets['skidkitv'] = $_POST['skidkitv'];
$markets['cena_kontakta'] = $_POST['cena_kontakta'];
$markets['obsch_cena'] = $_POST['rezultat'];
$market_ord_value = $db->prep($market_ord_value);



foreach ($_POST['marketID'] as $id)
{
$name_square[$id] = $_POST['name_square'][$id]; //////Ошибка где-то в построении ///цикла foreach
}


echo "<pre>";
print_r($name_square[$id]);
echo "</pre>";




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 12 дней
Карма: 77




ну моё должно работать. выведи в конце
print_r($val);

должно получиться следующее
array 
(
[33] => array
(
[marketID] => 33,
[name_square] => 'Спутниковое №1',
[cenazavihod] => 10000,
....
),
[34] => array
(
[marketID] => 34,
[name_square] => 'Спутниковое ТВ №2',
[cenazavihod] => 2000,
....
)
)


Это сообщение отредактировал Kusss - 5.04.2016 - 12:21
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Kusss, ваш код работает но выводит все площадки (а нужно только выбранные чекбоксом), и только у первого элемента вложенного массива есть элемент MarketID

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




А как можно выбрать только те вложенные массивы, которые отмечены чекбоксом?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Прикрепляю фото

Присоединённое изображение
Присоединённое изображение
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


Фото то зачем? biggrin.gif
Цитата
//////Ошибка где-то в построении ///цикла foreach

Какую ошибку показывает?


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Да ошибок нет, мне тут Kusss подсказал правильное направление, теперь вроде начало получаться! Спасибо всем!!!!!!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 12 дней
Карма: 77




Ну так, где есть marketID, то и выбрано.
добавь условие
$val = array();
foreach ($_POST AS $key1=>$value){
if (is_array($value))
foreach ($value AS $key2=>$value) {
if (in_array($key2, $_POST['marketID']))
$val[$key2][$key1] = $value;
}
}
Вообще-то стоит сделать по другому.Сделать запрос в базу по выбранным "marketID", и получить нужный массив.
А не передавать "мертвый груз" постом.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
denmasterweb  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 10
Пользователь №: 42799
На форуме: 8 месяцев, 6 дней
Карма:




Спасибо большое, Kusss! Без вашей помощи я бы не разобрался. Жаль не могу пока улучшить вам карму.. Но ничего, я теперь буду здесь часто!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса