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
Форумы портала PHP.SU :: Версия для печати :: Помогите преобразовать данные из формы
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Помогите преобразовать данные из формы

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

1. Pelsh - 09 Января, 2010 - 23:14:24 - перейти к сообщению
имеем форму вида

CODE (text):
скопировать код в буфер обмена
  1.  
  2. <form name="form1">
  3.     <p><select name="formselect" size="3" multiple>
  4.     <option value="1">один</option>
  5.     <option value="2">два</option>
  6.     <option value="3">три</option>
  7.     </select> &nbsp;<input type="submit" name="submit" value="go"></p>
  8. </form>
  9.  


пользователь может выбрать сразу несколько значений например при одновременном выборе значений "один" и "три" после нажатия кнопки "GO" - сервер получит следующие данные

CODE (text):
скопировать код в буфер обмена
  1.  
  2. formselect=1&formselect=3&submit=go
  3.  


суть вопроса такова как теперь мне получить занчения переменной $formselect и преобразовать ее в одно значение вида:

$новая_переменная="значения перемнной $formselect идущие через запятую"

Пример:

при получении вот такой строки
CODE (text):
скопировать код в буфер обмена
  1.  
  2. formselect=1&formselect=3&submit=go
  3.  


скрипт должен обработать ее и в итоге получить новую переменную вида:

CODE (text):
скопировать код в буфер обмена
  1. $new_formselect="1, 3";
2. Мелкий - 09 Января, 2010 - 23:38:50 - перейти к сообщению
вместо name="formselect" напишите name="formselect[]" - тогда получите массив из выбранных элементов. Ну или специально для вашей задачи:
PHP:
скопировать код в буфер обмена
  1. $select = implode(", ", $_POST['formselect']);
3. Pelsh - 10 Января, 2010 - 21:13:07 - перейти к сообщению
Мелкий пишет:
вместо name="formselect" напишите name="formselect[]" - тогда получите массив из выбранных элементов. Ну или специально для вашей задачи:
PHP:
скопировать код в буфер обмена
  1. $select = implode(", ", $_POST['formselect']);


написал вот такой скрипт
PHP:
скопировать код в буфер обмена
  1. <?
  2.  
  3.  
  4. $select = implode(", ", $_POST['formselect']);
  5. echo"$select";
  6.  
  7. ?>


в итоге выдает такую ошибку:

PHP:
скопировать код в буфер обмена
  1. Warning: implode() [function.implode]: Bad arguments. in K:\home\test1.ru\www\chtivo\snupik_add_new_book.php on line 4
4. SAD - 10 Января, 2010 - 21:22:03 - перейти к сообщению
форма должна иметь такой вид
CODE (text):
скопировать код в буфер обмена
  1. <form name="form1" action="" method="POST">
  2.  
  3.     <p><select name="formselect[]" size="3" multiple>
  4.  
  5.     <option value="1">один</option>
  6.  
  7.     <option value="2">два</option>
  8.  
  9.     <option value="3">три</option>
  10.  
  11.     </select> &nbsp;<input type="submit" name="submit" value="go"></p>
  12.  
  13. </form>
5. Pelsh - 10 Января, 2010 - 21:33:51 - перейти к сообщению
SAD пишет:
форма должна иметь такой вид

может,но не должна, если не поставить metod, то все переменные передадутся скрипту в строке адреса
6. SAD - 10 Января, 2010 - 21:34:17 - перейти к сообщению
можно и не ставить "", если только одну переменную выводишь

скопируй форму себе заново и пробуй. у меня все работает
7. Мелкий - 10 Января, 2010 - 21:35:45 - перейти к сообщению
Pelsh, данные-то с формы передаёте?
8. Pelsh - 10 Января, 2010 - 21:42:15 - перейти к сообщению
извиняюсь! все заработало - косяки были мои с формой - криво предавала мою переменную

тему можно закрыть

спасибо большое Мелкий и SAD!

 

Powered by ExBB FM 1.0 RC1