2017-06-17 62 views
1

我試圖在用戶單擊所選元素上的按鈕時創建一個表單。然而,當我嘗試它,我點擊一個按鈕,它要麼加載多個,要麼加載1,但只顯示一個值,如果這是有道理的。這裏是我的代碼:用PHP變量填充輸入值和相關的ID

<?php 

     $sql = "SELECT * FROM services"; 
     $result = $database->query($sql); 

     while ($row = mysqli_fetch_assoc($result)) { 

      $id = $row['id']; 

?> 

      <div class="service_display"> 
       <div class="service_header"><?php echo $row['service_name']; ?></div> 
       <div class="service_desc"><?php echo $row['service_desc']; ?></div> 
       <div class="service_options"> 
        <button type="button" class="additional_files" id="additional_files">Edit</button> 
       </div> 
      </div> 
<?php 
     } 

?> 

我按下按鈕時將使用jQuery出現的形式,即時通訊試圖與各自的ID,以填補值。這裏是我的代碼:

   <div class="show-onclick"> 
        <h3>Edditing service: <?php echo $row['service_name']; ?></h3> 
        <hr> 
        <form action="inc/save_edit.php?id=<?php echo $row['id']; ?>" class="service_editform"> 
         <input type="text" name="service_name" value="<?php echo $row['service_name']; ?>"> 
         <textarea><?php echo $row['service_desc']; ?></textarea> 
        </form> 
       </div> 

我認爲這個問題是我不知道從哪裏把這些代碼,如果我把它放在while循環,它的工作原理,但可以理解的,我有一個10輸入欄彈出了..

,如果我把它放在while循環外,並運行一個單獨的查詢來填補它,其空..

回答

0

按照你的問題解釋清楚了,你與沿循環形式前端顯示div,這不是一個好主意。

總是最好使用一個模式窗口,然後根據點擊你必須加載數據到它然後彈出。

反正你的情況有可能不止一個解決方案,但是這其中也將服務宗旨:

把「秀-的onclick」全格的「service_display」 DIV裏面,因此現在還它被循環沒有問題。 現在,當按鈕被點擊找到最接近的「service_display」div,它會給你的DOM元素&然後使用它,並彈出「show-onclick」div封閉在內。

按照下面的代碼:

<?php 
     $database = new mysqli("localhost", "root", "", "so"); 
     $sql = "SELECT * FROM services"; 
     $result = $database->query($sql); 

     while ($row = $result->fetch_assoc()) { 

      $id = $row['id']; 

?> 

      <div class="service_display" id="sd_<?php echo $row['id']; ?>"> 
       <div class="service_header"><?php echo $row['service_name']; ?></div> 
       <div class="service_desc"><?php echo $row['service_desc']; ?></div> 
       <div class="service_options"> 
        <button type="button" class="additional_files" id="additional_files">Edit</button> 
       </div> 

       <div class="show-onclick"> 
        <h3>Edditing service: <?php echo $row['service_name']; ?></h3> 
        <hr> 
        <form action="inc/save_edit.php?id=<?php echo $row['id']; ?>" class="service_editform"> 
         <input type="text" name="service_name" value="<?php echo $row['service_name']; ?>"> 
         <textarea><?php echo $row['service_desc']; ?></textarea> 
        </form> 
       </div> 
      </div> 
<?php 
     } 

?> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
$(".show-onclick").css("display", "none"); 
    $(document).on("click", ".additional_files", function() { 
     $(".show-onclick").css("display", "none"); 
     var sd_id=$(this).closest('div.service_display').attr("id"); 
     $("#"+sd_id+" .show-onclick").css("display", "block");  
    }); 
}); 
</script> 

我對代碼進行唯一的變化是我添加了一個動態的id字段到service_display股利。 和我已經使用jquery來顯示和隱藏各個點擊按鈕的形式。

再次在這裏我已經使用基於oop的mysqli,這不是強制性的,你也完全沒問題。

+0

謝謝你,我已經把它放在一個模態窗口中,但現在它只適用於當第一個環形物品,而不是其餘.. –

+0

RE:你的更新: - 謝謝!完美的作品。你剛剛救了我幾天頭痛,非常感謝。 :) –

+0

你是最受歡迎的:-) –