2013-04-24 38 views
-2

我正在创建一个表单,它在提交时会将带有_POST属性的行插入表'bestofbc'中。我无法正常工作......似乎表单试图提交一个空的表单,而没有先检查它是否已经提交。将行插入到表中的函数SQL

function displayInsertAttractionForm() { 



    echo "<fieldset> 

      <legend>Options</legend> 

      <form method='post'> 
      <input type='button' onClick='show()' name='showbutton' value='Add Attraction!' /> 
      </form> 
       <div id='form1' name='form1' style='display:none;'> 
        <h1>Add Attraction</h1> 
         <form> 
          <table> 
           <tr><td>Name</td><td><input type='text' name='attraction' /></td></tr>       
           <tr><td>Star Rating</td><td> 
            <select name='rating'> 
             <option>*</option> 
             <option>**</option> 
             <option>***</option> 
             <option>****</option> 
             <option>*****</option> 
           </td></tr> 
           <tr><td>Price</td><td><select name='price'> 
             <option>$</option> 
             <option>$$</option> 
             <option>$$$</option> 
             <option>$$$$</option> 
             <option>$$$$$</option> 
           </td></tr> 
           <tr><td>Category</td><td><input type='text' name='category' /></td></tr> 
           <tr><td>Address</td><td><input type='text' name='address' /></td></tr> 
           <tr><td>Phone</td><td><input type='text' name='phone' /></td></tr> 
           <tr><td>URL</td><td><input type='text' name='url' /></td></tr> 
           <tr><td>User ID</td><td><input type='text' name='user' /></td></tr> 
           <tr><td>Comments</td><td><textarea name='comments'></textarea></td></tr> 
          </table> 
          <input type='submit' name='addattraction' value='Submit Attraction' /> 

         </form> 
       </div> 
      <hr /> 
      <form method='get'> 
       <input type='text' name='searchtxt' /> 
       <input type='submit' value='Search!' /> 
      </form> 

      </fieldset>"; 

      $dbc=connectToDB(); 

      $name = $_POST['attraction']; 
      $category = $_POST['category']; 
      $enteredBy = $_POST['user']; 
      $address = $_POST['address']; 
      $phone = $_POST['phone']; 
      $url = $_POST['url']; 
      $stars = $_POST['rating']; 
      $priceRange = $_POST['price']; 
      $comments = $_POST['comments']; 

      $query = "INSERT INTO bestofbc (insertion_date, entered_by, name, category, address, phone, url, stars, price_range, comment) 
         VALUES (Now(), $enteredBy', '$name', '$category', '$address', '$phone', '$url', '$stars', '$priceRange', '$comments')"; 

      $result = performQuery($dbc, $query); 
+0

检查$ _POST是否有任何值。 – karmafunk 2013-04-24 14:59:06

+0

然后你应该把显示和插入功能放到一个功能中。 – mario 2013-04-24 14:59:21

+0

[如何阻止PHP添加空白行/字段到MYSQL数据库]可能的重复(http://stackoverflow.com/questions/7482566/how-to-stop-php-from-adding-blank-row-fields -to-the-mysql-database) – mario 2013-04-24 15:01:03

回答

1

你只需要检查表单是否使用

if(isset($_POST['submit'])) 
{ 
//Code after form submission 
} 
0

形式的默认行为是GET,在你的PHP使用了$ _ POST提交。

表单标签更改为:

<form method="post"> 

你也可以在你的PHP使用$ _GET但我不会建议,因为它是不好的做法。

我也注意到你没有在你的表单标签中有一个动作,通常你应该把你提交的文件的名字放在那里。

0

看来你有两种形式,然后在同一个函数中的$ _POST,在同一个文件中。

你应该在一个文件中有formFile.php。

然后当它与

<form action='processFile.php' method="post"... 

那里processFile.php贴出你需要$ _ POST阅读的变量。这样你可以避免任何混淆,并且你确定你在读什么。