Я работаю над PHP и базами данных для задания, и мне нужна помощь в написании кода.Форма передается в process.php для обработки (код для обоих приведен ниже).Я получаю предупреждение о неопределенном индексе для $_POST['CustomerID']
и $_POST['BodyStyle']
при запуске process.php (точное местоположение указано в коде), и информация, введенная для этих полей в форме, не будет вставлена или обновленабаза данных.Остальные поля работают как задумано, не генерируют ошибок и хранятся в базе данных.Что не так?Как я могу это исправить?
Process.php:
<?php
$dbname = "cars";
$dbuser = "carsuser";
$dbpass = "carspass250";
$dbconnect = odbc_connect($dbname,$dbuser, $dbpass)
or die ("Could not connect. <br>");
$opcode = (int) $_POST["opcode"];
$recno = (int) $_POST["recno"];
if ( ($opcode < -1) || ($opcode > 1) )
{
echo "Invalid data passed from form! <br>";
exit();
}
if (($opcode == 0) || ($opcode == 1))
{
$CustomerID = $_POST['CustomerID']; //Undefined Index
$year = $_POST['year'];
$make = $_POST['make'];
$model = $_POST['model'];
$BodyStyle = $_POST['BodyStyle']; //Undefined Index
$color = $_POST['color'];
if (!all_fields_ok($CustomerID, $year, $make, $model, $BodyStyle, $color))
{
exit();
}
}
if ($opcode == -1)
$SqlStatement = "DELETE from Vehicle WHERE VehicleID = $recno";
if ($opcode == 0)
{
$SqlStatement = "UPDATE Vehicle SET ".
"CustomerID = '$CustomerID', ".
"Year = '$year', ".
"Make = '$make', ".
"Model = '$model', ".
"BodyStyle = '$BodyStyle', ".
"Color = '$color' ".
"WHERE VehicleID = $recno";
}
if ($opcode == 1)
{
$SqlStatement = "INSERT INTO Vehicle ".
"(CustomerID, Year, Make, Model, BodyStyle, Color) ".
"VALUES ('$CustomerID', '$year', '$make', '$model', '$BodyStyle', '$color')";
}
print $SqlStatement."<br>";
$recs = odbc_exec($dbconnect, $SqlStatement)
or die ("Could not locate database");
print "Database Updated! <br>";
print "<a href=listall.php>Return to List</a> ";
function all_fields_ok($CustomerID, $year, $make, $model, $BodyStyle, $color )
{
$errormsg = "";
$flag = 0;
if ( (!is_numeric($CustomerID)) )
{
$errormsg = $errormsg."Input: $CustomerID <br>";
$errormsg = $errormsg."Only numbers are aloud <br><br>";
$flag=1;
}
if(!(is_numeric($year)) || (!(strlen($year)==4)))
{
$errormsg = $errormsg."Input: $year <br>";
$errormsg = $errormsg."Please enter a four-digit year <br><br>";
$flag=1;
}
if ((!ctype_alpha($make)) )
{
$errormsg = $errormsg."Input: $make <br>";
$errormsg = $errormsg."Please enter the make of the vehicle, characters only<br> <br>";
$flag=1;
}
if (!(ctype_alnum($model)) )
{
$errormsg = $errormsg."Input: $model<br>";
$errormsg = $errormsg."Please enter the model of the vehicle, numbers and characters aloud <br><br>";
$flag=1;
}
if ((!ctype_alpha($BodyStyle)) )
{
$errormsg = $errormsg."Input: $BodyStyle <br>";
$errormsg = $errormsg."Please enter the bodystyle of the vehicle, characters only <br><br>";
$flag=1;
}
if ((!ctype_alpha($color)) )
{
$errormsg = $errormsg."Input: $color <br>";
$errormsg = $errormsg."Please enter the color of the vehicle, characters only. <br><br>";
$flag=1;
}
if ($flag == 1)
{
echo "Data not trustworthy. Please revise input and try again. <br><br>";
echo $errormsg;
return false;
}
else
return true;
}
?>
Форма:
<?php
$dbname = "cars";
$dbuser = "carsuser";
$dbpass="carspass250";
$dbconnect = odbc_connect($dbname,$dbuser, $dbpass)
or die ("Could not connect. <br>");
$opcode = (int) $_POST["opcode"];
$recno = (int) $_POST["recno"];
if ( ($opcode < -1) || ($opcode > 1) )
{
echo "Invalid data passed from form! <br>";
exit();
}
if ($opcode == 0)
{
$SqlStatement = "SELECT * from Vehicle WHERE VehicleID = $recno";
$recs = odbc_exec($dbconnect, $SqlStatement)
or die ("Could not execute query");
$row = odbc_fetch_array($recs) ;
$VehicleID = $row['VehicleID'];
$CustomerID = $row['CustomerID'];
$year = $row['Year'];
$make = $row['Make'];
$model = $row['Model'];
$BodyStyle = $row['BodyStyle'];
$color = $row['Color'];
}
else
{
$recno = 0;
$VehicleID = 0;
$CustomerID = "";
$year = "";
$make = "";
$model = "";
$BodyStyle = "";
$color = "";
}
print "<h1>Vehicle Record </h1>";
print "<form action=process.php method=post> \n";
print "<table>";
if ($opcode == 0)
print "<tr><td> Record Number:</td><td align=left>$recno</td> </tr>\n";
else
print "<tr><td> Record Number: </td><td align=left>New Record</td> </tr>\n";
print "<tr><td> Customer ID: </td>";
print "<td> <input type=text name=CustomerID value=\"$CustomerID\"></td></tr> \n";
print "<tr><td> Year: </td>";
print "<td> <input type=text name=year value=\"$year\"></td></tr> \n";
print "<tr><td> Make: </td>";
print "<td> <input type=text name=make value=\"$make\"></td></tr> \n";
print "<tr><td> Model: </td>";
print "<td> <input type=text name=model value=\"$model\"></td></tr> \n";
print "<tr><td> Style: </td>";
print "<td> <input type=text name=BodyStyle value=\"$BodyStyle\"></td></tr> \n";
print "<tr><td> Color: </td>";
print "<td> <input type=text name=color value=\"$color\"></td></tr> \n";
print "<input type=hidden name=opcode value=$opcode> \n";
print "<input type=hidden name=recno value=$recno> \n";
print "<tr><td> <input type=submit value='Submit Record'></td><td></td></tr> \n \n";
print "</table>";
print "</form>";
odbc_close($dbconnect);
?>