Я запускаю PHP-скрипт и продолжаю получать ошибки, например:
Примечание. Неопределенный индекс: ID в C:\wamp\www\test\updateHW3.php в строке 116.
Я использую mysql_connect()
для обучения. Это мой код:
<?php
// variables used in script
if(isset($_POST[ "submit" ]))
{
$ID = isset($_POST[ "ID" ]) ? $_POST[ "ID" ] : "";
$fname = isset($_POST[ "fname" ]) ? $_POST[ "fname" ] : "";
$lname = isset($_POST[ "lname" ]) ? $_POST[ "lname" ] : "";
$phone = isset($_POST[ "phone" ]) ? $_POST[ "phone" ] : "";
$birthday = isset($_POST[ "birthday" ]) ? $_POST[ "birthday" ] : "";
$deathday = isset($_POST[ "deathday" ]) ? $_POST[ "deathday" ] : "";
$age = isset($_POST[ "age" ]) ? $_POST[ "age" ] : "";
$gender = isset($_POST[ "gender" ]) ? $_POST[ "gender" ] : "";
// build INSERT query
$query = "UPDATE students SET firstname ='&fname',lastname='$lname',telephone='$phone',birthday='$birthday',deathday='$deathday',age='$age',gender='$gender' WHERE S_PK=$ID" ;
// echo $query."<br/>";
// Connect to MySQL
if ( !( $database = mysql_connect( "localhost", "root", "" ) ) )
die( "<p>Could not connect to database</p>" );
// open MailingList database
if ( !mysql_select_db( "webdatabase", $database ) )
die( "<p>Could not open MailingList database</p>" );
// execute query in MailingList database
if ( !( $result = mysql_query( $query, $database ) ) )
{
print( "<p>Could not execute query!</p>" );
die( mysql_error() );
} // end if
mysql_close( $database );
header("location:readHW3.php");
}
?>
<h1>Mailing List Contacts</h1>
<table>
<caption>Contacts stored in the database</caption>
<tr>
<th>Student_ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>phone</th>
<th>birthday</th>
<th>deathday</th>
<th>age</th>
<th>gender</th>
</tr>
<?php
print( "<h1>Sample Update Form</h1>
<p>Please fill in the fields you wish to update and click Register.</p>" );
print( "<!-- post form data to dynamicForm.php -->
<form method = 'post' action = ''>
<h2>User Information</h2>
<!-- create text boxes for user input -->" );
// array of name values for the text input fields
$inputlist = array( "ID" => "Student ID","fname" => "First Name",
"lname" => "Last Name","phone" => "Phone","birthday" => "Birthday"
,"deathday" => "Deathday","age" => "Age");
// array for gender
$gender = array( "male",
"female");
$ID = isset($_GET[ "ID" ]) ? $_GET[ "ID" ] : "";
if($ID != "")
{
$query = "SELECT * FROM students where S_PK = $ID";
// Connect to MySQL
if ( !( $database = mysql_connect( "localhost", "root", "" ) ) )
die( "<p>Could not connect to database</p></body></html>" );
// open MailingList database
if ( !mysql_select_db( "webdatabase", $database ) )
die( "<p>Could not open MailingList database</p>
</body></html>" );
// query MailingList database
if ( !( $result = mysql_query( $query, $database ) ) )
{
print( "<p>Could not execute query!</p>" );
die( mysql_error() . "</body></html>" );
} // end if
$row = mysql_fetch_assoc( $result );
echo "<tr><td>".$ID."</td>";
foreach ( $inputlist as $inputname => $inputalt)
{
echo "<td><input type = 'text' name = '$inputname' value = '" . $row["$inputname"] . "'></td>";
} // end foreach
print( "<td><select name = 'gender'>" );
foreach ( $gender as $currgender )
{
print( "<option" . ($currgender == $row["gender"] ? " selected>" : ">") . $currgender . "</option>" );
} // end foreach
print( "</select></td><td>");
print( "<td/><tr/></table><!-- create a submit button -->
<p class = 'head'>
<input type='hidden' name='ID' value='$ID' />
<input type = 'submit' name = 'submit'
value = 'Register'/></p></form></body></html>" );
mysql_close( $database );
}
?>
$row["$inputname"]
Это должно быть изменено на следующую вероятность.
$row[$inputname]
Вы, где объявляете строку вместо доступа к переменной. Посмотрите, исправляет ли этот код код
Вы должны изменить код линии 116:
<input type='hidden' name='ID' value='$ID' />
Со следующей строкой кодов:
<input type='hidden' name='ID' value='".$ID."' />
$_GET[ "ID" ]!=$_POST['id']