За последние 24 часа нас посетили 59243 программиста и 1751 робот. Сейчас ищут 906 программистов ...

checkbox и mysql

Тема в разделе "PHP и базы данных", создана пользователем samara, 8 май 2015.

  1. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    Парни, не смотрите на меня косо, только учусь...
    возник вопрос:
    Код (PHP):
    1. <!DOCTYPE HTML>
    2. <html>
    3.  <head>
    4.   <meta charset="utf-8">
    5.   <title>Тег INPUT</title>
    6.  </head>
    7.  <body>
    8.  
    9.  <form name="test" method="post" action="input1.php">
    10.   <p><b>Ваше имя:</b><br>
    11.    <input type="text" size="40">
    12.   </p>
    13.   <p><b>Каким браузером в основном пользуетесь:</b><Br>
    14.    <input type="radio" name="browser" value="ie"> Internet Explorer<Br>
    15.    <input type="radio" name="browser" value="opera"> Opera<Br>
    16.    <input type="radio" name="browser" value="firefox"> Firefox<Br>
    17.   </p>
    18.   <p>Комментарий<Br>
    19.    <textarea name="comment" cols="40" rows="3"></textarea></p>
    20.   <p><input type="submit" value="Отправить">
    21.    <input type="reset" value="Очистить"></p>
    22.  </form>
    23.  
    24.  </body>
    25. </html> 
    как отправить в DB mysql значения?
    как должен выглядеть input1.php?
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    input1.php
    Код (Text):
    1. <?php
    2.     include "config.php";
    3.     $query = "INSERT INTO tbl VALUES ('".$_POST['??????'].",".$_POST['??????'].",".$_POST['??????'].",".$_POST['?????']."')";
    4.    if(mysql_query($query))
    5.   {
    6.      echo "Данные успешно добавлены";
    7.   }
    8.   else
    9.   {
    10.     echo "Ошибка - ".mysql_error();
    11.   }
    12. ?>
    config.php
    Код (Text):
    1. <?php  
    2.     $dblocation = "localhost";  
    3.     $dbname = "base";  
    4.     $dbuser = "root";  
    5.     $dbpasswd = "";  
    6.    $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);  
    7.   if (!$dbcnx)  
    8.   {  
    9.     echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное  
    10.                        отображение страницы невозможно.</P>" );  
    11.     exit();  
    12.   }  
    13.     if (! @mysql_select_db($dbname,$dbcnx) )  
    14.   {  
    15.     echo( "<P>В настоящий момент база данных не доступна, поэтому корректное  
    16.                        отображение страницы невозможно.</P>" );  
    17.     exit();  
    18.   }  
    19. ?>
    Какие переменные ставить?
    чтото по разномк пробую никак((((
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    http://phpfaq.ru/na_tanke
    http://phpfaq.ru/debug

    https://php.net/manual/ru/language.types.array.php

    Код (PHP):
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3.  
    4. echo "<pre>";
    5. var_dump($_POST);
    6. echo "</pre>";
    7.  
    8. function clear($value) {
    9.     return mysql_real_escape_string($value);
    10. }
    11.  
    12. if (empty($_POST['mytext']) === false && isset($_POST['browser']) && is_array($_POST['browser']) && count($_POST['browser']) > 0) {
    13.  
    14.     $text = mysql_real_escape_string($_POST['mytext']);
    15.     $browser = implode("', '", array_map("clear", $_POST['browser']) );
    16.     $sql = "INSERT INTO tbl VALUES ('$text', '$browser')";
    17.     echo $sql;
    18. } elseif (count($_POST) > 0) {
    19.     echo "Заполните все поля.";
    20. }
    21. ?>
    22.  
    23. <form method="POST" action="">
    24.     <input type="text" name="mytext"><br>
    25.     <input type="checkbox" name="browser[]" value="ie"><br>
    26.     <input type="checkbox" name="browser[]" value="firefox"><br>
    27.     <input type="submit">
    28. </form>
    Добавлено спустя 3 минуты 29 секунд:
    Переходи на Myslqli http://php.ru/manual/book.mysqli.html так как mysql библиотека устарела
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    жжжжжееесть...... ))
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    p@R@dox 55RU ещё надо добавить удаление пустых элементов в массиве $_POST['browser']
     
  8. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    denis01, так а не лучше это всё собрать до IF'a??? ))))
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    p@R@dox 55RU покажи пример
     
  10. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Код (Text):
    1. if (!isset($_POST['browser']) { аля-трю-ля-ля; }
    2. $aMytext = $_POST['mytext']; /* и делать с ним всё что угодно, не же ли постоянно обращаться к массиву POST*/
    3. if ( is_array($aMytext) && count($aMytext) > 0) {
    $)
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    p@R@dox 55RU похоже на экономию на спичках, но так тоже можно, и оформляй код в тег code=php
     
  12. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    у каждого свои взгляды, кто то видит экономию на спичках.... а кто то видит в дальнейшем более эффективный и читабельный код ;)
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    p@R@dox 55RU а кто-то просто пишет понятный работающий пример, ещё можно использовать библиотеки для форм и моделей и т.д.
     
  14. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    denis01
    так а что проще прочитать и понять( хотя коды оба рабочие),
    Код (Text):
    1. if (empty($_POST['mytext']) === false && isset($_POST['browser']) && is_array($_POST['browser']) && count($_POST['browser']) > 0) {
    и сломать глаза и мозг,
    или всё же
    Код (Text):
    1.  
    2. if (!isset($_POST['browser']) { аля-трю-ля-ля; }
    3.  
    4. $aMytext = $_POST['mytext']; /* и делать с ним всё что угодно, не же ли постоянно обращаться к массиву POST*/
    5.  
    6. if ( is_array($aMytext) && count($aMytext) > 0) {
    ???????????????
     
  15. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    p@R@dox 55RU мне мой код проще понять и понять, так как всё в одной строке, без лишних if и копирования переменных.
    Для простого примера для samara как раз.
     
  16. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    хм.
    Код (PHP):
    1. if (!empty($_POST['mytext']) && count($_POST['browser']) > 0) { 
    не?
    зачем проверять определена ли $_POST['browser'], потом проверять массив ли это, если потом использовать count, при котором если массива нет или если это не массив работать не будет? Чисто так, для общего образования интересуюсь.
     
  17. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    первый год разработки я тоже так писал в одну строчку, когда сайт по объему был не большим... но... все изменилось когда сайт стал набухать и требовал скорости и ресурсов... ;))
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    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):
    1. if ($form->isValid() 
     
  19. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Код (Text):
    1. if ($form->isValid()
    это уже из обл. ОПП. Так не только в Yii, но и в ZF2...
    и вызов валидации формы в контроллере, еще не говорит о её выводе( рисовании) :)
     
  20. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    но смысл понятен, что есть и другие подходы
     
  21. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    Вы уж меня извиняйте, но:
    создал таблицу:
    Код (Text):
    1. CREATE TABLE tbl(
    2. TEXT TEXT,
    3. browser TEXT
    4. )
    index.php
    Код (Text):
    1. <form method="POST" action="">
    2.     <input type="text" name="mytext"><br>
    3.     <input type="checkbox" name="browser[]" value="ie"><br>
    4.     <input type="checkbox" name="browser[]" value="firefox"><br>
    5.     <input type="submit">
    6. </form>
    action.php
    Код (Text):
    1.  
    2. <?php
    3. include "config.php";
    4. header('Content-Type: text/html; charset=utf-8');
    5.  
    6. echo "<pre>";
    7. var_dump($_POST);
    8. echo "</pre>";
    9.  
    10. function clear($value) {
    11.     return mysql_real_escape_string($value);
    12. }
    13.  
    14. if (empty($_POST['mytext']) === false && isset($_POST['browser']) && is_array($_POST['bro$
    15.  
    16.     $text = mysql_real_escape_string($_POST['mytext']);
    17.     $browser = implode("', '", array_map("clear", $_POST['browser']) );
    18.     $sql = "INSERT INTO tbl VALUES ('$text', '$browser')";
    19.     echo $sql;
    20. } elseif (count($_POST) > 0) {
    21.     echo "Заполните все поля.";
    22. }
    23. ?>
    config.php
    Код (Text):
    1. <?php
    2.   // Код файла config.php
    3.   // Адрес MySQL-сервера
    4.   $dblocation = "localhost";
    5.   // Имя базы данных
    6.   $dbname = "test";
    7.   // Имя пользователя...
    8.   $dbuser = "root";
    9.   // Пароль
    10.   $dbpasswd = "sa";
    11.   // Соединяемся с сервером базы данных - нужно получить соединение
    12.   // по которому мы будем отправлять запросы базе данных и получать
    13.   // ответы (данные или сообщения об успешности выполнения запросов)
    14.   $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
    15.   mysql_query('set names utf8');
    16.   if (!$dbcnx)
    17.   {
    18.     echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное
    19.                        отображение страницы невозможно.</P>" );
    20.     exit();
    21.   }
    22.   // Выбираем базу данных - этой функцией мы сообщаем с какой
    23.   // базой данных мы будем работать, заметте, что вторым
    24.   // параметром мы передаем дискриптор соединения $dbcnx,
    25.   // который вернула функция mysql_connect
    26.   if (! @mysql_select_db($dbname,$dbcnx) )
    27.   {
    28.     echo( "<P>В настоящий момент база данных не доступна, поэтому корректное
    29.                        отображение страницы невозможно.</P>" );
    30.     exit();
    31.   }
    32. ?>
    Данных в базе нет, делаю на ubuntu server, логи не знаю где смотреть...
    подскажите что е так в коде?
     
  22. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    в файле action.php вот это что is_array($_POST['bro$ ?
    И оформляй код в тегах
    Код ( (Unknown Language)):
    1. [b]]Тут код[[/b][b]/code][/b]