2015-11-26 2 views
0

Мне нужно вернуть детали студента из таблицы «stud», когда идентификаторы учащихся «sid» вводятся в поле поиска. Также во втором разделе мне нужно найти таблицу регистрации в моей базе данных «enrl», чтобы получить идентификатор UCAS зарегистрированного курса данного данного идентификатора студента.Зачем мне печатать 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 

Sidenote: Пожалуйста, не используйте расширения базы данных mysql_, они устарели в PHP 5.5.0 и были удалены в PHP 7.0.0. Используйте вместо этого mysqli или PDO. И это why you shouldn't use mysql_ functions

+0

Добро пожаловать! :) –

Смежные вопросы