Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не могу передать строку через форму


Автор: Moses 14.11.2008, 17:50
Нужно передать из формы переменной $qid_str строку:
Код

$qid_str = trim($qid_str);
echo "This is a qid_str: $qid_str"; // вывод: This is a qid_str: 1 2 3
echo "<input type = hidden name = qid_str value = $qid_str>";


На странице, куда приводит форма:
Код

echo "This is it: $_POST[qid_str]"; // вывод: This is it: 1


Не пойму в чем дело. Пытался устанавливать тип переменной "string" принудительно, но не помогло. Натолкните на мысль, пожалуйста.

Автор: skyboy 14.11.2008, 18:09
Цитата(Moses @  14.11.2008,  16:50 Найти цитируемый пост)
<input type = hidden name = qid_str value = $qid_str>

ты не обрамляешь значение атрибутов кавычками. за что и получаешь.
и не смотришь в html-код, только в РНР.  смотрел бы в html, нашел бы сам и гораздо быстрее ответа на форуме.

Автор: patap 14.11.2008, 18:12
так все правильно, но былобы неплохо взглянуть полностью на всю форму (код формы)

да и на счет кавычек верно подмечено

Автор: Moses 14.11.2008, 18:22
О, так и есть. Спасибо за ответ и за совет.

Автор: bars80080 14.11.2008, 18:30
вообще, вопрос крайне непонятен, однако, чтобы в дальнейшем избегать всяких ляпсус, советую усвоить как правило следующий синтаксис:

Код

echo 'This is a qid_str: '.$qid_str; 
echo '<input type="hidden" name="qid_str" value="'.$qid_str.'" />';
echo 'This is it: '.$_POST['qid_str'];
 касательно всех пробелов и кавычек. вот просто принять что делать надо так и всё. со временем разберёшься, почему так лучше

что касается сабжа, то не видно самой формы, также не ясно, откуда берётся значение $qid_str в поле hidden

Добавлено через 39 секунд
ого, у меня задержка в 21 минуту была

Автор: Moses 17.11.2008, 10:19
Спасибо за советы, разобрался.
Как заметил skyboy, если бы я смотрел в html, разобрался бы и сам. Внутри html-тега параметры разделяются пробелами. Тоесть, вставив в качестве значения параметра value строку, элементы которой разделены пробелами, я фактически присвоил только первый символ строки до первого пробела.
Строки, где нету переменных и специальных подстановочных символов, которые должны быть распознанны, нужно заключать в одинарные кавычки. Это снимет нагрузку с сервера, которому не прийдется зря анализировать строки. Кроме того, даже если в строке встречается переменная, то будет меньше потребляться ресурсов сервера если текстовую часть заключить отдельно в одинарные кавычки, а значение переменной присоединить к строке оператором присоединения '.'

Автор: skyboy 17.11.2008, 12:54
Moses, на самом деле, проблема "одинарные кавычки против двойных" сильно надумана. даже если разница во времени обработки составит одну десятитысячную секунды, "выигранное" время будет попросту незаметно на фоне сотых долей секунд на подключение к БД, трети секунды на выполнение запроса и половине секунды на генерацию страницы.
Тут выделение переменных из кавычек много важнее призрачной отптимизации по скорости, потому как:
а) сразу видишь возможные ошибки
б) далеко не все, виденные мною, редакторы кода отличались подсветкой переменных внутри строки - значит, код может сильно проиграть в читабельности. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)