| ||||||||||||||||
Глава 51. PHP и HTMLPHP и HTML тесно связаны: PHP генерирует HTML, а HTML содержит информацию , которая высылается в PHP.
1. Какое кодирование/декодирование я должен выполнять при передаче значения в HTМL-форме? А через URL? Есть несколько этапов, когда кодировка имеет важное значение. Предположим, у вас имеется переменная string $data, содержащая строку, которую вы хотите передать некодированным способом. Тогда необходимые шаги:
2. Я пытаюсь использовать тэг <input type="image">, но переменные $foo.x и $foo.y недоступны. Где они? При отправке формы можно использовать с тэгом изображение вместо стандартной кнопки submit, как здесь:
Когда пользователь щёлкает по изображению, соответствующая форма будет передана на сервер с двумя дополнительными переменными: foo.x и foo.y. Поскольку $foo.x и $foo.y являются неверными именами переменных в PHP, они автоматически конвертируются в $foo_x и $foo_y. То есть, точки заменяются на символы подчёркивания. 3. Как мне создать массивы в HTML-тэге <form>? Чтобы получить результат вашей <form>, отправленный как массив в ваш PHP-скрипт, вы именуете элементы <input>, <select> или <textarea> таким образом:
Обратите внимание на квадратные скобки после имён переменных, это то, что делает их массивом. Вы можете группировать элементы в разные массивы, присвоив одно имя разным элементам:
Это создаст два массива - MyArray и MyOtherArray, которые будут отправлены PHP-скрипту. Можно также присвоить вашим массивам специфические ключи:
Массив AnotherArray теперь будет содержать ключи 0, 1, email и phone.
См. также Функции массива и Переменные за пределами PHP. 4. Как мне получит все результаты из HTML-тэга множественного выбора select? Тэг select multiple в HTML позволяет пользователю делать выбор нескольких позиций в списке. Эти позиции передаются затем обработчику акции формы. Проблема в том, что они все передаются с одним и тем же именем. Например:
Каждая выбранная опция дойдёт до обработчика акции как:
Каждая опция будет перезаписывать содержимое предыдущей переменной $var. Решением будет использование "массива элемента form" РНР. Нужно использовать следующее:
Это говорит PHP, что переменную $var нужно считать массивом, и каждое присвоение значения var[] добавляет элемент в этот массив. Первый элемент будет $var[0], следующий - $var[1] и т.д. Функция count() может использоваться для определения количества выбранных опций, а функция sort() - для сортировки массива опций, если необходимо. Обратите внимание, что, если вы используете JavaScript, наличие [] в имени элемента может создать проблемы, если вы попытаетесь обратиться к элементу по имени. Вместо имени используйте id элемента формы или заключите имя переменной в одинарные кавычки и используйте его как индекс в массиве элементов, например:
| ||||||||||||||||
|