我有此工作的php代码,但未返回预期的结果

时间:2019-11-26 10:47:55

标签: php

我有PHP代码从MySQL DB检索数据。我想要的是按下按钮,然后弹出窗口必须显示该相关id的数据或在该id行上显示数据。因此,对于第一个btn来说,它工作良好,但在其他btn上,它显示的是btn 1的数据。

那里有解决方案吗? 谢谢

$query = "SELECT * FROM users"
$results = mysqli_query ($conn, $query);
$chck_res = mysqli_num_rows($results);

if ($chck_res > 0) {
    while($row = mysqli_fetch_array($results)) {
        $id = $row['id'];
        $name =$row['name'];
        $lastName = $row['lName'];

        ?>
            <div class="container">
                <button onClick="popWin()">View data at <?php echo $id; ></button>
            </div>

            <div id="popup">
                echo $id = $row['id'];
                echo $name =$row['name'];
                echo $lastName = $row['lName'];
            </div>
        <?php
    }
}

CSS:

#popup {
    display: none;
}

JS:

function popWin() {
    document.getElementById('popup').style.display = "Block";
}

2 个答案:

答案 0 :(得分:1)

DOM元素必须具有唯一的ID ,您无法通过getElementById访问具有相同ID的第二个元素。

尝试用下一个替换div:

 <div>
        <div class="container">
            <button onClick="popWin(this)">View data at <?php echo $id; ></button>
        </div>

        <div class="popup">
          <?= $id = $row['id']; ?>
          <?= $name = $row['name']; ?>
          <?= $lastName = $row['lName']; ?>
       </div>
 </div> 

JS:

function popWin(btn) {
     btn.parentNode.parentNode.getElementsByClassName("popup")[0].style.display = "Block";
     console.log(btn.parentNode.parentNode.getElementsByClassName("popup")[0].innerHTML);
}

function popWin(btn) {
    btn.parentNode.parentNode.getElementsByClassName("popup")[0].style.display = "Block"; 
    console.log(btn.parentNode.parentNode.getElementsByClassName("popup")[0].innerHTML);
}
<div>
    <div class="container">
        <button onClick="popWin(this)">View data at 2</button>
    </div>

    <div class="popup">
        name id 2
   </div>
</div>
<div>
    <div class="container">
        <button onClick="popWin(this)">View data at 1</button>
    </div>

    <div class="popup">
        name id 1
   </div>
</div>

答案 1 :(得分:0)

您的代码有错误。你

  1. 没有终止选择查询
  2. 在第14行的回显ID上未结束php标记

    <?php
    $query = "SELECT * FROM users";
    $results = mysqli_query ($conn, $query);
    $chck_res = mysqli_num_rows($results);
    
    if ($chck_res > 0) {
    while($row = mysqli_fetch_array($results)) {
    $id = $row['id'];
    $name =$row['name'];
    $lastName = $row['lName'];
    
    ?>
        <div class="container">
            <button onClick="popWin()">View data at <?php echo $id; ?></button>
        </div>
    
        <div id="popup">
               <?php echo  $id = $row['id'];
               echo $name =$row['name'];
               echo $lastName = $row['lName'];?>
        </div>
    <?php   }}