2017-08-29 67 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行的數據。我怎樣才能使它成爲可能? –