2017-08-29 41 views
1

我遇到了有关在PHP循环之外传递php变量的小问题。我在同一页面中创建了表格和表单。显示第一个表格,弹出对话框中的直通编辑链接。点击编辑链接后,我想将动态ID传递给对话框。我的页面包含一个php表格和表单。如何在同一页面内的while循环之外传递php变量

PHP/HTML表

<table> 
    <th>ID</th> 
    <th>Title</th> 
    <th>Edit</th> 
     <?php 
      $query="select * from video order by id desc"; 
      $result=$con->query("SELECT * FROM video ORDER by id DESC") or die($con->error); 
      while($row=$result->fetch_assoc()){ 
       $id=$row['id']; 
       $heading=$row['heading']; 
     ?> 
    <tr> 
     <td> 
      <?php echo $id ?> 
     </td> 
     <td> 
      <?php echo $heading ?> 
     </td> 
     <td> 
      <a href="#modal2" id="pop_button">Edit</a> 
     </td> 
     </tr> 
     <?php } ?> 
</table> 

这个表之后,我想以这种形式在对话框中显示的数据

PHP形式

<div class="remodal" data-remodal-id="modal2" role="dialog" aria-labelledby="modal2Title" aria-describedby="modal2Desc"> 
    <form action="" method="POST" enctype="multipart/form-data"> 
     <table> 
     <tr> 
      <th>Video ID</th> 
      <td> 
       <input type="number" value="<?php echo $id?>" name="id" readonly></input> 
      </td> 
     </tr> 
     <tr> 
      <th>Video Title</th> 
      <td> 
       <input type="text" value="<?php echo $heading?>" name="title"></input> 
      </td> 
     </tr> 
     </table>  
    </form> 
</div> 

我知道, while循环无法连接到弹出对话框窗体,所以我的代码只打印第一行的数据。如果我在while循环中包含整个代码,我的表格结构变得很糟糕。有没有任何想法通行证外的while循环?我尝试使用全局变量方法,但它不起作用。也许我不能正确使用全局变量。由于

+1

您已经尝试了第二循环,使所有的弹出窗口? – FMashiro

+0

你是否创造了许多等于没有选择记录的模态? – Naincy

+0

_循环后,您为循环内部赋值的变量,当然只有_last_值被赋值。但是,例如,您可以将这些数据放在_array_中,这样您可以在while循环之后再次循环。但是,您还必须修改您用于HTML元素的ID,因为ID必须在HTML文档中是唯一的。 – CBroe

回答

1

在while循环存储值数组是这样的:

<?php 
      $query="select * from video order by id desc"; 
      $result=$con->query("SELECT * FROM video ORDER by id DESC") or die($con->error); 
      $array = [];    
      while($row=$result->fetch_assoc()){ 
       $id=$row['id']; 
       $heading=$row['heading']; 
       $array[$id] = $heading; 

     ?> 

而在你的HTML表是这样的:

<table> 
      <tr> 
       <th>Video ID</th> 
       <th>Video Title</th> 
       <?php foreach ($array as $key => $val){ ?> 
       <td> 
        <input type="number" value="<?php echo $key?>" name="id" readonly></input> 
       </td> 
       <td>    
        <input type="text" value="<?php echo $val?>" name="title"></input> 
       </td>   
       <?php } ?> 
      </tr> 
    </table> 
+0

感谢您的帮助@Nawin。但是你的代码一次显示**所有行**。事实上,我只想显示点击的特定行。我的第一个代码只显示最近的mysql行,并且我尝试了使用你的代码,它显示了mysql表中的所有行。如何仅显示被点击的特定行。如果点击了ID 5,它应该仅回显第5行的数据。我怎样才能使它成为可能? –