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]   

> Без описания
naruto
Отправлено: 26 Февраля, 2012 - 20:03:09
Post Id


Новичок


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


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




Здравствуйте! Есть задача, приходящие данные со строки перевести в массив удобный для добавления данных в БД.
Пример приходящей строки
que_type1=radio&question1=Vopros-1&answer1=Otvet-1&que_type2=check&question2=Vopros-2&answer3=Otvet-2&answer2=Otvet-3&.

нужно раскидать в массив вида
question[0] = Vopros-1
question[1] = Vopros-2 ...

question[0][type] = radio
question[0][type] = check...

question[0][name][0] = otvet-1
question[1][name][0] = otvet-2
question[1][name][1] = otvet-3

Сам алгоритм хотя бы, как я понимаю регулярные выражения пригодятся, но само главное как ответы привязать к вопросам, тоесть ответы между question1 и question2 поместить в question[0][name][0] и т.д. строка может быть любой длины

(Отредактировано автором: 26 Февраля, 2012 - 20:03:39)

 
 Top
Panoptik
Отправлено: 26 Февраля, 2012 - 20:06:54
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




у вас как то неправильно сформированная задача. может изначально расскажите идею, а вам подскажут как сделать более правильно?


-----
Just do it
 
 Top
naruto
Отправлено: 26 Февраля, 2012 - 20:13:02
Post Id


Новичок


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


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




мм задача с формы собрать данные, ну и добавить в БД. Форму я сделал на jQuery, поля добавляются для вопросов ответов-динамически. Затем сереализую и посылаю ajax ом в обработчик. Там он автоматом садится в массив $_POST. Тоесть $_POST[question1] = Vopros-1 и т.д. Чтобы потом добавлять все это в БД мне надо в удобоворимый массив все запихнуть с привязкой ответов к вопросам. Мне показалась удобнее из строки будет составлять новый массив, поэтому сделал
$a = $_POST;
foreach ($a as $b=>$c){
$str.=$b.'='.$c.'&';

} и получил строку которую постил выше
 
 Top
OrmaJever Модератор
Отправлено: 26 Февраля, 2012 - 20:25:50
Post Id



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


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


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




может parse_str()? Там только индексы другие будут.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
naruto
Отправлено: 26 Февраля, 2012 - 20:27:46
Post Id


Новичок


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


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




мм, ну а как мне сделать чтобы ответы между первым и вторым вопросом попадали в массив с первым вопросом? и так далее? между вторым и третьим?
 
 Top
Panoptik
Отправлено: 26 Февраля, 2012 - 21:26:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




вы многим облегчите если сформируете правильно html-разметку при чем не обязательно писать полностью слова "вопрос1" и "ответ1" а достаточно 'id' их в БД
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <p>Вопрос с радиокнопками</p>
  3. <label>Вариант 1
  4. <input type='radio' name='vopr1[]' value='1' />
  5. </label>
  6. <label>Вариант 2
  7. <input type='radio' name='vopr1[]' value='2' />
  8. </label>
  9. <label>Вариант 3
  10. <input type='radio' name='vopr1[]' value='3' />
  11. </label>
  12. <label>Вариант 4
  13. <input type='radio' name='vopr1[]' value='4' />
  14. </label>
  15.  
  16. <p>Вопрос с чекбоксами</p>
  17. <label>Вариант 1
  18. <input type='checkbox' name='vopr2[]' value='1' />
  19. </label>
  20. <label>Вариант 2
  21. <input type='checkbox' name='vopr2[]' value='2' />
  22. </label>
  23. <label>Вариант 3
  24. <input type='checkbox' name='vopr2[]' value='3' />
  25. </label>
  26. <label>Вариант 4
  27. <input type='checkbox' name='vopr2[]' value='4' />
  28. </label>
  29.  

вот как пример. вариант не идеален. но под свое думаю подправите. а дальше данные будут сами находиться в нужных элементах массива

(Отредактировано автором: 26 Февраля, 2012 - 21:48:17)



-----
Just do it
 
 Top
naruto
Отправлено: 29 Февраля, 2012 - 06:26:01
Post Id


Новичок


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


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




Да спасибо, передала html страницу по вашему методу, назначая именам текстовых полей массивы, обошлось без манипуляций со строками и регулярными выражениями. Спасибо!
 
 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