我正在为PHP初学者课程做作业。
我需要创建一个包含三个php文件的简单留言板:一个用于输入和处理,一个用于显示数据,一个用于数据库连接。
在这个社区的帮助下,我设法让许多功能正常运行。
现在,我希望在名称或输入字段为空时实现错误消息。我在一开始就添加了这段代码:
if (isset($_POST['submit']) &&
$_POST['submit'] == 'Submit')
{
if(!isset($_POST['name']) ||
$_POST['name'] == ""
{
$msg = '<P>There is a problem. Did you enter a name? </P>';
echo $msg;
} elseif
(!isset($_POST['message']) ||
$_POST['message'] == ""
{
$msg = '<P>There is a problem. Did you enter a message? </P>';
echo $msg;
}else{
这给了我这个错误:
解析错误:语法错误,意外&#39 ;;&#39;在第10行的/Applications/MAMP/htdocs/051R4.php中
有人能指出我正确的方向吗?
这里是完整的代码:
vars.inc
<?php
$hostname = "localhost";
$username = (blanked)
$password = (blanked)
$database = "dbLOI";
$table = "guestbook";
?>
文件1. 051R4.php
<?php
include 'vars2.inc';
if (isset($_POST['submit']) &&
$_POST['submit'] == 'Submit')
{
if(!isset($_POST['name']) ||
$_POST['name'] == ""
{
$msg = '<P>There is a problem. Did you enter a name? </P>';
echo $msg;
} elseif
(!isset($_POST['message']) ||
$_POST['message'] == ""
{
$msg = '<P>There is a problem. Did you enter a message? </P>';
echo $msg;
}else{
$link = mysqli_connect($hostname, $username, $password, $database);
if (!$link)
die ('Could not connect: ' . mysqli_connect_error());
$name = mysqli_real_escape_string($link, $_POST["name"]);
$message = mysqli_real_escape_string($link, $_POST["message"]);
$date = date("y-m-d h:i:s"); //date time
$sport = mysqli_real_escape_string($link, $_POST["sport"]);
if(isset($_POST['submit'])) {
//Radio button has been set to "true"
if(isset($_POST['practitioner']) && $_POST['practitioner'] == 'true') $_POST['practitioner'] = TRUE;
//Radio button has been set to "false" or a value was not selected
else $_POST['practitioner'] = FALSE;
}
$practitioner = mysqli_real_escape_string($link, $_POST['practitioner']);
$query="INSERT INTO Guestbook(name, message, date, sport, practitioner)VALUES('$name', '$message', '$date', '$sport', $practitioner)";
$result=mysqli_query($link, $query);
//check if query successful
if($result){
echo "Successful";
echo "<BR>";
// link to view guestbook page
echo "<a href='051R4.view.php'>View guestbook</a>";
}
else {
echo "ERROR";
}
mysqli_close($link);
require "051R4.view.php";
require "051R4.sign.php";
?>
file 2. 051R4.view.php
<!DOCTYPE html>
<html lang=nl>
<head>
<meta charset=utf-8>
<meta name=description content="Guestbook">
<meta name=keywords content="Guestbook, LOI">
<title>Inzendopdracht 051R4</title>
</head>
<body>
<table>
<tr>
<td><strong>View Guestbook | <a href="051R4.sign.php">Sign Guestbook</a> </strong></td>
</tr>
</table>
<br>
<?php
include 'vars2.inc';
$link = mysqli_connect($hostname, $username, $password, $database);
if (!$link)
die ('Could not connect: ' . mysqli_connect_error());
$tbl_name="Guestbook"; // Table name
$sql="SELECT * FROM $tbl_name ORDER BY ID desc";
$result=mysqli_query($link, $sql);
while($rows=mysqli_fetch_array($result)){
?>
<table>
<tr>
<td><table>
<tr>
<td>Name</td>
<td>:</td>
<td><? echo $rows['Name']; ?></td>
</tr>
<tr>
<td>Message</td>
<td>:</td>
<td><? echo $rows['Message']; ?></td>
</tr>
<tr>
<td valign="top">Date/Time </td>
<td valign="top">:</td>
<td><? echo $rows['Date']; ?></td>
</tr>
</table></td>
</tr>
</table>
<?php
}
mysqli_close($link); //close database
?>
</body>
</html>
file 3. 051R4.sign.php
<!DOCTYPE html>
<html lang=nl>
<head>
<meta charset=utf-8>
<meta name=description content="Guestbook">
<meta name=keywords content="Guestbook, LOI">
<title>Inzendopdracht 051R4</title>
</head>
<body>
<table>
<tr>
<td><strong>Sign Guestbook </strong></td>
</tr>
</table>
<table>
<tr>
<form id="form1" name="form1" method="post" action="051R4.php">
<td>
<table>
<tr>
<td>Name</td>
<td>:</td>
<td ><input name="name" type="text" id="name" size="40" /></td>
</tr>
<tr>
<td>Message</td>
<td>:</td>
<td><textarea name="message" cols="40" rows="3" id="message"></textarea></td>
</tr>
<tr>
<td>Sport</td>
<td>:</td>
<td><select name="sport" id="sport">
<option value=tennis>tennis</option>
<option value=voetbal>voetbal</option>
<option value=running>running</option>
<option value=tafeltennis>tafeltennis</option>
<option value=squash>squash</option>
<option value=wielrennen>wielrennen</option>
<option value=boksen>boksen</option>
</select></td>
</tr>
<tr>
<td>Practitioner</td>
<td>:</td>
<td><input type="radio" name="practitioner" value=true id=practitioner>yes<br>
<input type="radio" name="practitioner" value=false checked id=practitioner>no<br>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<table>
<tr>
<td><strong><a href="051R4.view.php">View Guestbook</a> </strong></td>
</tr>
</table>
</body>
</html>
编辑:目前看来主要问题是$ practitioner变量中的某个地方。
编辑2:
我对单选按钮进行了一些编辑,并且我已经添加了以下代码:
if(isset($_POST['submit'])) {
//Radio button has been set to "true"
if(isset($_POST['Practitioner']) && $_POST['Practitioner'] == 'true') $_POST['Practitioner'] = TRUE;
//Radio button has been set to "false" or a value was not selected
else $_POST['Practitioner'] = FALSE;
}
我认为这会将Practitioner单选按钮值转换为布尔值,但我似乎无法摆脱这个错误:
PHP注意:未定义的索引:第21行的/Applications/MAMP/htdocs/051R4.php中的从业者
编辑3: 单选按钮现在应该正常工作,没有更多的屏幕或日志文件错误(ERROR除外,表明没有$ result),仍然没有创建留言簿条目。
编辑4:关于错误处理的新问题。我把它贴在了顶部。