JavaScript中的Echo PHP查询结果确认

时间:2018-11-09 11:23:12

标签: javascript php html

我正在构建访客管理系统。在管理员后端,我尝试添加手动退出功能。我有显示访客信息的访客卡,以及用于查看其个人资料的按钮和将其注销的按钮。 -https://ibb.co/f7y5yV

我做了一个PHP foreach,从数据库中提取访问者的数据,然后将其显示在自己的卡中。这是卡的代码

<?php foreach ($result as $row) : ?>

        <div class="visitor-tile">
            <div class="visitor-tile-container">
                <div class="my-photo-container">
                    <img src="../images/visitor-photos/<?php echo htmlspecialchars($row['id']);?>-<?php echo htmlspecialchars($row['image_path']);?>" class="profile-img img-circle center-block"></td>
                </div>
                <h2 class="profile-visitorname">
                    <?php echo htmlspecialchars($row['first_name']) ?> <?php echo htmlspecialchars($row['last_name']);?>
                </h2>
                <p class="profile-label">Vehicle Reg: <span class="profile-data"><?php echo htmlspecialchars($row['vehicle_reg']) ?></span></p>
                <p class="profile-label">Visiting: <span class="profile-data"><?php echo htmlspecialchars($row['visiting']);?></span></p>
                <p class="profile-label">Arrival Time: <span class="profile-data"><?php echo substr(htmlspecialchars($row['sign_in_time']), 11, -3);?></span></p>
            </div>
            <div class="visitor-tile-buttons">
            <a href="visitor_profile.php?id=<?php echo htmlspecialchars($row['person_id']);?>" class="view-profile"><i class="fas fa-user"></i></a>
            <a href="#" class="sign-out" id="myLink" onclick="return confirm_delete()"><i class="fas fa-sign-out-alt"></i></a>
            <script type="text/javascript">
            function confirm_delete() {
              return confirm('Are you sure you want to sign out <?php echo htmlspecialchars($row['first_name']) ?> <?php echo htmlspecialchars($row['last_name']);?>');
            }
            </script>
            </div>

        </div>
<?php endforeach ?>

对于“退出”按钮,我试图在javascript中进行确认,以询问用户是否确定要退出访问者,但想从结果中提取访问者的姓名并将其放入确认消息中。我在这里尝试过这样做,但是它似乎只是从查询中提取所有访客卡的第一个结果

<a href="#" class="sign-out" id="myLink" onclick="return confirm_delete()"><i class="fas fa-sign-out-alt"></i></a>
        <script type="text/javascript">
        function confirm_delete() {
          return confirm('Are you sure you want to sign out <?php echo htmlspecialchars($row['first_name']) ?> <?php echo htmlspecialchars($row['last_name']);?>');
        }
        </script>

我认为我需要以某种方式将结果推送到JS,但并不完全确定。

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为您正在<script>内创建PHP foreach循环-因此您为每个用户获得一个脚本。而且,由于脚本定义了一个功能,每个功能都相同,因此这些功能相互覆盖。

您应该只在循环之外制作一个 <script>标签。为了使它能够显示用户单击的正确详细信息,您可以像这样传递参数。

例如。该功能可以是:

    function confirm_delete(firstName, lastName) {
      return confirm('Are you sure you want to sign out ' + firstName + ' lastName;?>');
    }

并在循环中像这样定义您的链接:

<a href="#" class="sign-out" id="myLink" onclick="return confirm_delete(<?php echo htmlspecialchars($row['first_name']);?>, <?php echo htmlspecialchars($row['last_name']);?>)"><i class="fas fa-sign-out-alt"></i></a>

或者使用@JonStirling提到的数据属性-这将导致代码更整洁。