2016-03-11 2 views
2

Я создал систему онлайн-регистрации. Я сделал неупорядоченный список, чтобы отобразить новых ожидающих кандидатов, ожидающих утверждения или отклонения. Я также добавил кнопку для каждого нового заявителя, чтобы показать свои данные из ожидающей таблицы.php показать конкретные данные в popup

Проблема заключается в том, когда я добавляю более одного заявителя, она отображает только данные последнего заявителя для всех них. Я прошел через это в течение нескольких часов, но дней и ничего не работает.

Это мой код со страницы, которая имеет неупорядоченный список:

function getStudent() { 
     global $conn; 
     $query = "SELECT * FROM pending_students_table WHERE status IS NULL;"; 
     $result = mysqli_query($conn, $query); 

     $i = 1; 

     while ($row = mysqli_fetch_array($result)) { 
     $sId = $row['id']; 
     $sName = $row['student_name']; 
     $_SESSION['id'] = $row['id']; 

     echo "<tr id='sNew".$i."'>"; 
     echo "<td>".$i." - </td>"; 
     echo "<td>{$sName}</td>"; 
     echo "<td><button type='submit' name='sAcc' value='{$sId}'>Accept</button></td>"; 
     echo "<td><button type='submit' name='sRej' value='{$sId}'>Reject</button></td>"; 
     echo "<td><button name='stInfo' value='{$sId}'><a href='student_information.php?id=<?php echo ".'"$row[$id]"'."; ?>' target='_blank' style='color: #000000; text-decoration: none;' onClick='pop_up(this)'>Student Details</a></button></td>"; 
     echo "</tr>"; 

     $i++; 
     } 


} 

И это код из student_information.php:

<?php 
session_start(); 
include ('partials/connectDb.php'); 

echo "<h2>Student Information</h2>"; 

$id = $_SESSION['id']; 
$sql = "SELECT pending_students_table.id, pending_students_table.student_name, 
     pending_students_table.student_email, pending_students_table.student_phone, 
     major_table.major_name, pending_students_table.student_password, 
     pending_students_table.high_school_major, pending_students_table.high_school_gpa, 
     pending_students_table.adviser, pending_students_table.status 
     FROM pending_students_table INNER JOIN major_table ON pending_students_table.student_major = major_table.major_id WHERE pending_students_table.id = '$id';"; 
$result = mysqli_query($conn, $sql); 

while($row = mysqli_fetch_array($result)) { 
    $sId = $row['id']; 
    $sName = $row['student_name']; 
    $sPhone = $row['student_phone']; 
    $sMajor = $row['major_name']; 
    $sHsMajor = $row['high_school_major']; 
    $sHsGpa = $row['high_school_gpa']; 

    $sHsMajorString = ''; 

    if ($sHsMajor == 1) { 
     $sHsMajorString = 'Commercial'; 
    } elseif ($sHsMajor == 2) { 
     $sHsMajorString = 'Literature'; 
    } elseif ($sHsMajor == 3) { 
     $sHsMajorString = 'Science'; 
    } elseif ($sHsMajor == 4) { 
     $sHsMajorString = '(Institute of Technology)'; 
    } 

    echo "<ul>"; 
    echo "<li>Name: {$sName}</li>"; 
    echo "<li>Phone: {$sPhone}</li>"; 
    echo "<li>Selected Major: {$sMajor}</li>"; 
    echo "<li>High School Major: {$sHsMajorString}</li>"; 
    echo "<li>High School GPA: {$sHsGpa}</li>"; 
    echo "</ul>"; 


} 
?> 

ответ

0

В вашем Ссылка на student_information.php вы используете встроенный PHP код, но ваш уже в разобранном области. Таким образом, вам не нужно использовать href='student_information.php?id=<?php echo ".'"$row[$id]"'."; ?>' target='_blank', вы можете использовать href='student_information.php?id=$row['id']' target='_blank'.

Изменен код:

function getStudent() { 
     global $conn; 
     $query = "SELECT * FROM pending_students_table WHERE status IS NULL;"; 
     $result = mysqli_query($conn, $query); 

     $i = 1; 

     while ($row = mysqli_fetch_array($result)) { 
     $sId = $row['id']; 
     $sName = $row['student_name']; 
     $_SESSION['id'] = $row['id']; 

     echo "<tr id='sNew".$i."'>"; 
     echo "<td>".$i." - </td>"; 
     echo "<td>{$sName}</td>"; 
     echo "<td><button type='submit' name='sAcc' value='{$sId}'>Accept</button></td>"; 
     echo "<td><button type='submit' name='sRej' value='{$sId}'>Reject</button></td>"; 
     echo "<td><button name='stInfo' value='{$sId}'><a href='student_information.php?id=".$row['id']."' target='_blank' style='color: #000000; text-decoration: none;' onClick='pop_up(this)'>Student Details</a></button></td>"; 
     echo "</tr>"; 

     $i++; 
     } 


} 

Также вы должны использовать $id = $_GET['id']; вместо $id = $_SESSION['id'];, потому что $_SESSION['id']; всегда будет содержать последний идентификатор.

Изменен код:

<?php 
session_start(); 
include ('partials/connectDb.php'); 

echo "<h2>Student Information</h2>"; 

$id = $_GET['id']; 

$sql = "SELECT pending_students_table.id, pending_students_table.student_name, 
     pending_students_table.student_email, pending_students_table.student_phone, 
     major_table.major_name, pending_students_table.student_password, 
     pending_students_table.high_school_major, pending_students_table.high_school_gpa, 
     pending_students_table.adviser, pending_students_table.status 
     FROM pending_students_table INNER JOIN major_table ON pending_students_table.student_major = major_table.major_id WHERE pending_students_table.id = '$id';"; 
$result = mysqli_query($conn, $sql); 

while($row = mysqli_fetch_array($result)) { 
    $sId = $row['id']; 
    $sName = $row['student_name']; 
    $sPhone = $row['student_phone']; 
    $sMajor = $row['major_name']; 
    $sHsMajor = $row['high_school_major']; 
    $sHsGpa = $row['high_school_gpa']; 

    $sHsMajorString = ''; 

    if ($sHsMajor == 1) { 
     $sHsMajorString = 'Commercial'; 
    } elseif ($sHsMajor == 2) { 
     $sHsMajorString = 'Literature'; 
    } elseif ($sHsMajor == 3) { 
     $sHsMajorString = 'Science'; 
    } elseif ($sHsMajor == 4) { 
     $sHsMajorString = '(Institute of Technology)'; 
    } 

    echo "<ul>"; 
    echo "<li>Name: {$sName}</li>"; 
    echo "<li>Phone: {$sPhone}</li>"; 
    echo "<li>Selected Major: {$sMajor}</li>"; 
    echo "<li>High School Major: {$sHsMajorString}</li>"; 
    echo "<li>High School GPA: {$sHsGpa}</li>"; 
    echo "</ul>"; 


} 
?> 
+0

Большое спасибо, я обновил ссылку, как вы описали и использовали $ id = $ _GET ['id']; и теперь это работает как шарм! : D – user3586095

0

Вы используете $ _SESSION [ 'ID'] в students_information.php, который всегда является последним опрошенным учеником.

Решение:

Используйте переменную $ _GET:

$id = $_GET['id']; 

Вторая проблема:

При создании ссылки вы добавляете еще одну пару ", которые не нужны. Так что либо заменить их, как предложено в моем комментарии или использовать

str_replace("'","") 
+0

Я использовал его и сделал данные исчезают! – user3586095

+0

Действительно ли указатель действительно содержит действительный идентификатор? Потому что если не этот код ничего не выкинет. – Alexander

+0

Измените Alexander

0

По вашему вопросу, я не думаю, что было бы целесообразно, чтобы отправить сессию пользователя только ради одобрения или неодобрения. Это может сделать вашу базу данных уязвимой для утверждения или отклонения неправильного результата, потому что в каком-то случае вы можете забыть отменить сеанс.

Я бы порекомендовал вам использовать $ _POST или $ _GET.

Например, в вашем вопросе, я бы изменить

это $id = $_SESSION['id']; на странице student_information.php к $id = $_GET['id'];

, а также корректировать свои коды на ссылки, некоторые из кода не являются правильными

Например, в вашем коде я вижу эхо внутри другого эха, который не рекомендуется, а также вы добавляете еще один синтаксис <?php внутри другого синтаксиса <?php, также не рекомендуется.

т.е. этой линии

echo "<td><button name='stInfo' value='{$sId}'><a href='student_information.php?id=<?php echo ".'"$row[$id]"'."; ?>' target='_blank' style='color: #000000; text-decoration: none;' onClick='pop_up(this)'>Student Details</a></button></td>"; 

Попробуйте заменить эту часть

<a href='student_information.php?id=<?php echo ".'"$row[$id]"'."; ?>... 

к чему-то вроде этого

<a href='student_information.php?id=".$sId."..... 

А на странице student_informtion.php. так как вы показываете только одного ученика, я не вижу причины для показа списка. то есть эта часть

while($row = mysqli_fetch_array($result)) {.... 

Надеется, что это будет иметь некоторую помощь

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