PHP搜索学生ID和姓氏
我有一个作业,它有一个表单,以ID和姓氏作为输入。我想同时获取ID和姓氏,并将其与文本文件匹配。如果匹配,则在表格中显示该学生。如果不匹配,则回显未找到该学生。到目前为止,我几乎完成了所有的工作,但每次我搜索一个存在的学生时,没有找到的学生都会得到回应 以下是我表格的链接: 这是你可以从中获得ID和姓氏的学生班级。第一列是学生ID,第二列是姓氏: 代码如下:PHP搜索学生ID和姓氏,php,Php,我有一个作业,它有一个表单,以ID和姓氏作为输入。我想同时获取ID和姓氏,并将其与文本文件匹配。如果匹配,则在表格中显示该学生。如果不匹配,则回显未找到该学生。到目前为止,我几乎完成了所有的工作,但每次我搜索一个存在的学生时,没有找到的学生都会得到回应 以下是我表格的链接: 这是你可以从中获得ID和姓氏的学生班级。第一列是学生ID,第二列是姓氏: 代码如下: <?php
<?php
$lname = $_REQUEST['lname'];
$id = $_REQUEST['id'];
function DisplayRow($ID) {
print "<tr>\n";
$parts = split(":", $ID);
for($i=0; $i <=7; $i++) {
print "<td>$parts[$i]</td>\n";
}
print "</tr>\n";
}
$handle = fopen("class.txt", "r");
$line = fgets($handle);
while(!feof($handle)) {
$part = explode(":", $line);
if($id == $part[0] && $lname == $part[1]) {
echo "<table border='1' width='95%'>
<tr>
<th>Student ID</th>
<th>Student Last Name</th>
<th>Student First Name</th>
<th>Midterm 1</th>
<th>Midterm 2</th>
<th>Midterm 3</th>
<th>Final Exam</th>
<th>Letter Grade</th>
</tr>";
DisplayRow($line);
} else {
print "The person you are trying to search for does not exist";
die;
}
$line = fgets($handle);
}
fclose($handle);
print "</table>\n";
?>
您的问题很简单。。。。。您过早地终止了循环
else {
print "The person you are trying to search for does not exist"; //??
die;
} ^--------------- This your issue (Remove)
更好使用类似SQLite
或MySQL
还请注意,split
是折旧的,我建议改用explode
$parts = split(":", $ID);
^------------- Change to explode
当它搜索到某样东西时,它就碎了。。。
如果达到eof,将触发错误
<?php
$lname = $_REQUEST['lname'];
$id = $_REQUEST['id'];
function DisplayRow($ID) {
print "<tr>\n";
$parts = split(":", $ID);
for($i=0; $i <=7; $i++) {
print "<td>$parts[$i]</td>\n";
}
print "</tr>\n";
}
$found = false;
$handle = fopen("class.txt", "r");
$line = fgets($handle);
while(!feof($handle)) {
$part = explode(":", $line);
if($id == $part[0] AND $lname == $part[1]) {
echo "<table border='1' width='95%'>
<tr>
<th>Student ID</th>
<th>Student Last Name</th>
<th>Student First Name</th>
<th>Midterm 1</th>
<th>Midterm 2</th>
<th>Midterm 3</th>
<th>Final Exam</th>
<th>Letter Grade</th>
</tr>";
DisplayRow($line);
echo "</table>";
$found = true;
break; //no need to go further already found the data
}
$line = fgets($handle);
}
if($found == false) {
echo "The person you are trying to search for does not exist";
}
fclose($handle);
?>
文件格式是什么样子的<代码>为什么不使用数据库
?这是我的课堂作业,我们不进入数据库,不添加它有注释。。把它放在pastbin.com上,然后把链接放在这里我会查一下为什么你不想使用数据库?可以使用regexp,但我不认为你也不喜欢这个:如果我不使用die,它像a一样打印该字符串超过5次,因为它逐行搜索它。我认为SQLite它不是一个好选择,它完全不受支持browsers@ChaosClown这不是讨论这个问题的好地方,这是一件好事,但不是好事supported@Raymond严友正在播放“未找到”-消息太早(每次找不到此人时)。如果找到此人,请设置一个标志,如果退出循环时仍未设置标志,请打印错误消息。谢谢。你的工作很完美:),但你是说如果($found==false){echo…“}