刷新页面创建的空行

时间:2014-03-25 19:16:23

标签: php html mysql forms

我已经在互联网上搜索了我的答案,但我找不到有用的答案。我有一个名为“post.php'使用表单我可以添加图像并将其提交到数据库。

最大的问题是,当我访问mysite.com/post.php时,会在数据库中自动创建一个新的空行,我显然不想要。我只想在单击提交按钮后更新数据库我的代码:

INSERT的一部分:

<?php
// POST.PHP POSTING NEW CONTENT
include 'config.php';
                            // values from form
                            $id=$_POST['id'];
                            $title=$_POST['title'];
                            $pic=$_POST['pic'];
                            $youtube=$_POST['youtube'];
                            $cat=$_POST['cat'];


                            // insert data to mysql
                            $sql = "INSERT INTO post(id, title, pic, youtube, cat)VALUES('$id', '$title', '$pic', '$youtube', '$cat')";
                            $result=mysql_query($sql);


                            // succes added
                            if(!$result){

                            echo "Something went wrong!";
                            }

                            else {
                            echo "Yeah, buddy! Your content is added.";
                            }
                            // end of post script ^^
?> 

//插入结束     

        //POST IMAGE PAGE
        if(isset($_GET['pic'])) { 
        ?>

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    title: <input name="title" type="text" id="title"><br />

   Add url of image;<br />
    <input type="text" name="pic" id="pic"/><br />
    <?php
    echo '
    Category game: 
     <select name="cat"> ';


     $query2 = mysql_query("SELECT * FROM `category`");
      while($row=mysql_fetch_array($query2)){ 
echo '
       <option value="'.$row["nameID"].'">'.$row["name"].'</option> ';
        } 
    ?>

     </select>
    <input type="submit" onclick="this.disabled = true" name="submit" value="submit">
   </form> 
   <?php
   // end script of posting picture
  }

 ?>

3 个答案:

答案 0 :(得分:1)

您需要在插入数据库的部分周围添加一些条件代码,检查是否已收到任何值(if($myvar){ // do stuff })。

添加其余的代码,特别是将数据添加到数据库的部分,因为这会导致问题,而不是您发布的代码。

答案 1 :(得分:0)

检查是否已在处理数据库输入的文件上设置了帖子。

    if(isset($_POST['pic'])){
//do something
}

else{ // handle the exeption} 

此外,您不应再使用mysql_ *函数。他们是不安全的,并且不赞成使用PHP 5.5

答案 2 :(得分:0)

您需要将整个数据库插入代码块包装在if语句中。这样,在表单提交并且$ _POST ['submit']具有值之前,它不会执行:

include 'config.php';
if (isset($_POST['submit'])){
    // values from form
    $id=$_POST['id'];

    // etc... code stays the same down to:
    echo "Yeah, buddy! Your content is added.";
    }
}//end if (don't forget to add this last bracket)

此外,您应该切换到mysqliPDO,然后使用parameterized queries。否则,您的站点可以通过SQL注入进行各种各样的粗暴攻击。切换并不困难,非常非常重要。