Парни, не смотрите на меня косо, только учусь... возник вопрос: Код (PHP): <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Тег INPUT</title> </head> <body> <form name="test" method="post" action="input1.php"> <p><b>Ваше имя:</b><br> <input type="text" size="40"> </p> <p><b>Каким браузером в основном пользуетесь:</b><Br> <input type="radio" name="browser" value="ie"> Internet Explorer<Br> <input type="radio" name="browser" value="opera"> Opera<Br> <input type="radio" name="browser" value="firefox"> Firefox<Br> </p> <p>Комментарий<Br> <textarea name="comment" cols="40" rows="3"></textarea></p> <p><input type="submit" value="Отправить"> <input type="reset" value="Очистить"></p> </form> </body> </html> как отправить в DB mysql значения? как должен выглядеть input1.php?
https://php.net/manual/ru/ https://php.net/manual/ru/tutorial.forms.php https://php.net/manual/ru/mysqli.query.php https://php.net/manual/ru/mysqli.real-escape-string.php
input1.php Код (Text): <?php include "config.php"; $query = "INSERT INTO tbl VALUES ('".$_POST['??????'].",".$_POST['??????'].",".$_POST['??????'].",".$_POST['?????']."')"; if(mysql_query($query)) { echo "Данные успешно добавлены"; } else { echo "Ошибка - ".mysql_error(); } ?> config.php Код (Text): <?php $dblocation = "localhost"; $dbname = "base"; $dbuser = "root"; $dbpasswd = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) { echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } if (! @mysql_select_db($dbname,$dbcnx) ) { echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } ?> Какие переменные ставить? чтото по разномк пробую никак((((
http://phpfaq.ru/na_tanke http://phpfaq.ru/debug https://php.net/manual/ru/language.types.array.php Код (PHP): <?php header('Content-Type: text/html; charset=utf-8'); echo "<pre>"; var_dump($_POST); echo "</pre>"; function clear($value) { return mysql_real_escape_string($value); } if (empty($_POST['mytext']) === false && isset($_POST['browser']) && is_array($_POST['browser']) && count($_POST['browser']) > 0) { $text = mysql_real_escape_string($_POST['mytext']); $browser = implode("', '", array_map("clear", $_POST['browser']) ); $sql = "INSERT INTO tbl VALUES ('$text', '$browser')"; echo $sql; } elseif (count($_POST) > 0) { echo "Заполните все поля."; } ?> <form method="POST" action=""> <input type="text" name="mytext"><br> <input type="checkbox" name="browser[]" value="ie"><br> <input type="checkbox" name="browser[]" value="firefox"><br> <input type="submit"> </form> Добавлено спустя 3 минуты 29 секунд: Переходи на Myslqli http://php.ru/manual/book.mysqli.html так как mysql библиотека устарела
Код (Text): if (!isset($_POST['browser']) { аля-трю-ля-ля; } $aMytext = $_POST['mytext']; /* и делать с ним всё что угодно, не же ли постоянно обращаться к массиву POST*/ if ( is_array($aMytext) && count($aMytext) > 0) { $)
у каждого свои взгляды, кто то видит экономию на спичках.... а кто то видит в дальнейшем более эффективный и читабельный код
p@R@dox 55RU а кто-то просто пишет понятный работающий пример, ещё можно использовать библиотеки для форм и моделей и т.д.
denis01 так а что проще прочитать и понять( хотя коды оба рабочие), Код (Text): if (empty($_POST['mytext']) === false && isset($_POST['browser']) && is_array($_POST['browser']) && count($_POST['browser']) > 0) { и сломать глаза и мозг, или всё же Код (Text): if (!isset($_POST['browser']) { аля-трю-ля-ля; } $aMytext = $_POST['mytext']; /* и делать с ним всё что угодно, не же ли постоянно обращаться к массиву POST*/ if ( is_array($aMytext) && count($aMytext) > 0) { ???????????????
p@R@dox 55RU мне мой код проще понять и понять, так как всё в одной строке, без лишних if и копирования переменных. Для простого примера для samara как раз.
хм. Код (PHP): if (!empty($_POST['mytext']) && count($_POST['browser']) > 0) { не? зачем проверять определена ли $_POST['browser'], потом проверять массив ли это, если потом использовать count, при котором если массива нет или если это не массив работать не будет? Чисто так, для общего образования интересуюсь.
первый год разработки я тоже так писал в одну строчку, когда сайт по объему был не большим... но... все изменилось когда сайт стал набухать и требовал скорости и ресурсов... )
mr.akv PHP защитное программирование empty($_POST['mytext']) === false -> что-бы mytext не был пустым isset($_POST['browser']) -> если будет false, не будет Notice: Undefined index: browser is_array($_POST['browser']) -> ожидаем массив, поэтому проверяем count($_POST['browser']) > 0 -> хотим чтобы массив содержал больше одного элемента тут главное помнить, проверка идёт с лева на право, и как только одно значение будет false проверка дальше не пойдёт. p@R@dox 55RU это пример для samara на Symfony2: рисование формы, валидация с выводом ошибок, заполнение формы всё будет сделано одной строчкой Код (PHP): if ($form->isValid()
Код (Text): if ($form->isValid() это уже из обл. ОПП. Так не только в Yii, но и в ZF2... и вызов валидации формы в контроллере, еще не говорит о её выводе( рисовании)
Вы уж меня извиняйте, но: создал таблицу: Код (Text): CREATE TABLE tbl( TEXT TEXT, browser TEXT ) index.php Код (Text): <form method="POST" action=""> <input type="text" name="mytext"><br> <input type="checkbox" name="browser[]" value="ie"><br> <input type="checkbox" name="browser[]" value="firefox"><br> <input type="submit"> </form> action.php Код (Text): <?php include "config.php"; header('Content-Type: text/html; charset=utf-8'); echo "<pre>"; var_dump($_POST); echo "</pre>"; function clear($value) { return mysql_real_escape_string($value); } if (empty($_POST['mytext']) === false && isset($_POST['browser']) && is_array($_POST['bro$ $text = mysql_real_escape_string($_POST['mytext']); $browser = implode("', '", array_map("clear", $_POST['browser']) ); $sql = "INSERT INTO tbl VALUES ('$text', '$browser')"; echo $sql; } elseif (count($_POST) > 0) { echo "Заполните все поля."; } ?> config.php Код (Text): <?php // Код файла config.php // Адрес MySQL-сервера $dblocation = "localhost"; // Имя базы данных $dbname = "test"; // Имя пользователя... $dbuser = "root"; // Пароль $dbpasswd = "sa"; // Соединяемся с сервером базы данных - нужно получить соединение // по которому мы будем отправлять запросы базе данных и получать // ответы (данные или сообщения об успешности выполнения запросов) $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); mysql_query('set names utf8'); if (!$dbcnx) { echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } // Выбираем базу данных - этой функцией мы сообщаем с какой // базой данных мы будем работать, заметте, что вторым // параметром мы передаем дискриптор соединения $dbcnx, // который вернула функция mysql_connect if (! @mysql_select_db($dbname,$dbcnx) ) { echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } ?> Данных в базе нет, делаю на ubuntu server, логи не знаю где смотреть... подскажите что е так в коде?
в файле action.php вот это что is_array($_POST['bro$ ? И оформляй код в тегах Код ( (Unknown Language)): [b]]Тут код[[/b][b]/code][/b]