Storing Multiple Checkbox Data in MySQL Database with PHP

前端 未结 4 854
-上瘾入骨i
-上瘾入骨i 2021-02-10 05:30

I want to have multiple checkbox values be stored into one field in a database. (Ex. 1, 24,56,100). I am wanting to know how I can make this happen, and how does PHP read thes

相关标签:
4条回答
  • 2021-02-10 05:41

    Even though I am not in favor of saving data like that but here is what you can do, if you really want to do it that way. I suggest you have a denormalized table and store your vals there

    in your HTML you can have your checkboxes like this (considering you are storing ids of some sort)

    <input type="checkbox" name="ids[]" value"1" />
    <input type="checkbox" name="ids[]" value"24" />
    <input type="checkbox" name="ids[]" value"56" />
    <input type="checkbox" name="ids[]" value"100" />
    

    On you php side you can use function implode to form ids into a string as shown below (considering you are doing a POST)

    $ids = implode(",",$_POST["ids"]);
    

    Where you read from the database you can transform the value from db to an array like this

    $ids_array = explode(",",$row->ids);
    

    I hope this helps

    0 讨论(0)
  • 2021-02-10 05:53

    The perfect solution for this is task the creation of normalized table as commented by @OMG and @Michael.

    But here is the answer for what you just asked

    $ids = implode(", ", $_POST['ids']);
    

    Store this in MySQL table. You can use LIKE command to query the table and use the explode to get back the ids in array.

    $query = "SELECT * FROM <table> WHERE ids LIKE '%,2, %'"; // get posts having id 2
    
    $id = explode(", ", $result->ids);
    
    0 讨论(0)
  • 2021-02-10 05:57

    first create database:

    create table employee(id int(10) not null, name varchar(20), hobbie varchar(20),
         worked varchar(20), primary key(id));
    

    after that create an html page like that:

       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1    /DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Untitled Document</title>
     </head>
    
     <body>
     <body background="blue">
     <form action="check.php" method="post">
     Name: <input name="Name" type="text" id="Name" /><br />
    <br />
      <br />
       Which you do you want to likes?<br />
             <input type="checkbox" name="Hobbies[]" value="Books" />Books<br />
        <input type="checkbox" name="Hobbies[]" value="Movies" />Movies<br />
       <input type="checkbox" name="Hobbies[]" value="Sports" />Sports<br />
      <input type="checkbox" name="Hobbies[]" value="Games" />Games<br />
      <input type="checkbox" name="Hobbies[]" value="Travelling" />Travelling<br />  
    
      worked: <input name="Worked" type="text" id="Worked" /><br />
       <br />
    
    <input type="submit" name="submit" value="Submit" />
    <input type="reset" name="reset" value="reset" />
    
     </form>
      </body>
     </html>
    

    after that we have do mysql connect.php

     <?php
     $server="localhost";
     $user="root";
     $password="";
     $database="empcheckbox";
    
     $link=mysql_connect($server,$user,$password) or die("the connection is terminated please      check me!".mysql_error());
    mysql_select_db($database,$link);
     ?>
    

    after that we have to create an check.php like that ok

    <?php
    
    if(isset($_POST['submit']))
    {
     $name=mysql_real_escape_string($_POST['Name']);
    $worked=mysql_real_escape_string($_POST['Worked']);
    $hobb= $_POST['Hobbies'];
    if(empty($hobb)) 
        {
            echo("<p>You didn't select any any hobby.</p>\n");
        } 
        else 
        {
           $N = count($hobb);
            echo("<p>You selected $N Hobbies(s): ");
            for($i=0; $i < $N; $i++)
            {
                $var1=$hobb[$i];
                include ('connect.php');
                $table = "INSERT INTO employee (name, hobbies, worked) ".
                         "VALUES ('$name', '$var1', '$worked')";
                mysql_query($table) or die(mysql_error());
                $inserted_fid = mysql_insert_id();
                mysql_close();  
            }
    
            echo "successfully uploaded!..";
          }
    }
    else
     {
    echo "error please check ur code";
    }
    
    0 讨论(0)
  • 2021-02-10 06:00

    You're going to want to go through the basics of PHP and MySQL.

    Check out tizag.com or w3schools.com, or some other sites (the tutorials are plentiful).

    Here's the basics though--and remember this, as it'll help you in your understanding.

    MySQL is a database. A database is typically used for storing data. PHP is a programming language. It's typically used for programming.

    So, some wonderful developers out there have already taken care of the steps for talking to the database from PHP. All you have to do is establish a connection.

    <?php
        $con = mysql_connect("localhost","peter","abc123");
        if (!$con) {
            die('Could not connect: ' . mysql_error());
        } else { echo "Connection made"; }
    ?>
    

    See mysql_connect via W3Schools

    Okay, so what you have done here, is you've connected to the database SERVER. You haven't selected a database yet. Think of it like going to a movie theater, you still have to pick a movie to watch.

    So, now we connect to our database:

        mysql_select_db("my_db", $con); //Notice we're using our connection, "$con"
    

    See mysql_select_db via W3Schools

    Once you've connected to your database, you're ready to grab some information from it.
    To do this, you need to create your SQL query.

    Something to the tune of:

    $sql = "SELECT article_id FROM user_view_blog_posts WHERE user_id = '$user_id'";
    

    See the SELECT statement via W3Schools

    Depending on how your table is set up, that will get you the list for the current user. I'm assuming that you already have the user's id (or a way to get it), since they have the ability to define their own preferences for the site.

    Now that you have the SQL query to get the articles, you need to query the database.

    $result = mysql_query($sql);
    // Now, get the data
    while($row = mysql_fetch_array($result)) {
        $articles[] = $row['article_id'];
    }
    

    That should get you your list of ID's that you need.

    I'll let you figure out the rest. It's pretty straight-forward, and you've got all of the tools that you need now. The only thing you might want to brush up on is explode and foreach.

    So, the way you store them is up to you. Look into explode for splitting them up when they're stored that way.

    0 讨论(0)
提交回复
热议问题