Вопрос № 55366: Уважаемые эксперты!
Подскажите, как средствами PHP разобрать XML-запрос, переданный методом POST? Если вопрос требует очень пространного ответа, то где об этом можно почитать?...Вопрос № 55396: Необходимо передать значения переменных методом POST, но по тегу A.
С методом GET проблем нет: abc.php?a=5&b=2, а как сделать тоже методом POST?
P.S. Кнопку submit делать нехочу, она выглядит коряво.
..Вопрос № 55410: Расскажите, плиз, как в пхп работать с чекбоксами. Интереснее всего знать, как проверять, помечены они или нет. Заранее спасибо за ответы....Вопрос № 55414: Думаю ошибка где-то здесь. Я пытаюсь добавить текст в бд, то есть после подключения к бд, идет выбор бд, потом вставка в таблицу news данных из $news_text
Хотя мне нужно, чтоб вставка проходила по такому принципу в таблицу news в поле news_text ...Вопрос № 55419: Здравствуйте!
Такая прорблема.
Нужна форма на сайте в которую посетитель вводит логин и пароль и нажимает отправить, после чего данные отсылаются мне на почту.
Скрипт несложный я написал его сам (см в приложении). На денвере он работает х...Вопрос № 55425: Извините, неточно сформулировал вопрос. Расскажите, как в пхп определить помеченные чекбоксы, при условии, что этих самых чекбоксов не фиксированное количество, которое может принимать довольно большие значения. Заранее спасибо за ответы....Вопрос № 55430: Уважаемые, Где и что надо изменить, чтоб php код работал в html на локалке?...
Вопрос № 55.366
Уважаемые эксперты!
Подскажите, как средствами PHP разобрать XML-запрос, переданный методом POST? Если вопрос требует очень пространного ответа, то где об этом можно почитать?
Отправлен: 14.09.2006, 00:06
Вопрос задал: chiefff (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: HookEst
Здравствуйте, chiefff!
Если правильно понял, XML-запрос это переменная, передаваемая скрипту через HTTP POST содержащая строку в формате XML, или uploaded XML файл, то в простых случаях можно обработать текст с помощью регулярных выражений(на этом не буду останавливаться, существует множество статей и книг по этой теме), или же воспользоваться встроенными в PHP XML Parser Functions.
в примере(взят из мануала по PHP) выводиться структура XML файла data.xml с отступами.
Основные функции:
xml_parser_create() - создает объект xml_parser;
xml_set_element_handler() - задает парсеру callback функции вызываемые при открытии и закрытии каждого элемента(функции startElement и endElement);
startElement,endElement - вызываются при открытии и закрытии элемента, для его обработки, в параметрах передаются: объект parser, имя текущего элемента, и ассоциативный массив его аттрибутов(ключ-имя аттрибута, значение - его значение);
xml_parse()- непосредственно парсит XML вызывая startElement и endElement для каждого элемента по порядку;
xml_parser_free() уничтожает xml_parser;
ну а все остальное - механизм чтения XML из файла, если у Вас строка можно все это опустить, а в xml_parse передать эту строку.
по литературе что-нибудь особое к сожалению подсказать не могу, разве что стандартный мануал по PHP(http://www.php.net/docs.php)
Если что, пишите.
Удачи.
Приложение:
Ответ отправил: HookEst (статус: 2-ой класс)
Ответ отправлен: 15.09.2006, 11:25 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Вопрос № 55.396
Необходимо передать значения переменных методом POST, но по тегу A.
С методом GET проблем нет: abc.php?a=5&b=2, а как сделать тоже методом POST?
P.S. Кнопку submit делать нехочу, она выглядит коряво.
Отправлен: 14.09.2006, 09:44
Вопрос задал: NiGHT (статус: Студент)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, NiGHT!
Простыми средствами (без использования кнопки submit) это сделать невозможно.
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 09:56
Отвечает: Straight
Здравствуйте, NiGHT!
Ну, во-первых, кто мешает сделать кнопку, которая выглядит не коряво?
А во-вторых, если уж так приспичило, то сделайте форму с невидимыми полями и без кнопки (хоть вообще невидимую форму в невидимом слое). В теге А напишите:
onClick="mycoolform.submit();"
Ответ отправил: Straight (статус: Студент)
Ответ отправлен: 14.09.2006, 09:56 Оценка за ответ: 5
Вопрос № 55.410
Расскажите, плиз, как в пхп работать с чекбоксами. Интереснее всего знать, как проверять, помечены они или нет. Заранее спасибо за ответы.
Отправлен: 14.09.2006, 12:01
Вопрос задал: Romooseek (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: SPEKTR
Здравствуйте, Romooseek!
Просто в теге указываете имя чекбокса, а после, при обработке PHP днлаете проверку:
<?
// Допустим, имя чекбокса -- "vodka", а метод - POST
if ($HTTP_POST_VARS['vodka'] == true) // Если помечен
{echo 'Водка пить -- земля валяться!';}
else // Если не помечен
{echo 'Трава курить -- орёл летать!';};
?>
--------- Кто эксперт? Я эксперт?! Не, вы меня с кем-то путаете...
Ответ отправил: SPEKTR (статус: 2-ой класс)
Ответ отправлен: 14.09.2006, 12:13
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, Romooseek!
1. Для удобства работы желательно использовать ассоциированные массивы.
2. Основная особенность работы чекбоксо'ов состоит в том, что если он не выбран, то НИКАКИХ данных по этому чекбоксу не передается. Что бы этого не присходило необходимо применять поле HIDDEN.
Пример рабочего кода приведен в приложении.
Приложение:
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 12:15
Отвечает: Physicist
Здравствуйте, Romooseek!
У каждого checkbox'а есть имя (name='imya') и значение (value='znach'). Если checkbox помечен, то при отправке данных на сервер будет отправлена строка imya=znach (POST или GET методом, если поле value не указано, считается что оно равно 'on'), а если не помечен - ничего не отправится.
Так что достаточно проверить просто факт существования переменной с именем imya:
if (isset($_REQUEST['imya'])) {
...//checkbox помечен
}
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 14.09.2006, 12:21
Отвечает: PVS
Здравствуйте, Romooseek!
Чекбокс - это то что Вы видите. на самом деле он такой же input как текстовое поле или radiobutton тоесть он имеет name="SomeName" и value="SomeValue" . Для PHP это значит что при отмеченом чекбоксе в отправленых данных будет установлена переменная $SomeName (в php3. в php4 и выше при настройке register_globals=On) или $_REQUEST["SomeName"] (в php4 и выше - всегда, независимо от register_globals). Значение этой переменной, естественно, будет SomeValue .
Если чекбоксов много и/или заранее неизвестно сколько, то их называют так: name="SomeName[]" и разные value. Тоесть PHP получит переменную-массив. Если нескольким чекбоксам дать одно имя, но не в виде массива (без []) то PHP получит только последнее значение.
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 14.09.2006, 12:21
Отвечает: NoOne
Здравствуйте, Romooseek!
Я бы предложил такой вариант.
Приложение:
--------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (c) М.Фаулер
Ответ отправил: NoOne (статус: 2-ой класс)
Ответ отправлен: 14.09.2006, 14:18
Вопрос № 55.414
Думаю ошибка где-то здесь. Я пытаюсь добавить текст в бд, то есть после подключения к бд, идет выбор бд, потом вставка в таблицу news данных из $news_text
Хотя мне нужно, чтоб вставка проходила по такому принципу в таблицу news в поле news_text из $news_text
Подскажите как это написать
Спасибо!
Приложение:
Отправлен: 14.09.2006, 12:16
Вопрос задала: MadeInUSSR (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: SPEKTR
Здравствуйте, MadeInUSSR!
Тут достаточно после имени таблицы указать имя поля в скобках. Ещё я немного Вам код поменял, пару кавычек поставил, так вернее и вообще правильней. Удачи!
$query="insert into news (`news_text`) values ('" . $news_text . "')";
--------- Кто эксперт? Я эксперт?! Не, вы меня с кем-то путаете...
Ответ отправил: SPEKTR (статус: 2-ой класс)
Ответ отправлен: 14.09.2006, 12:26 Оценка за ответ: 5
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, MadeInUSSR!
Запрос следует переписать так:
$query="insert into news (news_text) values ('$news_text');";
$result=mysql_query($query);
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 12:26
Отвечает: PVS
Здравствуйте, MadeInUSSR!
Кавычек мало, да и немного не там они
$query="insert into new(news_text) values ('".$news_text."')";
$news_text также предварительно должен быть обработан на предмет наличия символов кавычек, слэша и чего-там еще sql не любит. Например так $news_text=addslashes($news_text);
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 14.09.2006, 12:27 Оценка за ответ: 5
Вопрос № 55.419
Здравствуйте!
Такая прорблема.
Нужна форма на сайте в которую посетитель вводит логин и пароль и нажимает отправить, после чего данные отсылаются мне на почту.
Скрипт несложный я написал его сам (см в приложении). На денвере он работает хорошо и без збоев.
Как только перенес на хостинг (бесплатный но с поддержкой пхп, jino-net.ru) перестал.
Причем письмо мне приходит но без логина и пароля. Такое впечатление что просто не переносятся значения переменных. Что нужно исправить в скрипте или в форме, чтобы все было в порядке.
На вышеупомянутом сайте стоит пхп 5, а на денвере если не ошибаюсь 4. Может проблема в этом?
Приложение:
Отправлен: 14.09.2006, 12:34
Вопрос задал: Valeraorg1 (статус: 2-ой класс)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Valeraorg1!
Проблема в том, что у Вас в денвере выставлена переменная RegisterGlobal в on, а на хостинге в off. И соответственно на хостинге переменные, переданные через метод post будут храниться в массиве $_POST.
Перепишите участок кода след. образом, должно заработать:
Ответ отправил: Цепковский Антон Сергеевич (статус: 4-ый класс)
Ответ отправлен: 14.09.2006, 12:42 Оценка за ответ: 5 Комментарий оценки: Спасибо большое!!!!!!!!!!!!!! Заработало!!!!!!
Отвечает: Straight
Здравствуйте, Valeraorg1!
Похоже на то, что на сервере стоит "register_global off".
Попробуйте брать данные не напрямую из переменных, а из массива $_POST
$body = $_POST['body'];
$pas = $_POST['pas'];
Ответ отправил: Straight (статус: Студент)
Ответ отправлен: 14.09.2006, 12:42 Оценка за ответ: 5 Комментарий оценки: Спасибо большое!!!!!!!!!!!!!! Заработало!!!!!!
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, Valeraorg1!
Причина очень проста - в Денвере включена опция registr_globals, который отключен у провайдера. Поэтому добавте в начало файла sendmail.php следующий код:
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 12:44 Оценка за ответ: 5 Комментарий оценки: Спасибо большое!!!!!!!!!!!!!! Заработало!!!!!!
Отвечает: PVS
Здравствуйте, Valeraorg1!
Вероятно в Денвере выставлена настройка register_globals=On. По умолчанию она отключена. Замените $body на $_POST["body"], $pas на $_POST["pas"] и т.д.
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 14.09.2006, 12:58 Оценка за ответ: 5 Комментарий оценки: Спасибо большое!!!!!!!!!!!!!! Заработало!!!!!!
Вопрос № 55.425
Извините, неточно сформулировал вопрос. Расскажите, как в пхп определить помеченные чекбоксы, при условии, что этих самых чекбоксов не фиксированное количество, которое может принимать довольно большие значения. Заранее спасибо за ответы.
Отправлен: 14.09.2006, 13:18
Вопрос задал: Romooseek (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Physicist
Здравствуйте, Romooseek!
Тогда так: присваиваешь каждому checkbox'у имя-массив, например name="checks[]" и задаешь значение value="123", где 123 - номер checkbox'а. Тогда проверка того, что chekbox 123 помечен выглядит так:
Приложение:
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 14.09.2006, 13:35
Отвечает: SPEKTR
Здравствуйте, Romooseek!
А можно так.
Где-то должно храниться количество этих чекбоксов (а то как программа определит их количество?), а после присваиваем чекбоксам имена "check1", "check2", "check3"...
После устраиваем цикл, примерно такой:
<?
// Допустим, что чекбоксов 4, количество надо
// вытаскивать или из базы данных или из текстового файла.
// Метод -- POST
// И пусть ещё, если чекбокс отбечен, то выводится какой-то текст из файла.
?>
--------- Кто эксперт? Я эксперт?! Не, вы меня с кем-то путаете...
Ответ отправил: SPEKTR (статус: 2-ой класс)
Ответ отправлен: 14.09.2006, 13:41
Отвечает: PVS
Здравствуйте, Romooseek!
Дайте им всем имя name="cb_arr[]" и value , по которому вы сможете их идентифицировать (например уникальное поле из базы данных или на основании чего там они у вас формируются). Тогда в PHP Вы получите
$cb_arr=$_REQUEST["cb_arr"];
foreach($cb_arr as $cb_val){
echo $cb_val." отмечен";
};
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 14.09.2006, 13:51
Отвечает: NoOne
Здравствуйте, Romooseek!
Я бы предложил такой вариант
Приложение:
--------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (c) М.Фаулер
Ответ отправил: NoOne (статус: 2-ой класс)
Ответ отправлен: 14.09.2006, 14:18
Отвечает: Cimus
Здравствуйте, Romooseek!
Посмотрите приложение, там достаточно всё понятно.
Можно ещё все checkbox`ы собрать в отдельный массив, для этого надо имена checkbox`ов поменять на
NAME='array[1] '
NAME='array[2] '
NAME='array[3] '
...........
NAME='array[133] '
и соответственно просмотреть всё в цикле
foreach($_POST['array'] as $key=>$value)
{
print "Вы отметили кнопку <b>"$key"</b>, её значение равно - <b>"$value"</b><br> ";
}
Приложение:
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 15:39
Вопрос № 55.430
Уважаемые, Где и что надо изменить, чтоб php код работал в html на локалке?
Отправлен: 14.09.2006, 13:44
Вопрос задала: MadeInUSSR (статус: 2-ой класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: PVS
Здравствуйте, MadeInUSSR!
Если PHP установлен, то в httpd.conf прописаны расширения которые он обрабатывает: AddType application/x-httpd-php .php
Надо добавить
AddType application/x-httpd-php .htm
AddType application/x-httpd-php .html
и т.д. - все что Вам нужно пропустить через PHP
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 14.09.2006, 13:49 Оценка за ответ: 5
Отвечает: Цепковский Антон Сергеевич
Здравствуйте, MadeInUSSR!
Это настраивается в настройках Вашего web-сервера.
Для IIS: Вкладка "Домашний каталог", кнопка "Настройка", для типа файла .html ставите обработчик [путь]/php.exe
Для Apache: в файле httpd.conf добавьте директиву AddType application/x-httpd-php .html
С уважением,
Антон Цепковский
--------- Вся наша жизнь - RPG
Ответ отправил: Цепковский Антон Сергеевич (статус: 4-ый класс)
Ответ отправлен: 14.09.2006, 14:05 Оценка за ответ: 5
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, MadeInUSSR!
Одно из интересных свойств PHP является то, что ВСЕ находящееся за пределами тегов <?php и ?> выводится как есть. Поэтому я пишу скрипт в котором перемешивается HTML и PHP код.
Приложение:
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 7-ой класс)
Ответ отправлен: 14.09.2006, 14:14 Оценка за ответ: 5