Передача данных из таблицы в модал с использованием PHP - PullRequest
0 голосов
/ 17 мая 2018

Всякий раз, когда я нажимал кнопку просмотра для определенного человека, модал дает мне неверные данные.

example image

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

PHP-код для отображения только таблицы

<?php 
$rs = $PDOCon->prepare("SELECT * FROM applicant)
");
if ($rs->execute()) {
}else{
    echo "<script type='text/javascript'>alert('Invalid ID!');</script>";
}
$str="<div class='demo_jui'><table style='color: black;' cellpadding='0' cellspacing='0' border='1' class='display' id='tbl' class='jtable'>";
$str.="
    <thead>
        <tr>
            <th>Applicant ID</th>
            <th>Full Name</th>
            <th>Applied Job</th>
            <th>Date Applied</th>
            <th>Action</th>
        </tr>
    </thead>
    <tbody>";
    while($row=$rs->fetch(PDO::FETCH_ASSOC)){
        $str.= "<tr>";
            $str.= "<td>" .( $row['people_id']) . "</td>"; 
            $people_id= $row['people_id'];
            $str.= "<td>" .($row['FName']) . " " .( $row['MName']) . " " .( $row['LName']) ."</td>";
            $LName= $row['LName'];
            $FName= $row['FName'];
            $MName= $row['MName'];
            $str.= "<td >" .( $row['job_description']) . "</td>";
            $str.= "<td >" .( $row['applicant_applied_date']) . "</td>";
            $str.= "<td ><a href='' data-toggle='modal'  data-target='#myModal'><i class='fa fa-eye'> VIEW RESUME</i></a></td> "; 
        $str.= "</tr>";
    }
        echo $str;      
    echo "</tbody></table></div>";

Код выше будет отображать данные из базы данных.

Модал находится на той же странице, что и первая. Вот оно:

echo '<div class="modal fade" id="myModal" role="dialog" data-backdrop="static" data-keyboard="false">';
    echo '<div class="modal-dialog modal-md">';
        echo '<div class="modal-content">';
            echo '<div class="modal-header">';
                echo '<button type="button" class="close" data-dismiss="modal">&times;</button>';
                echo '<h5 class="modal-title">View Applicant Information</h5>';
            echo '</div>';
            echo '<div class="modal-body">';
                echo '<label style="font-weight: bold;"><strong>Name: </strong>'.$LName.', '.$FName.' '.$MName.'</label></br>';
                echo '<label><strong>Email Address: </strong></label> </br>';
                echo '<label><strong>Contact Number: </strong></label> </br>';

                echo '<a href=encode_view.php?id='.$people_id.' type="submit">VIEW DETAILED RESUME</a>';
                echo '<a href=print_pdf_2.php?id='.$people_id.' type="submit" class="btn btn-primary">VIEW PDF RESUME</a>';
                echo '<a href=print_pdf.php?id='.$people_id.' type="submit" class="btn btn-primary">VIEW HH PDF RESUME</a>';
            echo '</div>';
        echo '</div></div></div></div>';     ?>

Это мой код, я новичок в PHP, должен ли я использовать Javascript для получения значения, но я не знаком с Javascript?

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Вы можете использовать приведенный ниже шаблон.

Добавлен идентификатор людей в ссылках просмотра, чтобы модал знал, какую именно запись нужно извлечь.

Заменить:

$str.= "<td ><a href='' data-toggle='modal'  data-target='#myModal'><i class='fa fa-eye'> VIEW RESUME</i></a></td> "; 

С:

$str.= "<td ><a href='' data-toggle='modal' data-people-id='".$people_id."' data-target='#myModal'><i class='fa fa-eye'> VIEW RESUME</i></a></td> "; 

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

Используйте этот модальный обработчик:

<script>   
$('#myModal').on('show.bs.modal', function(event) {
    var button = $(event.relatedTarget);
    var people_id = button.data('people-id');
    var modal = $(this);

    $.ajax({
      type: "POST",
      url: "get_person.php",
      data: {
        'people_id': people_id,
        'submit': 'submit',
      },
      success: function(res) {
        var response = JSON.parse(res);
        var row = response.data;
        if (response.status == "success") {
          var full_name = row.FName + " " + row.MName + " " + row.LName;
          $(modal).find('.modal-body').html('<label style="font-weight: bold;"><strong>Name: </strong>'+full_name+'</label></br>');
        } else {
          alert(response.msg);
        }
      }
    });
  });
</script>

Приведенный ниже код ответит запрошенной записью в формате json наотобразить в модальном.

Создать файл с именем get_person.php

if(isset($_POST['submit'])){
    $people_id = isset($_POST['people_id'])?$_POST['people_id']:0;

    if($people_id > 0){
        $dbh = new PDO('mysql:host=localhost;dbname=peeps', 'dbuser','dbpasss');
        $stmt = $dbh->prepare("SELECT * FROM tblname WHERE people_id = :people_id");
        $stmt->bindValue(":people_id", $people_id);

        if($stmt->execute()){
            $row = $stmt->fetch(PDO::FETCH_ASSOC);
            exit(json_encode(array('status'=>'success', 'data'=>$row)));
        }
    }
}

exit(json_encode(array('status'=>'fail', 'msg'=>'Failed to fetch data!')));
0 голосов
/ 17 мая 2018

Вам необходимо динамически загрузить данные заявителя

Если вы не знаете (или не хотите) сделать запрос ajax:

Измените эту строку:

$str.= "<td ><a href='' data-toggle='modal'  data-target='#myModal'><i class='fa fa-eye'> VIEW RESUME</i></a></td> "; 

с этим:

$str.= "<td ><a href='' data-toggle='modal'  data-target='#myModal'><i class='fa fa-eye' data-LName="'.$LName.'" data-FName="'.$FName.'"  data-MName="'.$MName.'"  data-people_id="'.$people_id.'" > VIEW RESUME</i></a></td> "; 

Измените ваш модальный на этот (вы можете удалить php модального):

<div class="modal fade" id="myModal" role="dialog" data-backdrop="static" data-keyboard="false">
    <div class="modal-dialog modal-md">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h5 class="modal-title">View Applicant Information</h5>
            </div>
            <div class="modal-body">
                <label style="font-weight: bold;"><strong>Name: </strong><span class="LName"></span>, <span class="FName"></span> <span class="MName"></span></label></br>
                <label><strong>Email Address: </strong></label> </br>
                <label><strong>Contact Number: </strong></label> </br>

                <a href="#" type="submit" class="resume-link">VIEW DETAILED RESUME</a>
                <a href="#" type="submit" class="btn btn-primary resumepdf-link">VIEW PDF RESUME</a>
                <a href="#" type="submit" class="btn btn-primary resumehh-link">VIEW HH PDF RESUME</a>
            </div>
        </div>
    </div>
</div>

И добавьте этот скрипт в конецВаша страница:

$('#myModal').on('show.bs.modal', function (event) {
    var applicant = $(event.relatedTarget);
    var LName = applicant.data('LName');
    var FName = applicant.data('FName');
    var MName = applicant.data('MName');
    var people_id = applicant.data('people_id');

    modal.find('.modal-LName').text(LName);
    modal.find('.modal-FName').text(FName);
    modal.find('.modal-MName').text(MName);
    modal.find('.resume-link').attr('src', 'encode_view.php?id='+people_id);
    modal.find('.resumepdf-link').attr('src', 'print_pdf_2.php?id='+people_id);
    modal.find('.resumehh-link').attr('src', 'print_pdf.php?id='+people_id);
});
0 голосов
/ 17 мая 2018

Возможно, ваша проблема связана с тем, что вы сбрасываете people_id в каждой строке с последним значением.

$ people_id = $ row ['people_id'];

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...