2017-06-17 61 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

你是最受欢迎的:-) –