web-dev-qa-db-fra.com

PHP: Afficher la boîte de dialogue de confirmation oui/non

Ma page PHP contient un lien permettant de supprimer un datum de table MySQL. Je veux que ce soit tel que, lorsque je clique sur le lien "supprimer", une boîte de confirmation s'affiche et demande "Êtes-vous sûr, vous voulez supprimer?", Avec deux boutons: "oui" et "non" . Lorsque je clique sur oui, je souhaite supprimer les données de la table MySQL et lorsque je clique sur non, rien ne devrait se produire. 

18
user151715
<a href="http://stackoverflow.com" 
    onclick="return confirm('Are you sure?');">My Link</a>
49
Tim S. Van Haren
<input name="_delete_" type="submit" value="Delete" onclick="return confirm('Are you sure?')">
17
user1588255

Vous devez toujours utiliser un bouton formulaire/publication pour confirmer quelque chose comme ceci. Ne comptez jamais sur Javascript. Lisez ceci pour comprendre pourquoi!

9
Mez

Vous pouvez utiliser JavaScript pour vous inviter:

Trouvé ceci ici - Exemple

<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>

Autrement

<a href="delete.page?id=1" onclick="return confirm('Are you sure you want to delete?')">Delete</a> 

Warning: Ce JavaScript n'empêchera pas la suppression des enregistrements s'ils se contentent de naviguer vers l'URL finale - delete.page?id=1 dans leur navigateur

8
Nick Clarke

Ce que je fais habituellement, c’est de créer une page de suppression qui affiche un formulaire de confirmation si la méthode de demande est "GET" et supprime les données si la méthode est "POST" et que l’utilisateur a choisi l’option "Oui".

Ensuite, dans la page avec le lien de suppression, j'ajoute une fonction onclick (ou utilisez simplement le plugin jQuery confirm ) qui utilise AJAX pour poster sur le lien, en ignorant la page de confirmation.

Voici l'idée dans le pseudo-code:

delete.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>

Page avec lien de suppression:

<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>
3
Matthew Crumley

Essaye ça:

<td>
    <a onclick="return confirm(\'Are you sure?\');" href="'.base_url('category/delete_category/'.$row->category_id).'" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i> Delete Coupon</a>
</td>
1
Dai Zheng

Je cherchais également un moyen de le faire et je l'ai compris comme ceci en utilisant des formulaires et l'attribut formaction:

<input type="submit" name="del_something" formaction="<addresstothispage>" value="delete" />
<?php if(isset($_POST['del_something'])) print '<div>Are you sure? <input type="submit" name="del_confirm" value="yes!" formaction="action.php" />
<input type="submit" name="del_no" value="no!" formaction="<addresstothispage>" />';?>

action.php vérifierait isset ($ _ POST ['del_confirm']) et appellerait le script php correspondant (pour les actions de base de données ou autre). Voilà, pas de javascript nécessaire. À l'aide de l'attribut formaction, le bouton de suppression peut faire partie de n'importe quel formulaire et appeler une action de formulaire différente (par exemple, renvoyer à la même page, mais avec le bouton défini).

Si le bouton a été appuyé, les boutons de confirmation s'afficheront.

0
elk
onclick="return confirm('Log Out?')? window.open('?user=logout','_self'): void(0);"

Est-ce que ce script et après je pensais aller consulter Internet aussi .
Oui, c’est une vieille menace, mais comme il ne semble pas y avoir de version similaire, j’ai pensé que je contribuerais .
Le moyen le plus simple et le plus simple fonctionne sur tous les navigateurs avec/dans n'importe quel élément ou champ.

Vous pouvez remplacer window.open par une autre commande à exécuter lorsque la confirmation est TRUE, identique à void(0) si la conformation est NULL ou annulée.

0
user2702359

<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/>Vous pouvez également effectuer cette action sur Button!

0
Abhi Chavda

Le meilleur moyen que j'ai trouvé est ici. 

CODE HTML

<a href="delete.cfm" onclick="return confirm('Are you sure you want to delete?');">Delete</a>

AJOUTEZ CETTE SECTION À HEAD SECTION

$(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;
    });
});

Vous devez ajouter Jquery et Bootstrap pour que cela fonctionne.

0
Vishal Kumar

Pour ce faire, PHP utiliserait un système de dialogue dans php.Par exemple, GTKDialogs: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box --- Partie-2 --- simple-oui-non-dialog.php La méthode javacript est probablement un peu plus facile, mais rappelez-vous que, si javascript est désactivé, cela ne fonctionne pas (sauf si vous cochez javascript pour être Cela peut être avec un gestionnaire onclick comme tsvanharen posté, ou avec une simple boîte de dialogue dans la page au lieu d’un pop-up persistant.

<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>

J'utilise prototype (d'où la balise $ () et le show ()/hide ()) pour cela. mais vous pouvez facilement le changer pour qu'il fonctionne sans prototype:

<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>

Encore une fois, cela ne fonctionne pas sans JavaScript, mais presque aucune option ne fonctionne.

0
xaddict

Si vous supprimez quelque chose, vous devez toujours utiliser POST et non GET. L'utilisation de confirm () est donc une mauvaise idée. Ce que je fais dans votre cas est d’utiliser un popup modal comme jqModal et d’afficher un formulaire avec des boutons Oui/Non dans le popup.

0
jimyi