2015-11-26 195 views
0

當學生ID「sid」在搜索框中輸入時,我需要從「stud」表中返回一些學生的詳細信息。同樣在第二部分中,我需要在我的數據庫「enrl」中搜索註冊表以獲取此給定學生ID的註冊課程的UCAS ID。爲什麼我打印3次輸出?

問題是爲什麼我會搜索我的搜索的第二部分3次? 這裏是我的代碼:

<?php 
mysql_connect("localhost","root","") or die ("Could Not Connect!"); 
mysql_select_db("swanseauniversity") or die ("Could Not Connect to   database!"); 

$output = ''; 
$output2 = ''; 
//Collect 
if(isset($_POST['search'])){ 
    $searchq = $_POST['search']; 

//Search "stud" table 
    $query = mysql_query("SELECT * FROM stud WHERE sid LIKE '$searchq'") or die("Could not Search"); 
    $count = mysql_num_rows($query); 
    if($count == 0){ 
     $output = 'there was no search result'; 
    } 
    else { 
     while($row = mysql_fetch_array($query)){ 
      $id = $row['sid']; 
      $title = $row['title']; 
      $fname = $row['firstname']; 
      $lname = $row['lastname']; 
      $DOB = $row['dob']; 
      if ($row['gender'] == 'f'){ 
       $gender = 'Female'; 
      } 
      if ($row['gender'] == 'm'){ 
       $gender = 'Male'; 
      } 

      $output .= 
      '<table style="width:100%", frame="box">' 
       .'<tr>' 
        .'<td>'.'Student ID'.'</td>' 
        .'<td>'. $id.'</td>' 
       .'</tr>' 
       .'<tr>' 
        .'<td>'.'Title'.'</td>' 
        .'<td>'. $title.'</td>' 
       .'</tr>' 
       .'<tr>' 
        .'<td>'.'Fullname:'.'</td>' 
        .'<td>'. $fname.' '.$lname.'</td>' 
       .'</tr>' 
       .'<tr>' 
        .'<td>'.'Date of Birth:'.'</td>' 
        .'<td>'. $DOB.'</td>' 
       .'</tr>' 
       .'<tr>' 
        .'<td>'.'Gender'.'</td>' 
        .'<td>'. $gender.'</td>' 
       .'</tr>' 
      .'</table>' 

      ; 
     } 
    } 


    //Search "enrl" Table 
    $query = mysql_query("SELECT * FROM enrl WHERE sid LIKE '$searchq'") or  die("Could not Search"); 
    $count = mysql_num_rows($query); 
    if($count == 0){ 
     $output2 = 'there was no search result'; 
    } 
    else { 
     while($row = mysql_fetch_array($query)){ 
      $enrolledcourse = $row['pid']; 

      $output2 .= 
      '<table style="width:100%", frame="box">' 
       .'<tr>' 
        .'<td>'.'UCAS Code'.'</td>' 
        .'<td>'. $enrolledcourse.'</td>' 
       .'</tr>' 
       .'<tr>' 
        .'<td>'.'dummy1'.'</td>' 
        .'<td>'. '</td>' 
       .'</tr>' 
       .'<tr>' 
        .'<td>'.'dummy2'.'</td>' 
        .'<td>'. '</td>' 
       .'</tr>' 
      .'</table>' 

      ; 
     } 
    } 
} 

?> 
<html> 
    <head> 
    <title>Student Search</title> 
    </head> 
    <body> 
<!--SEARCH FORM--> 
     <form action="index.php" method="post"> 
      <label>Query by Student ID #:</label> <input type="text"  name="search" placeholder="Search for students..."/> 
      <input type="submit" value="Submit"/> 
     </form> 

    <hr> 

    <h4 style="margin-bottom:0px">Personal Details</h4> 
    <?php 
    print("$output"); 
    ?> 

    <h4 style="margin-bottom:0px">Course Details</h4> 
    <?php 
    print("$output2"); 
    ?> 
    </body> 
</html> 

RESULT

+0

你有三行數據相同嗎?你的代碼是按照SQL注入開放的。你應該更新到'PDO'或'mysqli'驅動程序。 – chris85

回答

0

問題:

現在的問題是,爲什麼讓我的搜索3倍的第二部分?

解決方案:

那是因爲你不是尋找一個特定學生招生記錄。

採取$id以外的所有塊,像這樣:

// your code 

$id = ''; 
if($count == 0){ 
    $output = 'there was no search result'; 
} 
else { 
    while($row = mysql_fetch_array($query)){ 
     $id = $row['sid']; 
     $title = $row['title']; 
     $fname = $row['firstname']; 
     $lname = $row['lastname']; 
     $DOB = $row['dob']; 
     if ($row['gender'] == 'f'){ 
      $gender = 'Female'; 
     } 
     if ($row['gender'] == 'm'){ 
      $gender = 'Male'; 
     } 

     // your code 
    } 

} 

// your code 

,然後搜索enrl表對特別學生證,像這樣:

//Search "enrl" Table 
$query = mysql_query("SELECT * FROM enrl WHERE sid = '$id'") or die("Could not Search"); 
// your code 

旁註:請不要使用mysql_數據庫擴展,它們在PHP 5.5.0中被棄用,並且在PHP 7.0.0中被刪除。改爲使用mysqliPDO擴展名。這是why you shouldn't use mysql_ functions

+0

非常歡迎! :) –