Meine PHP-Seite hat einen Link, um ein MySQL-Tabellendatum zu löschen. Ich möchte, dass es so ist, dass wenn ich auf den "Löschen" -Link klicke, ein Bestätigungsfeld erscheinen sollte und es fragen sollte "Bist du sicher, du willst löschen?", Mit zwei Buttons: 'ja' und 'nein' . Wenn ich auf "Ja" klicke, möchte ich die Daten der MySQL-Tabelle löschen. Wenn ich auf "Nein" klicke, sollte nichts passieren.PHP: Ja/Nein-Bestätigungsdialog anzeigen
Antwort
<a href="http://stackoverflow.com"
onclick="return confirm('Are you sure?');">My Link</a>
Sie JavaScript verwenden können, um Sie aufzufordern:
dies hier gefunden - Example
<script>
function confirmDelete(delUrl) {
if (confirm("Are you sure you want to delete")) {
document.location = delUrl;
}
}
</script>
<a href="javascript:confirmDelete('delete.page?id=1')">Delete</a>
Ein anderer Weg
<a href="delete.page?id=1" onclick="return confirm('Are you sure you want to delete?')">Delete</a>
Warnung: Dieses JavaScript wird das nicht aufhören Datensätze gelöscht werden, wenn sie nur n avigate auf den endgültigen URL - delete.page?id=1 in ihrem Browser
Der PHP-Weg, dies zu tun, um ein Dialogsystem innerhalb php.for Beispiel GTKDialogs würde: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box---Part-2---simple-yes-no-dialog.php Der Javacript Weg ist wahrscheinlich ein bisschen leichter , aber erinnern Sie sich, wenn Javascript deaktiviert ist, funktioniert das nicht (außer wenn Sie Javascript aktiviert zu aktivieren und dann fügen Sie dies !?) Dies könnte mit einem Onclick-Handler wie Tsvanharen veröffentlicht werden, oder mit einem einfachen Textdialog innerhalb der Seite anstelle eines quälenden Popups.
<a onClick="$('deletefromtable').show();"></a>
<div id="deletefromtable" style="display:none;">
Do you really want to do this?<br/>
<a href="deleteit.php">Yes</a>|<a onClick="$('deletefromtable').hide();">No</a>
</div>
Ich benutze Prototyp (daher der $() Tag und die Show()/hide()) für sie. aber Sie können es leicht ändern, um ohne Prototyp zu arbeiten:
<a onClick='document.getElementById("deletefromtable").style.display = "block";' href="#">click here to delete</a>
<div id="deletefromtable" style="display:none;">
Do you really want to do this?<br/>
<a href="deleteit.php">Yes</a>|<a onClick='document.getElementById("deletefromtable").style.display = "none";' href="#">No</a>
</div>
Nochmals, das funktioniert nicht ohne Javascript, aber fast keine Optionen.
Selbst wenn phpgtk auf dem Server installiert wurde (was Unsinn bedeutet, da es eine grafische Oberfläche erfordert, die niemals auf Webservern unter Linux installiert wird), würde das Dialogfeld auf dem Server geöffnet und nicht im Browser oder auf der Rechner des Benutzers: Sie können vom Server aus kein GTK-Fenster auf dem Client öffnen –
Sie sollten immer eine Form/Post-Taste verwenden, um so etwas zu bestätigen. Verlassen Sie sich nie auf Javascript. Lesen Sie this um zu verstehen, warum!
Ein Bestätigungsdialog hat nichts mit dem Problem in Ihrer Geschichte zu tun. Ein Bestätigungsdialog ist eine Benutzerfreundlichkeitsfunktion, die verhindert, dass ein Benutzer versehentlich auf eine Schaltfläche zum Löschen klickt. In Ihrem Link verwendeten sie Javascript für die Authentifizierung, was wirklich eine dumme Sache ist. –
Wenn Sie etwas löschen, sollten Sie immer POST und nicht GET verwenden, daher ist die Verwendung von confirm() eine schlechte Idee. Was ich in Ihrer Situation mache, ist ein modales Popup wie jqModal und ein Formular mit Ja/Nein-Schaltflächen im Popup anzuzeigen.
Wie verhindert 'confirm()' die Verwendung von POST? –
Normalerweise erstellt ich eine Löschseite, die ein Bestätigungsformular anzeigt, wenn die Anforderungsmethode "GET" ist, und löscht die Daten, wenn die Methode "POST" war und der Benutzer die Option "Yes" gewählt hat.
Dann, auf der Seite mit dem Link zum Löschen, füge ich eine onclick -Funktion hinzu (oder einfach die jQuery confirm plugin), die AJAX verwendet, um den Link zu posten, unter Umgehung der Bestätigungsseite.
Hier ist die Idee in Pseudo-Code:
löschen.php:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if ($_POST['confirm'] == 'Yes') {
delete_record($_REQUEST['id']); // From GET or POST variables
}
redirect($_POST['referer']);
}
?>
<form action="delete.php" method="post">
Are you sure?
<input type="submit" name="confirm" value="Yes">
<input type="submit" name="confirm" value="No">
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
<input type="hidden" name="referer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>">
</form>
Seite mit Lösch Link:
<script>
function confirmDelete(link) {
if (confirm("Are you sure?")) {
doAjax(link.href, "POST"); // doAjax needs to send the "confirm" field
}
return false;
}
</script>
<a href="delete.php?id=1234" onclick="return confirmDelete(this);">Delete record</a>
<input name="_delete_" type="submit" value="Delete" onclick="return confirm('Are you sure?')">
Dies ist die einfachste Antwort, danke. –
onclick="return confirm('Log Out?')? window.open('?user=logout','_self'): void(0);"
Hat dieses Skript und danach tought i i gehen, um das Internet zu überprüfen.
Ja, das ist eine alte Bedrohung, aber da es keine ähnliche Version zu geben scheint, dachte ich, ich würde dazu beitragen.
Am einfachsten & einfachste Weg funktioniert auf allen Browsern mit/in jedem Element oder Feld.
Sie können window.open
zu einem anderen Befehl ändern zu laufen, wenn Bestätigung TRUE
, das gleiche mit void(0)
ist, wenn Konformation NULL
oder abgebrochen ist.
Der beste Weg, den ich gefunden habe, ist hier.
HTML CODE
<a href="delete.cfm" onclick="return confirm('Are you sure you want to delete?');">Delete</a>
Fügen Sie diese PARAGRAF HEAD
$(document).ready(function() {
$('a[data-confirm]').click(function(ev) {
var href = $(this).attr('href');
if (!$('#dataConfirmModal').length) {
$('body').append('<div id="dataConfirmModal" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h3 id="dataConfirmLabel">Please Confirm</h3></div><div class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><a class="btn btn-primary" id="dataConfirmOK">OK</a></div></div>');
}
$('#dataConfirmModal').find('.modal-body').text($(this).attr('data-confirm'));
$('#dataConfirmOK').attr('href', href);
$('#dataConfirmModal').modal({show:true});
return false;
});
});
Sie sollten hinzufügen JQuery und Bootstrap für diese zu arbeiten.
<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/>
Sie können diese Aktion auch auf Button ausführen!
- 1. PHP mehr anzeigen System
- 2. PHP-Closure-Quelle anzeigen
- 3. PHP Wordpress-Array anzeigen.
- 4. PHP Datum Immer anzeigen abgelaufen
- 5. mySQL date_format in PHP anzeigen
- 6. php wp-types anzeigen Taxonomie
- 7. MYSQLI - PHP: Produkte anzeigen Seitenausgabe
- 8. JSON AJax PHP kann keine Daten in PHP anzeigen
- 9. PHP: Inhalt nach dem erzwungenen Download anzeigen?
- 10. Bessere Iteration zum Anzeigen von Objekteigenschaften PHP
- 11. Meldung anzeigen, wenn keine Zeilen mysql php
- 12. Kann Bild nicht mit PHP-Skript anzeigen
- 13. Dateien anzeigen Namen von Ordnern in PHP
- 14. Keine Suchergebnisse in PHP anzeigen mysQL
- 15. MAMP Config Hilfe, PHP Fehler anzeigen
- 16. Bild hochladen und anzeigen php mysqli
- 17. Wie PHP auf Live-Site anzeigen
- 18. Werden PHP Fehlerberichte auch mysql Fehler anzeigen?
- 19. anzeigen Umleiten In .. Countdown-Timer PHP
- 20. Können Sie Rückgabetypen in PHP 5.2.5 anzeigen?
- 21. PHP Bild anzeigen BLOB von MySQL
- 22. Kann ein Client serverseitigen PHP-Quellcode anzeigen?
- 23. wie php microtime als min: sek anzeigen?
- 24. get_headers() nicht anzeigen Content-Encoding in PHP
- 25. Anzeigen von Statistiken auf Bild mit PHP
- 26. Anzeigen und Verknüpfen von Fremdschlüssel in PHP
- 27. Mysql Daten zu PHP-Array, dann anzeigen?
- 28. Serverzeit mit php und jquery ajax anzeigen
- 29. Warum Funktion nicht anzeigen Wert in PHP
- 30. Wenn angemeldet Inhalt in PHP anzeigen
Wo genau ist dein Problem? – Bombe
Hinweis: Header