Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с циклами.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Kane
Отправлено: 01 Марта, 2013 - 21:00:27
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Существует 2 массива значений, мне нужно первый массив, сравнивать со значениями второго и в зависимости от результат выводить в html строку, массивы разных размеров. И проблема в том что каждый пункт checkboxа выводится много раз, а галочки стоят там где нужно. Вот и вопрос, как сделать нормальный вывод?
PHP:
скопировать код в буфер обмена
  1. <? for($i = 0; $i <= count($all_privs) - 1; $i++): ?>
  2.                 <? for($y = 0; $y <= count($all_privs_for_role); $y++): ?>
  3.                     <? if($all_privs[$i]['id_priv'] == $all_privs_for_role[$y]['id_priv']): ?>
  4.                                                                
  5.                                 <input type="checkbox" name="<?=$all_privs[$i]['name']?>" value="<?=$all_privs[$i]['id_priv']?>" checked><?=$all_privs[$i]['description']?><br/>
  6.                                
  7.                                
  8.                         <? else: ?>
  9.                                
  10.                                 <input type="checkbox" name="<?=$all_privs[$i]['name']?>" value="<?=$all_privs[$i]['id_priv']?>"><?=$all_privs[$i]['description']?><br/>
  11.                                
  12.                                
  13.                                
  14.                         <? endif ?>
  15.                 <? endfor ?>
  16.         <? endfor ?>


И еще один вопрос в довесок, как передать массив значений checkboxов в PHP скрипт?

(Отредактировано автором: 01 Марта, 2013 - 21:00:50)

 
 Top
vlom
Отправлено: 01 Марта, 2013 - 21:17:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




а зачем такие сложности с двумя массивами??
Легко можно обойтись одним, добавив в основной масив для проверки на то что выделен элемент или нет еще один ключ, к примеру is_checked (кладем в данный элемент занчение true - если надо выделить чекбокс и false в противном случае) и тогда получим примерно следующее
PHP:
скопировать код в буфер обмена
  1.  
  2. <? foreach($all_privs_for_role as $role) { ?>
  3.      <input type="checkbox" name="<?=$role['name']?>" value="<?=$role['id_priv']?>" <?=(($role['is_checked'])?'checked':'')?>><?=$role['description']?><br/>
  4. <? } ?>
  5.  

(Отредактировано автором: 01 Марта, 2013 - 21:18:40)

 
 Top
Kane
Отправлено: 01 Марта, 2013 - 21:49:45
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Да, спасибо за вариант решения(что-то даже не подумал о таком), но в данном примере я не очень понимаю где проверку то делать. Огорчение
 
 Top
vlom
Отправлено: 02 Марта, 2013 - 05:53:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




vlom пишет:
PHP:
скопировать код в буфер обмена
  1. <?=(($role['is_checked'])?'checked':'')?>

Это проверка, называется данная конструкция тернарный оператор
то что в скобках это как в конструкции if, то что после знака вопроса будет отображаться в случае истины, а то что после двоеточия это как else и будет отображаться в случае когда проверка вернет лож
 
 Top
Kane
Отправлено: 02 Марта, 2013 - 10:51:27
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Это я знаю. Ладно, буду разбираться.
 
 Top
vlom
Отправлено: 02 Марта, 2013 - 11:16:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 681
Дата рег-ции: Окт. 2010  
Откуда: Екатеринбург


Помог: 4 раз(а)




Kane пишет:
но в данном примере я не очень понимаю где проверку то делать. Огорчение

То гда в каком смысле не понимаш где проверку делать?
 
 Top
Kane
Отправлено: 02 Марта, 2013 - 16:05:06
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




vlom пишет:
Kane пишет:
но в данном примере я не очень понимаю где проверку то делать. Огорчение

То гда в каком смысле не понимаш где проверку делать?

Ну я выше писал, что беру каждое значение из 1-го массива, и сравниваю его со всеми значениями 2-го массива, если есть совпадение то ставлю галочку(параметр checked), если нет, иду дальше.
И так до конца. Должен получится большой список с расставленными галочками, потом буду с этими данными работать и их менять.

Я знаю что такое тернарный оператор и в коде просто не могу понять где сравнение значений.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB