Эхо PHP Query приводит к подтверждению JavaScript

Я строю систему управления посетителями. В админке я пытаюсь добавить возможность ручного выхода. У меня есть карты посетителей, на которых отображается информация о посетителях, а также кнопка для просмотра их профиля и кнопка для их выхода. — 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, но я не совсем уверен.

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 — это приведет к более аккуратному коду.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector