2015-07-20 62 views
0

下面显示了我的表单,其中显示产品和圆圈作为复选框,我需要做的是将此复选框值存储在数据库中。数据没有被存储在数据库中用于在php中选择多个复选框

1#myForm的文件名= checkbox1.php

      <!DOCTYPE html> 
          <!-- 
          To change this license header, choose License Headers in Project Properties. 
          To change this template file, choose Tools | Templates 
          and open the template in the editor. 
          --> 




          <html> 
           <head> 
            <meta charset="UTF-8"> 
            <title></title> 
           </head> 
           <body> 
            <form name="pdt_circle" method="GET" action="store.php"> 
             <?php 
             $conn = mysqli_connect("localhost", "root", "", "demo"); 
             if (mysqli_errno($conn)) { 
              echo 'database error' . mysqli_errno($conn); 
             } else { 
              $query = "select * from demo1"; 
              $result = mysqli_query($conn, $query); 
              if ($result) { 
               echo '<table>'; 
               echo '<tr><th>Select</th><th>Product</th><th>Circle</th></tr>'; 
               while ($row = mysqli_fetch_assoc($result)) { 
                echo '<tr><td>'; 
                echo "<input type=\"checkbox\" name=\"product[]\" id=\"product[]\" value=\"" . $row['Product'] . "\" ></td><td> " . $row['Product']; 
                echo '</td>'; 
                echo '<td>'; 
                echo "<input type=\"checkbox\" name=\"circle[]\" id=\"circle[]\" value=\"" . $row['Circle'] . "\" ></td><td>" . $row['Circle']; 
                echo '</td>'; 
                echo '</tr>'; 
               } 
               echo '</table>'; 
              } 
             } 
             ?> 
             <input type="submit" value="submit" name="sub" ><br>     

            </form> 

           </body> 
          </html> 

我也创建命名为store.php数据库文件。当我在点击提交不显示任何错误。但值不是存储在数据库中的。

2#store.php(数据库文件)

        <?php 

            $conn = mysqli_connect("localhost", "root", "", "demo"); 
            if (mysqli_errno($conn)) { 
             echo 'Database error'; 
            } else { 
             echo 'i n else'; 

             if (isset($_GET['circle']) and isset($_GET['product'])) { 
              if (is_array($_GET['circle']) and is_array('product')) { 
               $count = count($_GET['checkbox']); 


               foreach ($_GET['product'] as $pdt) { { 
                 echo ''; 
                 $query1 = "insert into demo2 (Product) values ('$pdt')"; 
                 mysqli_query($conn, $query1); 
                } 
                foreach ($_GET['circle'] as $cir) { { 
                  echo $cir; 
                  $query = "insert into demo3 (Circle) values ('$cir')"; 
                  mysqli_query($conn, $query); 
                 } 
                 mysqli_close($conn); 
                } 
               } 
              } 
             } 
            } 
            ?> 

3#sqlfiles写成下面

-- 
       -- Database: `demo` 
       -- 

       -- -------------------------------------------------------- 

       -- 
       -- Table structure for table `demo1` 
       -- 

       CREATE TABLE IF NOT EXISTS `demo1` (
        `id` int(5) NOT NULL AUTO_INCREMENT, 
        `Product` varchar(25) NOT NULL, 
        `Circle` varchar(25) NOT NULL, 
        PRIMARY KEY (`id`), 
        UNIQUE KEY `id` (`id`) 
       ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; 

       -- 
       -- Dumping data for table `demo1` 
       -- 

       INSERT INTO `demo1` (`id`, `Product`, `Circle`) VALUES 
       (3, 'hello', 'surat'), 
       (4, 'callertune', 'ahmd'), 
       (5, 'hello', 'guj'), 
       (6, 'callertune', 'mp'), 
       (7, '3g', 'rajasthan'), 
       (8, 'data', 'mumbai'), 
       (9, 'callme', 'kolkata'), 
       (10, 'airtel_123', 'JK'); 

       /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
       /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
       /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

SQL2:表名= DEMO2

-- 
          -- Database: `demo` 
          -- 

          -- -------------------------------------------------------- 

          -- 
          -- Table structure for table `demo2` 
          -- 

          CREATE TABLE IF NOT EXISTS `demo2` (
           `id` int(5) NOT NULL AUTO_INCREMENT, 
           `Product` varchar(25) NOT NULL, 
           PRIMARY KEY (`id`), 
           UNIQUE KEY `id` (`id`) 
          ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

          /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
          /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
          /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

3#表名:demo3

         -- 
             -- Database: `demo` 
             -- 

             -- -------------------------------------------------------- 

             -- 
             -- Table structure for table `demo3` 
             -- 

             CREATE TABLE IF NOT EXISTS `demo3` (
              `id` int(5) NOT NULL AUTO_INCREMENT, 
              `Circle` varchar(25) NOT NULL, 
              PRIMARY KEY (`id`) 
             ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 

             /*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; 
             /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; 
             /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

链接形式怎么看起来像: https://drive.google.com/file/d/0B1rpCWtUcfePM3hVZEpHLXByeW8/view?usp=sharing

+0

您在您的html中使用具有相同值的多个id:circle [] –

+0

请您详细说明@ Erwin Moller谢谢提前 – yogi

+0

id不是多个@ Erwin Moller – yogi

回答

0

几个要点:

checkbox1.php < - 包含多个ID = “圈子[]” 这是无效的(但不是造成您的问题)。

另外,为什么不使用POST而不是GET?

store.php 当您调试,始终与显示数据的发布开始,这样你就可以检查你的工作是什么,就像这样:

echo "<pre>"; 
print_r($_GET); 
echo "<pre>"; 
exit; 

删除此检查:

if (is_array($_GET['circle']) and is_array('product')) { 

你知道它什么时候被设置,那必须是一个数组。

此外,我认为你并不是要检查'产品'是否是一个数组。我希望你想检查$ _GET ['product']。

请看下面的代码,它被清理一点点:

$conn = mysqli_connect("localhost", "root", "", "demo"); 
if (mysqli_errno($conn)) { 
     echo 'Database error'; 
} else { 
    $postedCircles = (isset($_GET['circle']))?$_GET['circle']:array(); 
    $postedProducts = (isset($_GET['product']))?$_GET['product']:array(); 
    foreach ($postedCircles as $cir) { 
     // You are totally vuerable to SQL injection here, don't do it like this 
     $query = "insert into demo3 (Circle) values ('".$cir."')"; 
     echo $query; 
     mysqli_query($conn, $query); 
    } 

    foreach ($postedProducts as $pdt) { 
     // You are totally vuerable to SQL injection here, don't do it like this 
     $query = "insert into demo2 (Product) values ('".$pdt."')"; 
     echo $query; 
     mysqli_query($conn, $query); 
    } 

    mysqli_close($conn); 
} 

它会产生什么输出? 这是合法查询吗?你可以通过手动运行他们对MySQL吗?

最后,请不要在您的查询中使用来自客户端的原始值。 以这种方式插入不需要的SQL非常容易(查询:SQL注入)

+0

谢谢@ Erwin Moller它工作得很好。但我不明白为什么它不工作之前 – yogi

+0

只是删除检查is_array它正在工作? – yogi