2013-10-06 3 views
1

У меня возникла проблема с получением этой формы для успешной отправки данных в базу данных. Я проверил, что база данных/таблица существует (схема показана ниже) и по какой-то причине она не вставляет ее в базу данных. Когда я пытаюсь представить образцы данных, он не меняет страницу и просто сидит там. Что происходит?PHP Форма, не добавляющая данные в базу данных mySQL?

<body> 
<?php if($_SERVER["REQUEST_METHOD"] != "POST"){ ?> 
<h1>My Favorite Foods</h1> 

<form action="index.php" method="post" id="foodForm"> 
Name: <input type="text" name="foodname" id="nameField"></input><br /> 
Type: <select name="foodtype" id="typeField"> 
<option value="fruit">Fruit</option> 
<option value="vegetable">Vegetable</option> 
<option value="dairy">Dairy</option> 
<option value="meat">Meat</option> 
<option value="grain">Grain</option> 
<option value="other">Other</option> 
</select><br /> 
Number of Calories: <input type="text" name="foodcals" id="calsField"></input><br /> 
Healthy? <input type="checkbox" name="foodhealth" value="healthy" id="healthyField"></input><br /> 
Additional Notes:<br /> 
<textarea name="foodnotes" id="notesField"></textarea><br /> 
<input type="submit" value="Add" onclick="validateForm();return false;"></input> 
</form> 

<?php }else{ ?> 
<!-- form handling and output printing stuff goes here --> 
<?php $insert = "INSERT INTO Foods(Name, Type, NumCals, Healthy, Notes) VALUES ('$_POST[foodname]', '$_POST[foodtype]', '$_POST[foodcals]', '$_POST[foodhealth]', '$_POST[foodnotes]'"; 
$con = mysqli_connect("localhost","root"); 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
mysqli_select_db("mydb"); 
$result = mysqli_query($con, $insert); 
if ($result) { 
    echo "Food added successfully."; 
    /*while ($row = mysqli_fetch_array($result)) { 
     echo $row['Name'] . ", " . $row['Type'] . ", " . $row['NumCals'] . ", " . $row['Healthy'] . ", " . $row['Notes']; 
     echo "<br>"; 
    } */ 
} else { 
    echo "Error adding person"; 
    mysqli_error($con); 
} 
} ?> 
</body> 
</html> 

Схема:

Foods (PID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (PID), Name VARCHAR (20), тип VARCHAR (9), NumCals INT, Healthy BOOL, Примечания TEXT)

ответ

3

Этот атрибут в кнопку отправки:

onclick="validateForm();return false;" 

предотвращает форму от представления. return false означает, что браузер не должен выполнять действие по умолчанию, нажав кнопку.

Предполагая, что функция validateForm() возвращает логическое значение, указывающее, была ли проверка успешной, изменить что:

onclick="return validateForm();" 

Изменение:

} else { 
    echo "Error adding person"; 
    mysqli_error($con); 

к:

} else { 
    echo "Error adding person: " . mysqli_error($con); 

Так что ошибка появится сообщение.

И вам не хватает ) в конце вашего заявления INSERT.

+0

Теперь я получаю сообщение об ошибке, в котором говорится, что он не может добавить пищу. Что-то не так с моей вставкой? Если так, то, что это? – vsingal5

+0

Какую ошибку вы получаете точно? –

+0

Что показывает 'mysqli_error()'? – Barmar

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