Como passar o valor da tabela para o modal de bootstrap para o PHP?

Ahsan Ali

Eu peguei linhas do MySQL e fiz um loop com Bootstrap modal e fiz um formulário em modal a partir do qual os dados estão sendo enviados para o script PHP (update.php) com a ajuda de ajax. Mas, em troca, estou obtendo a saída apenas da última linha. Preciso obter o registro de aluno específico com sua identificação exclusiva.

HTML:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
 <table class="table table-responsive">
                        <thead>
                        <tr>
                            <th>NAME</th>
                            <th>ROLL NUMBER</th>
                            <th>CONTACT NO</th>
                            <th>ADDRESS</th>
                            <th>EDIT</th>
                        </tr>
                        </thead>
                        <tbody>

                               <?php


            $query = "SELECT * FROM students ORDER BY id DESC";
            $query_run = mysqli_query($connection, $query);
            if($query_run){

                while($row = mysqli_fetch_assoc($query_run)){
                    $id = $row['id'];
                    $name = $row['name'];
                    $rollno = $row['rollno'];
                    $contact = $row['contact'];
                    $address = $row['address'];
                    echo "<tr>";
                    echo '<td>' . $name . '</td>';
                    echo '<td>' . $rollno . '</td>';
                    echo '<td>' . $contact . '</td>';
                    echo '<td>' . $address . '</td>';
                    echo "<td><button class='btn btn-link btn-custom dis' data-toggle='modal' data-target='#myModal$id'>
  EDIT</button> </td>";
                    echo '</tr>';
                    ?>

                                                   <div class="modal fade" id="myModal<?php echo $id; ?>"  tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                                   <div class="modal-dialog" role="document">
                                       <div class="modal-content">
                                           <div class="modal-header">
                                               <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                               <h4 class="modal-title" id="myModalLabel">EDIT RECORD</h4>
                                           </div>
                                           <div class="modal-body">

                                               <form id="updateValues" action="update.php" method="POST" class="form">
                                                   <div class="form-group">
                                                       <label for="name">NAME</label>
                                                       <input type="text" class="form-control" name="name" id="name" value="<?php echo $name; ?>">
                                                   </div>
                                                   <div class="form-group">
                                                       <label for="rollno">ROLL NO</label>
                                                       <input type="text" class="form-control" name="rollno" id="rollno" value="<?php echo $rollno; ?>">
                                                   </div>
                                                   <div class="form-group">
                                                       <label for="contact">CONTACT</label>
                                                       <input type="text" class="form-control" name="contact" id="contact" value="<?php echo $contact; ?>">
                                                   </div>
                                                   <div class="form-group">
                                                       <label for="address">ADDRESS</label>
                                                       <textarea class="form-control" rows="3" name="address" id="address"><?php echo $address; ?></textarea>
                                                   </div>
                                                   <input type="hidden" name="id" value="<?php echo $id; ?>">
                                                   <input type="submit" class="btn btn-primary btn-custom" value="Save changes">
                                               </form>

                                           </div>
                                           <div class="modal-footer">
                                               <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                               <div id="results"></div>
                                           </div>

                                       </div>
                                   </div>
                               </div>
                     <?php  }
            }?>
                         </tbody>
                    </table>
</body>
</html>




JS:



                $(document).ready(function(){

                    var values, url;


                      $('#updateValues').submit(function(e){

                          e.preventDefault();
                           values = $(this).serialize();
                          url = $(this).attr('action');


                          $.post(url, values, function(data){
                             $('#results').html(data);
                          });
                      });
                });

Update.php:

<?php


 if(isset($_POST['name'])&&isset($_POST['rollno'])&&isset($_POST['contact'])&&isset($_POST['address'])){
     $id = $_POST['id'];
     $name = $_POST['name'];
     $rollno = $_POST['rollno'];
     $contact = $_POST['contact'];
     $address = $_POST['address'];

     echo "$id $name $rollno $contact $address";
 }else{
     echo 'ERROR!';
 }

?>
cssifo

Isso não é testado / depurado, mas refatore seu código semelhante a este:

<?php
    $query = "SELECT * FROM students ORDER BY id DESC";
    $query_run = mysqli_query($connection, $query);
    if($query_run){

    $out = '
        <table class="table table-responsive">
            <thead>
            <tr>
                <th>NAME</th>
                <th>ROLL NUMBER</th>
                <th>CONTACT NO</th>
                <th>ADDRESS</th>
                <th>EDIT</th>
            </tr>
            </thead>
            <tbody>
    ';

        while($row = mysqli_fetch_assoc($query_run)){
            $out .= '<tr class="trID_' .$row['id']. '">';
            $out .= '<td class="td_name">' . $row['name'] . '</td>';
            $out .= '<td class="td_rollno">' . $row['rollno'] . '</td>';
            $out .= '<td class="td_contact">' . $row['contact'] . '</td>';
            $out .= '<td class="td_address">' . $row['address'] . '</td>';
            $out .= "<td><button class='td_btn btn btn-link btn-custom dis'>EDIT</button> </td>";
            $out .= '</tr>';
        }
        $out .= '</tbody></table>
        echo $out;
?>

<script>
    $(document).ready(){
        $('.td_btn').click(function(){
            var $row = $(this).closest('tr');
            var rowID = $row.attr('class').split('_')[1];
            var name =  $row.find('.td_name').val();
            var rollno =  $row.find('.td_rollno').val();
            var contact =  $row.find('.td_contact').val();
            var address =  $row.find('.td_address').val();
            $('#frm_id').val(rowID);
            $('#frm_name').text(name);
            $('#frm_rollno').text(rollno);
            $('#frm_contact').text(contact);
            $('#frm_address').text(address);
            $('#myModal').modal('show');
        });
    });//END document.ready
</script>

       <div class="modal fade" id="myModal"  tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
           <div class="modal-dialog" role="document">
               <div class="modal-content">
                   <div class="modal-header">
                       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                       <h4 class="modal-title" id="myModalLabel">EDIT RECORD</h4>
                   </div>
                   <div class="modal-body">

                       <form id="updateValues" action="update.php" method="POST" class="form">
                           <div class="form-group">
                               <label for="name">NAME</label>
                               <input type="text" class="form-control" name="name" id="frm_name">
                           </div>
                           <div class="form-group">
                               <label for="rollno">ROLL NO</label>
                               <input type="text" class="form-control" name="rollno" id="frm_rollno">
                           </div>
                           <div class="form-group">
                               <label for="contact">CONTACT</label>
                               <input type="text" class="form-control" name="contact" id="frm_contact">
                           </div>
                           <div class="form-group">
                               <label for="address">ADDRESS</label>
                               <textarea class="form-control" rows="3" name="address" id="frm_address"></textarea>
                           </div>
                           <input type="hidden" name="frm_id">
                           <input type="submit" class="btn btn-primary btn-custom" value="Save changes">
                       </form>

                   </div>
                   <div class="modal-footer">
                       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                       <div id="results"></div>
                   </div>

               </div>
           </div>
       </div>
<?php
        }
    }
?>

Notas:

(1) Crie a tabela inteira em uma variável e, em seguida, produza a variável de uma só vez.

(2) Você só precisa de um modal, não um modal para cada linha da tabela. Portanto, remova a criação modal de dentro do loop while.

(3) Use o jQuery para:
   (a) detectar o clique do botão na linha
   (b) obter os dados da tabela para essa linha
   (c) preencher os campos no modal
   (d) exibir o modal
Você está usando o Bootstrap, que usa o jQuery, por isso faz sentido use jQuery para fazer isso.

(4) Usando jQuery para obter valores das células da tabela vs. campos de entrada:
   (a) .text()- das células da tabela
   (b) .val()- de <input>ou<textarea>


Aqui está uma demonstração jsFiddle com a qual você pode brincar e que demonstra como usar jQuery para preencher o modal dependendo da linha que foi clicada.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como passar dados da lista AngularJS para o modal Bootstrap?

Como passar a marcação html para o modal de bootstrap da interface do usuário?

Como passar id para o modal de bootstrap?

Como passar valor para o link href de um Bootstrap Modal?

Como passar o valor da tabela em um arquivo de recurso para a solicitação JSON de outro arquivo de recurso?

(Yii2) como passar o valor da tabela para um botão HTML

Como passar dados da visualização de coleção para a classe de visualização de tabela?

Como passar o valor da entrada para a próxima visualização de um modal na estrutura do parafuso frouxo?

Como passar o valor da entrada para a próxima visualização de um modal na estrutura do parafuso frouxo?

Como passar o valor da linha atual para uma subconsulta da mesma tabela no postgresql?

Como faço para passar o valor jQuery para php?

Como obter o 'id' da tabela para o modal para excluí-lo com php

Como passar o valor php para a variável de script

Como passar o valor varbinary (max) como um parâmetro da visão para o método de ação no controlador e salvá-lo em outra tabela

Como passar o id da tabela para outra tabela em PHP

Passe o valor id de ahref para bootstrap modal php

Como passar o valor da matriz para a função javascript

Como passar o valor da variável para o HTA

Como faço para passar os dados variáveis do PHP While Loop para Bootstrap Modal?

Como passar o valor da linha selecionada da tabela para o evento de clique de botão - Material design - Angular 6

como faço para passar o id da linha da tabela para a próxima exibição?

Como passar o resultado da tabela de consulta sql de junção para outro método?

Como passar parâmetro para o componente da tabela?

Como passar parâmetro para o componente da tabela?

Como passar as linhas da tabela para uma função plpgsql?

Como passar o valor para o pop-up de confirmação da tela personalizada

Como passar o valor de retorno do javascript da visualização para o controlador no laravel

Como passar valor para o URL da ação de solicitação no el-upload?

Como passar o valor para o HashSet de um modelo da visualização C #