单击按钮时插入数据库

时间:2014-05-20 15:06:29

标签: php html mysql sql

我目前以表格格式显示表格产品中的所有信息,我有一个按钮ADD,点击时应该只将表格产品的ID,名称和价格添加到同一数据库中的表product_add。但我的问题是当我点击按钮ADD时,在product_add表中没有输入任何内容。

  <?php

   include'connect.php';

   $image =$_GET['image'];
   $id =$_GET['id'];
   $name =$_GET['name'];
   $price=$_GET['price'];

   $sql="SELECT * FROM product";
   $result = mysql_query($sql);
   if($result>0)
   {

?>

<form method="post" id="form" name="form">
   <table border='1'>

<?php

   while ($row = mysql_fetch_array($result))
   {
      extract($row);

?>                   

      <tr>
         <td><?php echo $row['id']?></td>
         <td><img src=<?php echo $row['image'] ?> /></td>
         <td><?php echo $row['name']?></td>
         <td><?php  echo $row['price']?></td>
         <td><input type='button' value='ADD' id="insert" name="insert"/></td>
      </tr>

<?php

   }

?>

   </table>
</form>

<?php

   }

   if(isset($_REQUEST['insert']))
   {
      $insert = "INSERT INTO product_add(id, name, price) 
                  VALUES  ('$row[id]','$row['name']','$row['price']')";
      $insertQuery=mysql_query($insert);
   }
?>

</body>
</html>

我已更新了如下所示的代码,但表格产品的最后一行正在添加到表product_add中。当我点击提交按钮时,我想只添加一个特定的行。

    <?php
    include'connect.php';

   $image = isset($_GET['image']) ? $_GET['image'] : "";
   $id = isset($_GET['id']) ? $_GET['id'] : "";
   $name = isset($_GET['name']) ? $_GET['name'] : "";
   $price= isset($_GET['price']) ? $_GET['price'] : "";


   $sql="SELECT * FROM product";
   $result = mysql_query($sql);
    if($result>0){
     ?>
    <form method="POST" id="form" name="form">
<table border='1'>
<tr>
<th>Id</th>
<th>Image</th>
<th>Name</th>
<th>Price MUR</th>
</tr>
    <?php

 while ($row = mysql_fetch_array($result)){
    extract($row);

  ?>                     

    <tr>
    <td><input name="id" value="<?php echo htmlspecialchars($row['id']); ?>">
            </td>
    <td><img src=<?php echo $row['image'] ?>  width='120' height='100'/></td>
    <td><input name="name" value="<?php echo htmlspecialchars($row['name']); 
             ?>"></td>
    <td><input name="price" value="<?php echo htmlspecialchars($row['price']);
               ?>"></td>
    <td>
      <input id="submit" type="submit" name="submit" value='Add to cart' />
    </td>
    </tr>
             <?php
         }
               ?>   
       </table>
          </form>
            <?php
           }

            if (isset($_REQUEST['submit']))
             {
            $insert = "INSERT INTO product_add(id, name, price) VALUES ('$id', 
             '$name','$price')";
             $insertQuery=mysql_query($insert);
               }
                ?>

3 个答案:

答案 0 :(得分:1)

除了方法(如果你的表单使用POST,你应该在php中使用$_POST),你没有任何表单字段。

例如:

<?php echo $row['id']?>

应该是这样的:

<input type="hidden" name="id" value="<?php echo $row['id']; ?>">

<?php echo $row['name']?>

应该是:

<input name="name" value="<?php echo htmlspecialchars($row['name']); ?>">

你也应该切换到PDO或mysqli和准备好的语句,因为你现在的代码很容易被sql注入。而html中的ID必须是唯一的。

答案 1 :(得分:1)

有一点是,你有多个

<input type='button' ...>

具有相同的id="insert"id在网页中必须是唯一的。

另一方面,您需要submit输入来发送表单

<input type="submit" ...>

来自Submit Button state (type=submit)

  

input元素表示一个按钮,激活后,提交表单。

<input type='button' ...>没有任何反应,因为它没有默认操作,请参阅Button state (type=button)

  

input元素表示没有默认行为的按钮。

如果您希望<input type='button' ...>提交表单,则必须使用一些Javascript代码。

答案 2 :(得分:0)

一个想法是在单击按钮后加载内容。

<强> JS

$("#button").click(function() {
 $("#holder").load("insert.php"); 
});

<强> insert.php

$db->query("INSERT INTO table VALUES('one','two','three')");