Здравствуйте, требуется помощь по связи форм. передача производится методом Get(пробовал и Post), не передается переменная. ниже представляю код проги. 1.html Код (Text): <FORM method="GET" action="index.php" > Название страны<br> <INPUT type="text" NAME="page" SIZE=57> <br> <INPUT type="reset" VALUE="Сброс"> <INPUT type="SUBMIT" VALUE="Послать"> </FORM> index.php Код (Text): echo "<CENTER>"; echo "<FORM method=GET>"; echo "Название страны <br>"; echo "<INPUT type=text NAME=page SIZE=57> <br>"; echo "<INPUT type=reset VALUE=Сброс>"; echo "<INPUT type=SUBMIT VALUE=Послать>"; echo "</FORM>"; echo "</CENTER>"; // $str=$_GET['page']; switch ($str) { case "Владимир": $id=1; break; case "Виталий": $id=2; break; case "Егор": $id=3; break; default: echo "Нет такого имени в БД"; } Выводит в итоге в index.php, что нет такого имени в БД.
Здесь у тебя нет никакой БД =) Добавлено спустя 9 минут 35 секунд: Ну а так: Код (Text): $str = $_GET['page']; if (is_string($str)) { if ($str === urldecode($str)) { $str = trim($str); } else { $str = trim(urldecode($str)); } switch ($str) { case 'Владимир': $id=1; break; case 'Виталий': $id=2; break; case 'Егор': $id=3; break; default: echo 'Нет такого имени в БД'; } } else { echo 'Параметр $str не является строкой'; } Добавлено спустя 49 секунд: ХЗ, правда, что ты будешь делать с этим... Надеюсь не авторизацию?
Нет, не авторизацию... Все равно не идет, в Index.php начал выводить через эко все, выводит вопросительные знаки... Может библиотеку какую не установил?
Не вижу смысла проверять на строку. В $_GET не может ничего прийти кроме строки. Да и к тому же если у вас будет отсутствие, возникнут нотисы.
вот не поверишь))) это строки ключ строка(foo[]) в значении строка(bar) это уже парсер запроса видя квадратные скобки реализует массив поэтому соглашусь, в гет ничего кроме строки придти не может)))
мне то какая разница что мне там реализует массив, парсер или нет? мне нужно, чтобы в переменной $_GET['page'] была строка, а не массив. Добавлено спустя 7 минут 6 секунд: Ну так и что? Опять же делаю опыт. Код (PHP): echo '<pre>'; var_dump($_GET); echo '</pre>'; die; Ответ: Код (PHP): array(1) { 'foo' => array(2) { [0] => string(3) "bar" [1] => string(3) "bar" } } Ну и где же там ничего, кроме строки?
чуть выше я уже доказал что там строка. то что для вашей лени делает пхп преобразуя ключи со скобками в массив это пхп преобразует ключи со скобками в массив. и значениями ключей этого массива все равно будут строки. потому что веб-серверу пришел строковый запрос. он ничего не знает кроме строки байт. ключи в массив это уже надстройка. значения к нужному типу - это уже задача программиста. проверять является ли строкой бессмысленно ибо веб-сервер окружение заполнил строками. там не может быть ничего кроме строки. и тут кстати обсуждалось что значение может быть только строкой. а вы вдруг на ключи переключились. надеюсь я смог донести до вас что ключи тоже строки. и что массивом их делает пхп-машина. ок?
Попробуй в корень сайта закинуть файлик с названием .htaccess, в котором будет AddDefaultCharset utf-8. Либо если есть этот файл - добавь эту строчку Добавлено спустя 4 минуты 26 секунд: Не ок. Чувак, перечитай тред. Мне тип пишет, что . Я печатаю $_GET - распечатку ты сам видишь. Мне пофигу, что там присылается в апач, отсылается из апача, в мускул что передается, что возвращается из бэкенда во фронтенд и т. д. Я проверял переменную, в которой мог быть массив! Добавлено спустя 3 минуты 18 секунд: И мне пофигу что там пхп делает с твоей строкой, мне наплевать, честно. Мне нужно было, чтобы в $_GET['page'] была присвоена строка.
да не кипятись ты так. твоя проверка все равно некорректна... но спорить с самым умным пожалуй не буду)))
Я не кипячусь, все ок. Не, ну так значением $_GET['page'] может быть массив, объясни мне? Ты имеешь ввиду то, что нет проверки на существование ранее? Добавлено спустя 16 минут 43 секунды: Ну так продолжение будет? Что ответишь на мои вопросы?
Ну так что, молодой человек, ты на вопросы ответишь? Или мне засчитать слив? Может быть в переменной $_GET['page'] массив и почему проверка некорректна?
На первый отвечал. Итого - в переменной $_GET['page'] массива быть не может... Ок. Почему проверка не корректная?
Код (Text): if (is_string($str)) { if ($str === urldecode($str)) { $str = trim($str); } else { $str = trim(urldecode($str)); } Во-первых, как тебе уже было сказано, в гет приходит всегда строка. Во-вторых, декодировать не закодированную строку можно смело, и будет снова незакодированная строка. т.е. второй иф тоже не требуется. Код (PHP): $str = "abcdef"; var_dump ($str); //string(6) "abcdef" var_dump (urldecode($str)); //string(6) "abcdef" Т.е. весь этот приведённый кусок кода не делает ровным счетом ничего и заменяется на одну строку Код (PHP): $str = trim(urldecode($_GET['page']));
На счет, декодирования не спорю. Лишнее, но это уже личные предпочтения к написанию. Вы можете писать, конечно по другому, на счет этого спорить не буду.
Игорь, я дергаю страницу с такими данными... "&page[]=blablabla&page[]=blablabla". Печатаю массив $_GET. У меня элемент 'page' - это массив. Что я делаю не так? Добавлено спустя 27 секунд: Ты на вопрос, ответь! Шутник)
Что ты вообще такое говоришь? =))))))))))) ты выполняешь urldecode() В ОБОИХ СЛУЧАЯХ, а в элсе - так и ДВА РАЗА. Какие личные предпочтения, о чем ты. Просто будь внимательнее. Код же перед глазами.