PHP搜索学生ID和姓氏

PHP搜索学生ID和姓氏,php,Php,我有一个作业,它有一个表单,以ID和姓氏作为输入。我想同时获取ID和姓氏,并将其与文本文件匹配。如果匹配,则在表格中显示该学生。如果不匹配,则回显未找到该学生。到目前为止,我几乎完成了所有的工作,但每次我搜索一个存在的学生时,没有找到的学生都会得到回应 以下是我表格的链接: 这是你可以从中获得ID和姓氏的学生班级。第一列是学生ID,第二列是姓氏: 代码如下: <?php

我有一个作业,它有一个表单,以ID和姓氏作为输入。我想同时获取ID和姓氏,并将其与文本文件匹配。如果匹配,则在表格中显示该学生。如果不匹配,则回显未找到该学生。到目前为止,我几乎完成了所有的工作,但每次我搜索一个存在的学生时,没有找到的学生都会得到回应

以下是我表格的链接:

这是你可以从中获得ID和姓氏的学生班级。第一列是学生ID,第二列是姓氏:

代码如下:

<?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…“}