无法使用PHP表单编辑表中的数据

时间:2015-08-03 12:47:11

标签: php mysql forms

请查看此代码无法找出实际错误:

这是PHP上传代码:

<?php
            include_once("config.php");
            if(isset($_GET['pro_id']))
            {
            $id=$_GET['pro_id'];
            if(isset($_POST['submitBtn']))          {
            $dept_id = $_POST['dept_id'];
            $cat_id = $_POST['cat_id'];
            /*$pro_id = $_POST['pro_id'];*/
            $pro_name = $_POST['pro_name'];
            $pro_desc = $_POST['pro_desc'];
            $pro_spec = $_POST['pro_spec'];
            $pro_price = $_POST['pro_price'];
            $status = 'on';
            $pro_keywords = $_POST['pro_keywords'];
            //image names
            $pro_image = $_FILES['pro_image']['name'];
            //temp images names
            $temp_image = $_FILES['pro_image']['tmp_name'];

            if($dept_id=='' OR $cat_id=='' OR $pro_name=='' OR $pro_desc=='' OR $pro_spec=='' OR $pro_price=='' OR  $pro_image=='' OR $pro_keywords=='')
                    {
            echo "<script>alert('All the fields are mandatory')</script>";
            exit();
                    }
            else
            {
            //upload image to folder
            move_uploaded_file($temp_image,"images/product_images/$pro_image");
            $run_query1 = mysqli_query($login, "update products1 SET (dept_id,cat_id,pro_name,pro_desc,pro_spec,pro_price,pro_image,status,date,pro_keywords) values (  '$dept_id','$cat_id','$pro_name','$pro_desc','$pro_spec','$pro_price','$pro_image','$status','NOW()','$pro_keywords' WHERE pro_id='$id'");

            if($run_query1)
                    {
                echo "<script>alert('Product updated successfully')</script>";
                exit();     
                    }
            else
                {
                echo "<script>alert('Errors')</script>";
                }
            }           }

            $query1 = mysqli_query($login, "select * from products1 where pro_id='$id'");
            $query2 = mysqli_fetch_array($query1);
            ?>

这是表格从表中检索数据的部分,当点击更新按钮时没有发生任何事情,页面被重定向到查看数据页面并显示旧数据:

<form action="ViewProduct.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
            <table width="650" border="0">

            <tr>
                <td width="183" align="right">Department:</td>
                <th width="231" align="left">
                <select name="dept_id" id="dept_id">
                    <option>Select Department</option>
                 <?php
                $result=dept_show();

                while($row=mysqli_fetch_assoc($result))
                {
                    echo "<option value='{$row['dept_id']}'>{$row['dept_name']}</option>";
                }                    
                ?>
                </select></th></tr>
              <tr>
                <td width="183" align="right">Catagory</td>
                <th width="231" align="left">
                <select name="cat_id" id="cat_id">
                    <option>Select Catagory</option>
                <?php
                $result1=cat_show();

                while($row=mysqli_fetch_assoc($result1))
                {
                    echo "<option value='{$row['cat_id']}'>{$row['cat_name']}</option>";
                }                    
                ?>
                </select></th></tr>
              <tr>
                <!--<td width="231"><input type="hidden" name="pro_id" id="pro_id" value="<t?php echo $pro_id; ?>" /></td>-->
              </tr>
              <tr>
                <td align="right">Product Name/Model:</td>
                <td><input type="text" name="pro_name" id="pro_name" value="<?php echo $query2['pro_name']; ?>" /></td>
              </tr>
              <tr>
                <td align="right">Product Description:</td>
                <td><textarea type="textarea" name="pro_desc" id="pro_desc" cols="45" rows="5"><?php echo $query2['pro_desc']; ?></textarea></td>
              </tr>
              <tr>
                <td align="right">Products Specification:</td>
                <td><textarea type="textarea" name="pro_spec" id="pro_spec" cols="45" rows="5"><?php echo $query2['pro_spec']; ?></textarea></td>
              </tr>
              <tr>
                <td align="right">Product Price:</td>
                <td><input type="text" name="pro_price" id="pro_price" value="<?php echo $query2['pro_price']; ?>" /></td>
              </tr>
              <tr>
                <td align="right">Product Image:</td>
                <td><input type="file" name="pro_image" id="pro_image" value="<?php echo $query2['pro_image']; ?>" /></td>
                </tr>
                <tr>
                <td></td>
                <td><input size="45" type="text" name="text" id="text" value="<?php echo $query2['pro_image']; ?>" /></td>
              </tr>
              <tr>
                <td align="right">Keywords:</td>
                <td><input size="45" type="text" name="pro_keywords" id="pro_keywords" value="<?php echo $query2['pro_keywords']; ?>" /></td>
              </tr>
              <tr>
                <td colspan="2" align="center"><input type="submit" name="submitBtn" id="submit" value="Update" /></td>
              </tr>
            </table>
          </form>
            </div> <?php } ?>
        </td>
        </tr>
    </table>
  </div>

4 个答案:

答案 0 :(得分:2)

表单方法是POST,你在if循环中使用GET方法

if(isset($_GET['pro_id']))

在这里使用POST。

我已经完成了对您完整代码的修改。使用此代码,如果需要,进行更改(如果问题到达)

PHP代码

<?php
        include_once("config.php");

        if(isset($_POST['submitBtn']))          
        {
        $dept_id = $_POST['dept_id'];
        $cat_id = $_POST['cat_id'];
        $pro_id = $_POST['pro_id'];*/
        $pro_name = $_POST['pro_name'];
        $pro_desc = $_POST['pro_desc'];
        $pro_spec = $_POST['pro_spec'];
        $pro_price = $_POST['pro_price'];
        $status = 'on';
        $pro_keywords = $_POST['pro_keywords'];
        //image names
        $pro_image = $_FILES['pro_image']['name'];
        //temp images names
        $temp_image = $_FILES['pro_image']['tmp_name'];

        if($dept_id=='' OR $cat_id=='' OR $pro_name=='' OR $pro_desc=='' OR $pro_spec=='' OR $pro_price=='' OR  $pro_image=='' OR $pro_keywords=='')
                {
        echo "<script>alert('All the fields are mandatory')</script>";
        exit();
                }
        else
        {
        //upload image to folder
        move_uploaded_file($temp_image,"images/product_images/$pro_image");
        $run_query1 = mysqli_query($login, "update products1 SET (dept_id,cat_id,pro_name,pro_desc,pro_spec,pro_price,pro_image,status,date,pro_keywords) values (  '$dept_id','$cat_id','$pro_name','$pro_desc','$pro_spec','$pro_price','$pro_image','$status','NOW()','$pro_keywords' WHERE pro_id='$id'");

        if($run_query1)
                {
            echo "<script>alert('Product updated successfully')</script>";
            exit();     
                }
        else
            {
            echo "<script>alert('Errors')</script>";
            }
        }     
    }

        $query2 = array();
        if(isset($_GET['pro_id']))
        {
            $id=$_GET['pro_id'];
            $query1 = mysqli_query($login, "select * from products1 where pro_id='$id'");
            $query2 = mysqli_fetch_array($query1);
        }            
        ?>

HTML代码

<form action="ViewProduct.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
        <table width="650" border="0">

        <tr>
            <td width="183" align="right">Department:</td>
            <th width="231" align="left">
            <select name="dept_id" id="dept_id">
                <option>Select Department</option>
             <?php
            $result=dept_show();

            while($row=mysqli_fetch_assoc($result))
            {
                echo "<option value='{$row['dept_id']}'>{$row['dept_name']}</option>";
            }                    
            ?>
            </select></th></tr>
          <tr>
            <td width="183" align="right">Catagory</td>
            <th width="231" align="left">
            <select name="cat_id" id="cat_id">
                <option>Select Catagory</option>
            <?php
            $result1=cat_show();

            while($row=mysqli_fetch_assoc($result1))
            {
                echo "<option value='{$row['cat_id']}'>{$row['cat_name']}</option>";
            }                    
            ?>
            </select></th></tr>
          <tr>
            <td width="231"><input type="hidden" name="pro_id" id="pro_id" value="<t?php echo $pro_id; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Product Name/Model:</td>
            <td><input type="text" name="pro_name" id="pro_name" value="<?php echo $query2['pro_name']; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Product Description:</td>
            <td><textarea type="textarea" name="pro_desc" id="pro_desc" cols="45" rows="5"><?php echo $query2['pro_desc']; ?></textarea></td>
          </tr>
          <tr>
            <td align="right">Products Specification:</td>
            <td><textarea type="textarea" name="pro_spec" id="pro_spec" cols="45" rows="5"><?php echo $query2['pro_spec']; ?></textarea></td>
          </tr>
          <tr>
            <td align="right">Product Price:</td>
            <td><input type="text" name="pro_price" id="pro_price" value="<?php echo $query2['pro_price']; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Product Image:</td>
            <td><input type="file" name="pro_image" id="pro_image" value="<?php echo $query2['pro_image']; ?>" /></td>
            </tr>
            <tr>
            <td></td>
            <td><input size="45" type="text" name="text" id="text" value="<?php echo $query2['pro_image']; ?>" /></td>
          </tr>
          <tr>
            <td align="right">Keywords:</td>
            <td><input size="45" type="text" name="pro_keywords" id="pro_keywords" value="<?php echo $query2['pro_keywords']; ?>" /></td>
          </tr>
          <tr>
            <td colspan="2" align="center"><input type="submit" name="submitBtn" id="submit" value="Update" /></td>
          </tr>
        </table>
      </form>
        </div> <?php } ?>
    </td>
    </tr>
</table>

答案 1 :(得分:1)

您的pro_id字段已在您的HTML中使用<!---->进行了注释,因此以下情况永远不会成立:

if(isset($_GET['pro_id']))

此外,您正在寻找的表单方法POST和$ _GET之间存在不匹配。

答案 2 :(得分:1)

您对更新的查询是否正确?我认为你必须使用

UPDATE products1 SET dept_id='$dept_id',cat_id ='$cat_id'... the rest of values
WHERE pro_id='$id'

并验证您的dept_id是否为INT以及cat_id,因此如果它们是INT,则您不需要&#39;&#39;

UPDATE products1 SET dept_id=$dept_id,cat_id =$cat_id

答案 3 :(得分:0)

尝试执行以下步骤:

首先要注意这一行,

<!--<td width="231"><input type="hidden" name="pro_id" id="pro_id" value="<t?php echo $pro_id; ?>" /></td>-->   

下一步, 您正在使用POST发送数据,即(表单方法=&#34;发布&#34;),因此请使用此

if(isset($_POST['pro_id'])) , then comment out $pro_id = $_POST['pro_id']; 

你将获得$ pro_id值。