Окна предупреждений JavaScript в сочетании с PHP

echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(\'are you sure you wish to delete this record\');'>delete</a></td>";

Выше код, который я пытаюсь использовать. Каждый раз он ничего не делает, и я не вижу, как я могу использовать «правильные» методы JavaScript. Какова причина?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
5 708
8

Ответы 8

echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(&quot;are you sure you wish to delete this record&quot;);'>delete</a></td>";

Используйте выделение синтаксиса HTML в Firefox в ваших интересах. :-)

Немного странный способ сделать это, но он будет работать - было бы разумнее использовать \ "или & apos; Также && должен быть & amp; и $ a может потребоваться кодировка url / html.

Greg 13.10.2008 19:25

Да, черт возьми, это не сработает, потому что "$ row [id]" не будет правильно вычисляться в строке.

MDCore 13.10.2008 22:11

Также плохая идея использовать методы GET для изменения состояния - ознакомьтесь с рекомендациями о том, когда использовать GET, а когда использовать POST (http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist)

Верно. <input type = submit name = "delete_row_id_123"> можно использовать, чтобы избежать множественных форм со скрытыми полями, или <button name = delete value = 123> delete </button>, если вас не волнует IE.

Kornel 14.10.2008 03:01

Я думаю, что $ row [id] неправильно вычисляется в вашем операторе echo. Попробуй это:

echo "<td><a href='delete.php?id = {$row[id]}&&category=$a'...

Обратите внимание на волнистые скобки.

Но ЭТО гораздо легче читать:

?><td><a href = "delete.php?id=<?=$row[id];?>&amp;category=<?=$a;?>" onclick = "return confirm('are you sure you wish to delete this record');">delete</a></td><?

Кроме того, добавьте в свой js функцию для обработки подтверждения:

function confirm_delete() {
    return confirm('Are you sure you want to delete this record?');
}

Тогда ваш метод onclick может быть просто return confirm_delete().

Обратите внимание, что на большинстве серверов короткие теги php отключены. Следовательно, <? = Не будет работать.

Darryl Hein 13.10.2008 21:15

По моему опыту, на большинстве серверов включены short_tags. Но каждому свое.

Paolo Bergantino 13.10.2008 21:33

У меня тоже никогда не было проблем с short_tags. Согласно моему прочтению, короткие теги php.net/ini.core включены по умолчанию.

MDCore 13.10.2008 22:13

Бог поможет вам тогда, когда ваше приложение будет размещено на сервере, на котором нет коротких тегов.

nickf 14.10.2008 04:18

@nickf Думаю, ты прав. Я собираюсь задать вопрос по этому поводу (при условии, что его еще нет).

MDCore 14.10.2008 14:10

Да, их будет чертовски заводить ^ _ ^

Paolo Bergantino 23.10.2008 23:16

И если вы настаиваете на использовании эхо-штуки:

echo "<td><a href='delete.php?id=$row[id]&&category=$a' onclick='return confirm(\\'are you sure you wish to delete this record\\');'>delete</a></td>";

- потому что экранирование лечится из php-интерпретатора! -)

Нет, но php удаляет первую обратную косую черту, поэтому в коде, который попадает в браузер, написано: onclick = 'return confirm (\' вы уверены, что хотите удалить эту запись \ ');'

roenving 14.10.2008 07:52

Другое решение:

echo '<td><a href = "delete.php?id=' . $row[id] . '&category=' . $a . '" onclick = "return confirm(\'are you sure you wish to delete this record?\');'>delete</a></td>';

Я заменил двойные кавычки на одинарные и наоборот. Затем я объединил переменные, чтобы PHP не нуждался в оценке.

Кроме того, я не уверен, действительно ли возврат onclick остановит «нажатие» ссылки, когда пользователь нажмет «нет».

Так и будет. если функция onclick ссылки возвращает false, действие отменяется. confirm () возвращает истину или ложь в зависимости от того, нажимает ли пользователь «ок» или «отменить».

nickf 14.10.2008 04:19

Вот что я использую для того же типа вещей.

Я не повторяю / не печатаю его, я помещаю html между?> Html

?> <td><a href = "?mode=upd&id=<?= $row[id] ?>&table=<?= $table ?>">Upd</a> / <a href = "?mode=del&id=<?= $row[id] ?>&table=<?= $table ?>" onclick = "return confirm('Are you sure you want to delete?')">Del</a></td> <?php

Просто предложение, вы используете фреймворк?

Я использую MooTools, а затем просто включаю этот скрипт в HTML

confirm_delete.js

window.addEvent('domready', function(){
    $$('a.confirm_delete').each(function(item, index){
        item.addEvent('click', function(){
            var confirm_result = confirm('Sure you want to delete');
            if (confirm_result){
                this.setProperty('href', this.getProperty('href') + '&confirm');
                return true;
            }else{
                return false;
            }
        });     
    });
});

Все, что он делает, это находит любые теги «a» с class = «confirm_delete» и прикрепляет тот же код, что и ваш скрипт, но мне легче использовать. Он также добавляет переменную подтверждения к адресу, чтобы, если JavaScript отключен, вы все равно могли отправлять их на экран с запросом подтверждения.

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

nickf 14.10.2008 04:35

Вы должны стараться как можно больше отделить свой JavaScript от HTML. Сначала выведите стандартный HTML-код, а затем добавьте событие в ссылку.

printf('<td><a id = "deleteLink" href = "delete.php?id=%d&amp;category=%s">Delete</a></td>', $row["id"], $a);

А затем где-нибудь на странице какой-нибудь код JavaScript:

document.getElementById('deleteLink').onclick = function() {
    return confirm("Are you sure you wish to delete?");
};

Однако из вашего примера похоже, что у вас, вероятно, есть таблица с несколькими строками, каждая со своей собственной ссылкой на удаление. Это делает использование этого стиля еще более привлекательным, поскольку вы не будете выводить текст confirm(...) снова и снова.

В этом случае очевидно, что вы не можете использовать id по ссылке, поэтому, вероятно, лучше использовать класс. <a class = "deleteLink" ...

Если вы использовали библиотеку JavaScript, например jQuery, это очень просто:

$('.deleteLink').click(function() {
    return confirm("...");
});

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