2013-06-14 2 views
0

Мне нужна помощь. Я написал сценарий для ввода имени и фамилии в базу данных. Это работает правильно. Затем я написал сценарий для отображения этих имен вместе с 4 текстовыми полями для каждого имени, в котором точки ученика могут быть введены, а затем сохранены в БД. Имена из БД отображаются правильно, и текстовые поля отображаются правильно, однако, когда я пытаюсь поместить числа в поля, они не помещают числа в БД и не генерируют ошибки «неопределенного индекса». Я работал над этим некоторое время, но я просто не понимаю. Спасибо за вашу помощь. Мой код ниже. Спасибо.Ввод вторичных данных в ранее существовавшую базу данных

<html> 
<body> 
<form action="pts_summary.php" method="post"> 
<table border="1"> 
<tr> 
<th>Student Name</th> 
<th>First Hour</th> 
<th>Second Hour</th> 
<th>Third Hour</th> 
<th>Fourth Hour</th> 
</tr> 
<br> 

<?php 

$hour1 = $_POST['hour1']; 
$hour2 = $_POST['hour2']; 
$hour3 = $_POST['hour3']; 
$hour4 = $_POST['hour4']; 


$con=mysqli_connect("localhost","root","","srrdb");       
if (mysqli_connect_errno())             
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$result = mysqli_query($con,"SELECT * From students");      


while($row = mysqli_fetch_array($result))         
{ 
    echo "<tr>"."<td>".$row['fname']."&nbsp".$row['lname']."</td>".  
    "<td>".'<input type="text" name="hour1">'."</td>".     
    "<td>".'<input type="text" name="hour2">'."</td>".     
    "<td>".'<input type="text" name="hour3">'."</td>".     
    "<td>".'<input type="text" name="hour4">'."</td>"."</tr>";   
} 

if (isset ($_POST['submit'])) 
{ 
$sql="INSERT INTO students (hour1, hour2, hour3, hour4) 
VALUES ('".$hour1."','".$hour2."','".$hour3."','".$hour4."')"; 
} 

mysqli_close($con);               

?>                   

</table> 
<br><input type="submit" value="SUBMIT" name="submit"> 
</form> 
</body> 
</html> 
+0

У вашей формы нет полей для публикации. – Jessica

+0

Джессика, я не уверен, как ты имеешь в виду. Не могли бы вы уточнить? – BackpackingDad

ответ

0

Вы пытаетесь захватить данные после того, как вы даже проверили, была ли нажата кнопка отправки. Если кнопка отправки не была нажата, у вас не будет значений в любом из полей $ _POST ['hour #'], и это вызовет неопределенную ошибку индекса. Бросьте эти строки ПОСЛЕ проверки отправки так.

if (isset ($_POST['submit'])) 
{ 
    $hour1 = $_POST['hour1']; 
    $hour2 = $_POST['hour2']; 
    $hour3 = $_POST['hour3']; 
    $hour4 = $_POST['hour4']; 

    $sql="INSERT INTO students (hour1, hour2, hour3, hour4) 
    VALUES ('".$hour1."','".$hour2."','".$hour3."','".$hour4."')"; 
} 
+0

Ok Eric, я переконфигурирую это и попробую еще раз. Спасибо. – BackpackingDad

0

неопознанного индексных извещений вызваны использованием $_POST[...] без проверки, если они установлены. Ваши данные не вставляя в вашу базу данных, так как вы только настройки INSERT запроса -

$sql="INSERT INTO students... 

, но вы никогда не выполнить запрос.

mysqli_query($con,$sql); 

попытка -

if (isset ($_POST['submit'])){ 
    // put these inside isset() to prevent undefined index notices 
    $hour1 = $_POST['hour1']; 
    $hour2 = $_POST['hour2']; 
    $hour3 = $_POST['hour3']; 
    $hour4 = $_POST['hour4']; 

    $sql="INSERT INTO students (hour1, hour2, hour3, hour4) 
    VALUES ('".$hour1."','".$hour2."','".$hour3."','".$hour4."')"; 
    //missing the query line 
    // Insert or die with error message 
    $update = mysqli_query($con,$sql) or die(mysqli_error($con)); 
} 

Кроме того, вы используете unsanitized $_POST данные, так что вы открыты для SQL инъекций. Либо проведите очистку с помощью mysqli_real_escape_string(), либо еще лучше используйте подготовленные операторы - http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

+0

Шон, я изменил свой код, как вы предложили относительно isset(), и мои неопределенные ошибки индекса исчезли, спасибо. Затем я добавил строку $ update = mysqli_query ($ con, $ sql); но дата, которую я ввела в поля, по-прежнему не отправляется в БД. Я не могу не думать, что я не совсем понимаю, как вы хотели использовать код в этой строке. Не могли бы вы разобраться? Еще раз спасибо. – BackpackingDad

+0

Мое предположение заключается в том, что ваш запрос на вставку выходит из строя/ошибочно. Это может быть несколько причин. Попробуйте добавить ['mysqli_error()'] (http://php.net/manual/en/mysqli.error.php) к вашему запросу на обновление. Я отредактировал свой ответ с ним. – Sean

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