Подтверждение результатов запроса Echo PHP в 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, но я не совсем уверен.

Ваш код создаст несколько определений confirm_delete, что не будет работать. Имейте одну функцию и передайте имя, например, атрибут данных в теге.

Jonnix 09.11.2018 12:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
66
1

Ответы 1

Это происходит потому, что вы создаете свой <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 - это приведет к более аккуратному коду.

Другие вопросы по теме