| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | «  : 03-03-2008 10:28 »  |  | 
 
 У меня такая проблема, при помощи массива я создаю список предметов под каждым из которого флажок:
 <form>
 
 <?
 $Predmet = array ("Биология","Химия","Экономика");
 foreach ($Predmet as $value){
 echo ("<input    type = 'checkbox'
 name = 'Predm[]'
 value = '$value'>$value");
 }
 
 ?>
 
 <br>
 <input type =  "submit"
 value = "Отправить">
 </form>
 
 Проблема заключается в том что не знаю что нужно прописать , чтобы при нажатии кнопки показывало список предметов выбранных флажками, т.е. если мы выбираем например Биология и Экономика был результат:
 
 Перечень предметов выбранных флажком: Биология, Экономика.
 
 Если я указываю $Predm то показывает только название последнего предмета, помеченного флажком.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #1 : 03-03-2008 10:36 »  |  | 
 
 что-то намудрил определённо лишнего |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Chuda 
								Гость
 | 
								|  | « Ответ #2 : 03-03-2008 10:40 »  |  | 
 
 из того, что должно получиться (правда не пробовала у себя запускать): несколько чекбоксов с одинаковыми именами, содержащими нежелательный символ.Что-то удивляет?
 Последний элемент формы и считается действительным в таком случае.
 И то это какая-то извращённая квирксмода наверно должна быть.
 На этот вывод же наверняка должны орать неблагим матом и валидатор и консоль ошибок. Не смутило?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #3 : 03-03-2008 10:45 »  |  | 
 
 а что говорит print_r($_POST)
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #4 : 03-03-2008 11:16 »  |  | 
 
 и наверное нужно еще и так i=0;foreach ($Predmet as $value){
 echo ("<input    type = 'checkbox'
 name = 'Predm[i]'
 value = '$value'>$value");
 i++;
 }
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #5 : 03-03-2008 11:35 »  |  | 
 
 здесь если мы так назовем имя чекбокса name = 'Predm[]', то на выходе как я понимаю создатся массив (при выборе Биология, Экономика): $Predm  = array (Биология, Экономика);
 Если это так то остается только вывести из него значения:
 
 <? echo ("$Predm") ?>
 
 а фиг возвращает пустое значение((
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #6 : 03-03-2008 11:45 »  |  | 
 
 print_r($_POST) - создает пустой массив Array () |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #7 : 03-03-2008 12:47 »  |  | 
 
 Pavel, implode(', ', $predm)
 Пустой $_POST говорит, что данные передаются методом GET - для POST надо указать в форме method="post".
 
 Все полученные от в запросе параметры находятся в массивах $_GET и $_POST. Глобальные переменные создаются только при включенной опции register_global в на стройках PHP! В современных версиях (и уже давно) эта опция по умолчанию выключена (что правильно).
 
 Шильгия, тут все путем - это стандартный метод передачи N значений под одним именем для PHP.
 
 N отмеченных чекбоксов с именем "predm[]" создадут N строк "predm[]=...." в запросе к серверу. PHP обрабатывает такой случай, создавая массив $_POST['predm'] и заполняя его всеми полученными вариантами.
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 03-03-2008 12:55 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #8 : 03-03-2008 12:54 »  |  | 
 
 На выходе: Выполняемые предметы: implode(', ', Array) ; 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #9 : 03-03-2008 12:56 »  |  | 
 
 Pavel, дык, это не просто строка - это команда! |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #10 : 03-03-2008 13:01 »  |  | 
 
 а где ее разместить?  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #11 : 03-03-2008 14:00 »  |  | 
 
 print_r($_GET) что дает?
 хелп на implode(', ', Array)  не рулит?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Aveic 
								Постоялец    Offline 
								Пол:    
								Yellow
								
								
								
								
								
							 | 
								|  | « Ответ #12 : 03-03-2008 14:48 »  |  | 
 
 Почитал ваши посты. Странно как-то все. Изначально, была просьба просто добавить код, который выведет список выбранных предметов. Проблема заключается в том что не знаю что нужно прописать , чтобы при нажатии кнопки показывало список предметов выбранных флажками, т.е. если мы выбираем например Биология и Экономика был результат:Перечень предметов выбранных флажком: Биология, Экономика.
 
 Раз форма не содержит аттрибут action  и method , то данные придут на эту же страницу методом GET . Значит, надо просто проверить пришло ли что-нибудь, и если да, то вывести массив $_GET['Predm'] . Вот пример, как это можно сделать: <?phpif(!empty($_GET['Predm']))
 {
 echo "Список предметов: ".implode(', ', $_GET['Predm'])."<br/>";
 }
 ?>
 <form>
 
 <?
 $Predmet = array ("Биология","Химия","Экономика");
 foreach ($Predmet as $value){
 echo ("<input    type = 'checkbox'
 name = 'Predm[]'
 value = '$value'>$value");
 }
 
 ?>
 
 <br>
 <input type =  "submit"
 value = "Отправить">
 </form>
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #13 : 03-03-2008 15:11 »  |  | 
 
 Aveic, а где видно из стартпоста, что форма не содержит аттрибут action и method,
 чтобы при нажатии кнопки показывало  - где показывало?
 
 Каков вопрос - такой ответ, и что мы что-то не то посоветовали?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Aveic 
								Постоялец    Offline 
								Пол:    
								Yellow
								
								
								
								
								
							 | 
								|  | « Ответ #14 : 03-03-2008 16:34 »  |  | 
 
 Aveic, а где видно из стартпоста, что форма не содержит аттрибут action и method,
 Вот:У меня такая проблема, при помощи массива я создаю список предметов под каждым из которого флажок:
 
 <form>
 
 <?
 
 Я не хотел никого обижать, простите. Просто показалось все странным   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #15 : 03-03-2008 16:45 »  |  | 
 
 Aveic, а вот слона-то я и не заметил   , каюсь |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #16 : 03-03-2008 21:03 »  |  | 
 
 Извините выложил не полностью суть проблемы:
 Итак имеем:
 
 <?
 if (empty($userName)){ //вывод формы пустой
 ?>
 <h2><center>Пожалуйста внимательно заполните все поля в нижеприведенной форме</center></h2>
 
 <form>
 Фамилия, Имя, Отчество:
 <input type =  "text"
 size = 50
 name =  "userName"><br>
 <?
 $Predmet = array ("Биология","Химия","Экономика");
 foreach ($Predmet as $value){
 echo ("<input    type = 'checkbox'
 name = 'Predm[]'
 value = '$value'>$value");
 
 }
 ?>
 
 <br>
 <input type =  "submit"
 value = "Отправить">
 </form>
 <?
 } else { //после нажатия кнопки Отправить получаем
 
 <h2>Проверьте корректность введенных данных</h2><br>
 <h3>Фамилия, Имя, Отчество: $userName;<br>
 Предметы, помеченные флажком: .... , ... ,  ; //вот тут то и суть проблемы что сюда вписать чтобы предметы помеченные флажком в if вот сюда передались ?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Aveic 
								Постоялец    Offline 
								Пол:    
								Yellow
								
								
								
								
								
							 | 
								|  | « Ответ #17 : 03-03-2008 21:17 »  |  | 
 
 ну собственно ответ уже прозвучал   вставить echo "Список предметов: ";if(!empty($_GET['Predm']))
 echo implode(', ', $_GET['Predm']);
 else
 echo "(нет выбранных предметов)";
 В ветвь else   |  
						| 
								|  |  
								| « Последнее редактирование: 03-03-2008 21:20 от Aveic » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #18 : 03-03-2008 23:46 »  |  | 
 
 Aveic, empty() применять здесь нельзя - надо использовать isset(). Хороший код не должен выдавать ошибок никакого уровня. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Aveic 
								Постоялец    Offline 
								Пол:    
								Yellow
								
								
								
								
								
							 | 
								|  | « Ответ #19 : 04-03-2008 00:02 »  |  | 
 
 Aveic, empty() применять здесь нельзя - надо использовать isset(). Хороший код не должен выдавать ошибок никакого уровня.
 Исправлюсь   Хотя, а какую ошибку он может выдасть? Вроде он ничего не выдает |  
						| 
								|  |  
								| « Последнее редактирование: 04-03-2008 00:05 от Aveic » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #20 : 04-03-2008 01:46 »  |  | 
 
 Aveic, а ты включи все  сообщения - включая NOTICE. Получишь ошибку, что переменная не существует. empty() проверяет на "пустое" значение - это эквивалент логической операции, а наличие переменной проверяет isset(). Returns FALSE if var  has a non-empty and non-zero value.
 The following things are considered to be empty:
 
 * "" (an empty string)
 * 0 (0 as an integer)
 * "0" (0 as a string)
 * NULL
 * FALSE
 * array() (an empty array)
 * var $var; (a variable declared, but without a value in a class)
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #21 : 04-03-2008 07:43 »  |  | 
 
 Закинул код в конструкцию поl else, вот что пишет обработчик:
 Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\apache\htdocs\index.php on line 110
 
 под десятой строкой числится команда:
 if(!empty($_GET['Predm']))
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #22 : 04-03-2008 08:10 »  |  | 
 
 Pavel, оформи код тегами code в кавадратных скобках <?phpif (empty($userName)){ //вывод формы пустой
 echo ("
 <h2><center>Пожалуйста внимательно заполните все поля в нижеприведенной форме</center></h2>
 <form>
 Фамилия, Имя, Отчество:
 <input type =  "text"
 size = 50
 name =  "userName"><br>");
 $Predmet = array ("Биология","Химия","Экономика");
 foreach ($Predmet as $value){
 echo ("<input    type = 'checkbox'
 name = 'Predm[]'
 value = '$value'>$value");
 }
 echo("
 <br>
 <input type =  "submit"    value = "Отправить">
 </form>");
 } else {
 //после нажатия кнопки Отправить получаем
 echo ("
 <h2>Проверьте корректность введенных данных</h2><br>
 <h3>Фамилия, Имя, Отчество: $userName;<br>");
 );
 }
 ?>
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #23 : 04-03-2008 08:34 »  |  | 
 
 А в каком редакторе можно видеть код разными цветами? дрим вьювер? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #24 : 04-03-2008 10:08 »  |  | 
 
 Pavel, notepad++ Закинул код в конструкцию поl else, вот что пишет обработчик:
 Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\apache\htdocs\index.php on line 110
 
 под десятой строкой числится команда:
 if(!empty($_GET['Predm']))
 
 Еще раз: if (isset($_GET['Predm']) && !empty($_GET['Predm']))Всегда{
 // .......
 }
 else
 {
 // ........
 }
  надо проверять наличие входного параметра! Выполни такой код (на отдельной пустой странице): <?php
 header('Content-type: text/plain');
 print_r($_GET);
 
 ?>
 Вызывать страницу надо с произвольными параметрами. Например: mypage.php?a=1&b=2&c=qwerty Если страница выдаст ошибку отсутствия переменной, то дело в настройках (или очень древней версии) PHP. |  
						| 
								|  |  
								| « Последнее редактирование: 04-03-2008 11:03 от RXL » |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #25 : 04-03-2008 10:59 »  |  | 
 
 notepad++ - отличная программка спасибо! ) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Pavel 
								Участник    Offline | 
								|  | « Ответ #26 : 04-03-2008 11:12 »  |  | 
 
 После вызова страницы с командой:
 <?php
 
 header('Contetnt-type: text/plain');
 print_r($_GET);
 
 ?>
 
 Выдало:
 
 Array ( )
 
 
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #27 :  04-03-2008 13:12 »   |  | 
 
 Pavel, значит все путем. Следуй советам, проверяй все входные параметры сперва на существование, а потом на допустимость значений, и все будет хорошо. Кстати, посмотри книжку - тут Aveic перевел на русский - полезно будет: https://club.shelek.ru/download.php?id=359 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Aveic 
								Постоялец    Offline 
								Пол:    
								Yellow
								
								
								
								
								
							 | 
								|  | « Ответ #28 : 04-03-2008 17:11 »  |  | 
 
 да, почитай переводик   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #29 : 04-03-2008 19:08 »  |  | 
 
 <?php
 header('Contetnt-type: text/plain');
 print_r($_GET);
 echo ("
 <h2><center>Пожалуйста внимательно заполните все поля в нижеприведенной форме</center></h2>
 <form>
 Фамилия, Имя, Отчество:
 <input type =  'text'
 size = 50
 name =  'userName'><br>");
 $Predmet = array ("Биология","Химия","Экономика");
 foreach ($Predmet as $value){
 echo ("<input    type='checkbox'  name='Predm[]' value='".$value."'> $value");
 echo("<br>");
 }
 echo("
 <br>
 <input type =  'submit'    value = 'Отправить'>
 </form>");
 
 ?>
 
у меня  работает |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	|  |