За последние 24 часа нас посетили 22609 программистов и 1150 роботов. Сейчас ищут 590 программистов ...

Запись значений checkbox(true false) в бд MySql

Тема в разделе "PHP и базы данных", создана пользователем sega174, 9 мар 2018.

Метки:
  1. sega174

    sega174 Новичок

    С нами с:
    22 ноя 2015
    Сообщения:
    12
    Симпатии:
    0
    Здравствуйте, необходимо записать в БД значение выбран ли checkbox или нет,у меня почему то записывается 0 в не зависимости выбран checkbox или нет если тип поля TINYINT, и если тип поля BIT то 1 в не зависимости выбран или нет.В чем ошибка? не правильно выбран тип поля? или ошибка в коде?
    PHP:
    1. <?php
    2.  
    3.  
    4.  
    5. if(!$_POST) exit;
    6.  
    7.     if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
    8.  
    9.     $host="localhost";
    10.     $user="root";
    11.     $pass="root"; //установленный вами пароль
    12.     $db_name="u997029462_bo";
    13.  
    14.     $link=mysqli_connect($host,$user,$pass);
    15.     mysqli_select_db($link,$db_name);
    16.     print_r($_POST);
    17.     $firstName        = $_POST['firstName'];
    18.     $lastName        = $_POST['lastName'];
    19.     $textarea1        = $_POST['textarea1'];
    20.     $ratEvent        = $_POST['ratEvent'];
    21.     $ratCom            = $_POST['ratCom'];
    22.     $ratingProg        = $_POST['ratingProg'];
    23.     $ratingPart        = $_POST['ratingPart'];
    24.     $ratingDisk        = $_POST['ratingDisk'];
    25.     $newprice_ch    = $_POST['checkPub'];
    26.     $resp            = $_POST['resp'];
    27.     $status            = $_POST['status'];
    28.  
    29.  
    30.  
    31.     if (isset($_POST["firstName"])||isset($_POST["lastName"])||isset($_POST["textarea1"])||isset($_POST["ratEvent"])||isset($_POST["ratCom"])||isset($_POST["ratingProg"])||isset($_POST["ratingPart"])||isset($_POST["ratingDisk"])||isset($_POST["checkPub"])||isset($_POST["resp"])||isset($_POST["status"]))
    32.     {
    33.     //Вставляем данные, подставляя их в запрос
    34.  
    35.         $date = date('Y/m/d H:i:s');
    36.         $sql = "INSERT INTO `comment` (`Name`,`surname`, `status`,`comment`, `EventRating`,`OrganizationalCommitteeRating`,`ProgramRatingOfTheEvent`, `RatingOfPartners`,`DiscothequeRating`,`Publication`,`Photo`,`Date`) VALUES ('$firstName','$lastName','$status','$textarea1','$ratEvent','$ratCom','$ratingProg','$ratingPart','$ratingDisk','$newprice_ch','$resp','$date')";
    37.     $query = mysqli_query($link,$sql);
    38.     //Если вставка прошла успешно
    39.     if ($query) {
    40.         echo $query;
    41.     } else {
    42.         echo $query;
    43.     }
    44. }
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    int достаточно
    --- Добавлено ---
    https://site-do.ru/db/sql2.php
    --- Добавлено ---
    как ложка по метеориту...:confused:

    PHP:
    1. <?php
    2.  
    3. if ( $_SERVER['REQUEST_METHOD'] === 'POST' )
    4. {
    5.     ...
    6. }
    --- Добавлено ---
    вообще печалька прям...
    PHP:
    1. $link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
    --- Добавлено ---
    а как много то их и все не верно :rolleyes:
    употребим яд, а потом проверим безопасно ли ?
    --- Добавлено ---
    ну если ты не боишься хацкеров, то продолжай...
    --- Добавлено ---
    Убило... (
    кто там юзает старпера старперов ?
     
  3. sega174

    sega174 Новичок

    С нами с:
    22 ноя 2015
    Сообщения:
    12
    Симпатии:
    0
    изменив на int все равно записывается нуль в независимости пришло true ил false
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    присылай 1 или 0
     
    sega174 нравится это.
  5. sega174

    sega174 Новичок

    С нами с:
    22 ноя 2015
    Сообщения:
    12
    Симпатии:
    0
    а как исправить ошибки которые вы указали?
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Желательно молча. Вам что даже это непонятно: «употребим яд, а потом проверим безопасно ли»?

    И что вы вообще творите? Насколько помню, неустановленные чекбоксы вообще не отражаются во входящих параметрах. Это кстати, дает отличный шанс наплевать на собственно значение и не проверять его. Есть параметр, устанавливаем значение, иначе сбрасываем. Для хранения значения достаточно одного бита, т.е. вы всего лишь в байте можете хранить значения 8 флагов (чекбоксов). Пример:
    PHP:
    1.   $val=0;
    2.   for ($i=8;$i>0;$i--)
    3.   {
    4.     $val<<=1;
    5.     if (isset($_POST['i'.$i])) $val|=1;
    6.   }
     
    #6 miketomlin, 9 мар 2018
    Последнее редактирование: 9 мар 2018