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 :: input type="radio" с одинаковым NAME

 PHP.SU

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


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

> Без описания
Extazy
Отправлено: 20 Мая, 2012 - 20:13:58
Post Id


Посетитель


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


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




Здравствуйте.
Имеется вот такой код:
CODE (html):
скопировать код в буфер обмена
  1. <form name="rating" method="post" >
  2.    <input type="radio" name="rating" value="1" onClick="rating.submit();"> 1
  3.    <input type="radio" name="rating" value="2" onClick="rating.submit();"> 2
  4.    <input type="radio" name="rating" value="3" onClick="rating.submit();"> 3
  5.    <input type="radio" name="rating" value="4" onClick="rating.submit();"> 4
  6.    <input type="radio" name="rating" value="5" onClick="rating.submit();"> 5
  7.    <input type="radio" name="rating" value="6" onClick="rating.submit();"> 6
  8.    <input type="radio" name="rating" value="7" onClick="rating.submit();"> 7
  9.    <input type="radio" name="rating" value="8" onClick="rating.submit();"> 8
  10.    <input type="radio" name="rating" value="9" onClick="rating.submit();"> 9
  11.    <input type="radio" name="rating" value="10" onClick="rating.submit();"> 10
  12. </form>


Код не работает, т.к. в нём у всех input одинаковые значения - если поменять имена всем, то заработает.

Помогите как переделать форму с "инпутами", чтобы файл-обработчик смог выполнить код на PHP:
PHP:
скопировать код в буфер обмена
  1. if($_POST['rating'])
  2.    $rating = $_POST['rating'];


Или мне кажется я что-то туплю.. и можно написать всё намного проще...
 
 Top
alexiy
Отправлено: 20 Мая, 2012 - 20:23:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 483
Дата рег-ции: Янв. 2011  


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




CODE (html):
скопировать код в буфер обмена
  1.  
  2.  
  3. <form name="rating" method="post" >
  4.    <input type="radio" name="rating[]" value="1" onClick="rating.submit();"> 1
  5.    <input type="radio" name="rating[]" value="2" onClick="rating.submit();"> 2
  6.    <input type="radio" name="rating[]" value="3" onClick="rating.submit();"> 3
  7.    <input type="radio" name="rating[]" value="4" onClick="rating.submit();"> 4
  8.    <input type="radio" name="rating[]" value="5" onClick="rating.submit();"> 5
  9.    <input type="radio" name="rating[]" value="6" onClick="rating.submit();"> 6
  10.    <input type="radio" name="rating[]" value="7" onClick="rating.submit();"> 7
  11.    <input type="radio" name="rating[]" value="8" onClick="rating.submit();"> 8
  12.    <input type="radio" name="rating[]" value="9" onClick="rating.submit();"> 9
  13.    <input type="radio" name="rating[]" value="10" onClick="rating.submit();"> 10
  14. </form>
  15.  
  16.  

попробуй так, тогда перемення $raiting будет как массив
 
 Top
Мелкий Супермодератор
Отправлено: 20 Мая, 2012 - 20:23:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




У radio имена и должны быть идентичными. Иначе это будет группы независимых radio.

В onclick this.parentNode.submit() или document.rating.submit(), если не путаю ничего.


-----
PostgreSQL DBA
 
 Top
IllusionMH
Отправлено: 20 Мая, 2012 - 22:01:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




Extazy, объясните, что конкретно должно происходить при клике?
Есть подозрение что не те элементы используются для не тех действий.

(Отредактировано автором: 20 Мая, 2012 - 22:01:46)

 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 01:22:12
Post Id


Посетитель


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


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




IllusionMH пишет:
Extazy, объясните, что конкретно должно происходить при клике?
Есть подозрение что не те элементы используются для не тех действий.

на сайте выводится фотография, которую должен оценить посетитель от 1 до 10 баллов. в этом собсно и суть
 
 Top
IllusionMH
Отправлено: 21 Мая, 2012 - 02:38:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




Extazy, ну тогда лучше обернуть радиобатон и соответствующий текст в теги <label>, чтобы народ долго не удивлялся при клике на текст Улыбка
CODE (html):
скопировать код в буфер обмена
  1. <label><input type="radio" name="rating" value="0">0</label>


Можно еще обработчик вынести в JS
 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 13:38:51
Post Id


Посетитель


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


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




IllusionMH, спасибо.
 
 Top
DelphinPRO
Отправлено: 21 Мая, 2012 - 18:52:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


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




IllusionMH пишет:
ну тогда лучше обернуть радиобатон и соответствующий текст в теги <label>,
для этого существует атрибут for

CODE (html):
скопировать код в буфер обмена
  1. <label for="field">метка</label>
  2. <input id="field" type="" />


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
IllusionMH
Отправлено: 21 Мая, 2012 - 19:33:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




DelphinPRO, подразумевалось, что мое предположение об использовании не тех элементов - неверно Улыбка , и предложен вариант как сделать этот вариант более дружественным к пользователю(изначально текст и элемент связаны только визуально).
Для label есть два варианта:
CODE (html):
скопировать код в буфер обмена
  1. <input id="идентификатор"><label for="идентификатор">Текст</label>
  2. <label><input type="..."> Текст</label>

В конкретном случае(когда текст идет прямо за элементом) не вижу смысла использовать for (+ меньше текста(всем элементам нужно присвоить id и продублировать его в атрибуте лэйбла) и видно как связаны элемент и текст), вот если элементы разнесены - естественно for Улыбка

(Отредактировано автором: 21 Мая, 2012 - 20:08:20)

 
 Top
Medallion
Отправлено: 21 Мая, 2012 - 19:44:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




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

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form name="rating" method="post" action="#">
  3.    <label><input type="radio" name="one"        value="1" onClick="rating.submit();"> +1</label><br>
  4.    <label><input type="radio" name="two"        value="2" onClick="rating.submit();"> +2</label><br>
  5.    <label><input type="radio" name="three"      value="3" onClick="rating.submit();"> +3</label><br>
  6.    <label><input type="radio" name="four"       value="4" onClick="rating.submit();"> +4</label><br>
  7.    <label><input type="radio" name="five"       value="5" onClick="rating.submit();"> +5</label><br>
  8.    <label><input type="radio" name="six"        value="6" onClick="rating.submit();"> +6</label><br>
  9.    <label><input type="radio" name="seven"      value="7" onClick="rating.submit();"> +7</label><br>
  10.    <label><input type="radio" name="eight"      value="8" onClick="rating.submit();"> +8</label><br>
  11.    <label><input type="radio" name="nine"       value="9" onClick="rating.submit();"> +9</label><br>
  12.    <label><input type="radio" name="ten"        value="10" onClick="rating.submit();"> +10</label><br>
  13. </form>
  14.  
  15. <?php
  16. if ($_POST['one'] || $_POST['two'] || $_POST['three'] || $_POST['four'] || $_POST['five'] ||
  17.         $_POST['six'] || $_POST['seven'] || $_POST['eight'] || $_POST['nine'] || $_POST['ten']) {
  18.         echo 'Переменная '.$_POST['one'].$_POST['two'].$_POST['three'].$_POST['four'].
  19.         $_POST['five'].$_POST['six'].$_POST['seven'].$_POST['eight'].
  20.         $_POST['nine'].$_POST['ten'].' существует';
  21. }
  22. ?>
  23.  

(Добавление)
Это ограничение поля форума, всё моё форматирование с Dreamweaver - а "испоганило")
 
 Top
IllusionMH
Отправлено: 21 Мая, 2012 - 20:06:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




Medallion, а теперь вдруг захотелось чтобы оценка была от 1 до 100... Радость
 
 Top
Medallion
Отправлено: 21 Мая, 2012 - 20:07:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




На месте пользователя, я бы не хотел, чтобы оценка была от 1 до 100, и это "бред"; никому это не нужно, ни пользователю, ни разработчику. Хочешь всё-таки ему цикл впихнуть)
 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 20:29:33
Post Id


Посетитель


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


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




Medallion, а вот в Вашем варианте как в php коде вывести выбранную оценку?? print $_POST[???] - какое тут значение выбрать??
 
 Top
Medallion
Отправлено: 21 Мая, 2012 - 21:05:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 253
Дата рег-ции: Май 2012  
Откуда: Херсон, Украина


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




Тебе даже значение не нужно, знаешь что условие выполняется, например нажимаешь,
на оценку +1, выводиться переменная существует, это прописал, для наглядности. Сам какой хочешь текст и выводи. Напиши echo '1';
Выведет тебе цифру 1, и так для всех переменных.

Смотри на это условие:
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($_POST['one'] == 1) {
  3.     echo 'Условие выполняется при наличии цифры 1 в атрибуте value';
  4. }
  5.  


Если в атрибуте value стоит не цифра один, условие не выполнится.
(Добавление)
Улови суть ещё раз.
Начнём с начала.
В теге <form> есть атрибут action, который указывает, какой файл будет обрабатывать, данные, которые пользователь ввёл в форме.
Если поставить action="#" то этот же файл и будет отрабатывать эти данные, а если
указать путь к файлу, например action="process.php" то в этом файле process.php и должен быть скрипт PHP.
Функция Javascript - name_form.submit() при одиночном клике onClick отправляет форму к файлу-обработчику, заметь name_form - это имя формы, которое задается между тегами
<form></form> в атрибуте name
Например, в атрибуте формы мы имеем имя, в твоём случае name="rating"
Вот теперь, готовая функция Javascript - rating.submit() которая срабатывает при событии щелчка левой кнопки мыши. А ты ранее это имя присвоил всем полям при том же) почему ничего и не видел.
Вернемся к форме:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form name="rating" method="post" action="#">
  3.    <label><input type="radio" name="one"
  4.        value="1" onClick="rating.submit();"> +1</label><br>
  5.    <label><input type="radio" name="two"
  6.        value="2" onClick="rating.submit();"> +2</label><br>
  7.    <label><input type="radio" name="three"
  8.      value="3" onClick="rating.submit();"> +3</label><br>
  9.    <label><input type="radio" name="four"
  10.       value="4" onClick="rating.submit();"> +4</label><br>
  11.    <label><input type="radio" name="five"
  12.       value="5" onClick="rating.submit();"> +5</label><br>
  13.    <label><input type="radio" name="six"
  14.        value="6" onClick="rating.submit();"> +6</label><br>
  15.    <label><input type="radio" name="seven"
  16.      value="7" onClick="rating.submit();"> +7</label><br>
  17.    <label><input type="radio" name="eight"
  18.      value="8" onClick="rating.submit();"> +8</label><br>
  19.    <label><input type="radio" name="nine"
  20.       value="9" onClick="rating.submit();"> +9</label><br>
  21.    <label><input type="radio" name="ten"
  22.        value="10" onClick="rating.submit();"> +10</label><br>
  23. </form>
  24.  


Как видишь обработчиком формы есть символ хеш #
а значит этот же файл и есть обработчиком, в котором должен быть PHP-код.
При обработки формы PHP-интерпретатор создает глобальные переменные, с тем именем, которое указано в атрибуте name. Например, если мы нажали на цифру 2, то в POST глобальной переменной появиться переменная two со значением, которое указанно в value.
Если мы обратимся к переменной $_POST['two'], нам выведет цифру 2, так как в value стоит 2, если в value занесем строку "два", при обращении к $_POST['two'], нам выведет эту строку "два", я надеюсь смысл понятен.
Атрибут name создаёт переменную, атрибут value является значением этой переменной.

Написал жестоко) Но. я хотел расжевать суть.
 
 Top
Extazy
Отправлено: 21 Мая, 2012 - 21:42:42
Post Id


Посетитель


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


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




Medallion пишет:
Тебе даже значение не нужно, знаешь что условие выполняется, например нажимаешь,
на оценку +1, выводиться переменная существует, это прописал, для наглядности. Сам какой хочешь текст и выводи. Напиши echo '1';

а мне как раз необходимо знать что за оценка была поставлена. При выборе любого пункта будет выдавать один и тот же текст типа "спасибо за голос", а в базу будет заноситься оценка.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTML, Дизайн & CSS »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB