2013-04-24 2 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

+0

Затем вы должны поместить отображение и вставку в одну функцию. – mario

+0

Возможный дубликат [Как остановить PHP от добавления пустой строки/полей в базу данных MYSQL] (http://stackoverflow.com/questions/7482566/how-to-stop-php-from-adding-blank-row-fields -to-the-mysql-database) – mario

ответ

1

вы просто должны проверить, была ли форма представлена ​​с использованием

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

поведение по умолчанию в форме GET, в вашем PHP вы используете $ _POST.

Изменение форм-тег:

<form method="post"> 

Вы также можете использовать $ _GET в вашем PHP, но я бы не рекомендовал, что, так как это плохая практика.

Я также заметил, что у вас нет действия в тэге формы, обычно вы должны указать имя файла, который вы отправляете туда.

0

Кажется, что у вас есть как форма, так и $ _POST в той же функции, в том же файле.

Вы должны иметь форму в одном файле, например, formFile.php.

Тогда, когда он отправил с

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

там в processFile.php вам нужно прочитать переменные $ _POST. Таким образом, вы избегаете путаницы, и вы уверены, что читаете.

Смежные вопросы