PHP: Show evet / hayır onay iletişim

5 Cevap php

Benim PHP sayfası bir MySQL tablo verisini silmek için bir bağlantı vardır. 'Evet' ve 'hayır' Ben ben 'sil' bağlantısını tıkladığınızda bir onay kutusu görünür ve iki düğme ile, "? Silmek istediğiniz, emin misin" sormalısınız şekilde olmak istiyorum . Evet tıkladığınızda, ben MySQL tablonun verileri silmek için ve ben hiçbir tıkladığımda, hiçbir şey gerçekleşmesi gerekir istiyorum.

5 Cevap

Her zaman böyle bir şey onaylamak için bir form / post düğmesini kullanmanız gerekir. Javascript güvenmeyin. this anlamak için okuyun!

Size soracak için JavaScript kullanabilirsiniz:

Example - burada bulundu

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

Başka bir yol

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

Warning: Bu JavaScript onlar sadece son URL'ye giderseniz silinmeye kayıtları durmayacak - tarayıcıda delete.page id = 1?

Ne genellikle bunu istek yöntemi "GET" ise bir onay formu gösterir ve verileri silen bir silme sayfası oluşturmak olduğunu yöntemi "POST" olduğunu ve kullanıcı "Evet" seçeneğini seçerseniz.

Onay sayfasını atlayarak, bağlantı göndermek için AJAX kullanır o zaman, silme bağlantı ile sayfa, ben bir onclick fonksiyonu eklemek (ya da sadece jQuery confirm plugin kullanın).

İşte sözde kod fikir:

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>

Silme linki ile Sayfa:

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

The PHP way of doing this would be using a dialog system inside php.for example GTKDialogs: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box---Part-2---simple-yes-no-dialog.php The javacript way is probably a bit easier, but remember when javascript is turned off, this does not work (except if you check javascript to be enabled and then add this!?) This could be with a onclick handler like tsvanharen posted, or with a simple text dialog inside the page instead of a nagging popup.

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

Ben prototip kullanmak (dolayısıyla $ () etiketi ve show () / hide ()) bunun için. ancak kolayca prototip olmadan çalışmak için değiştirebilirsiniz:

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

Yine, bu javascript olmadan çalışmaz, ama neredeyse hiçbir seçenek yok.

Eğer bir şey silme ediyorsanız, her zaman çok () kötü bir fikir olduğunu onaylamak kullanarak, GET POST kullanmak gerekir. Ne senin durumda ne jqModal gibi kalıcı bir popup kullanmak ve açılır iç evet / hayır düğmeleri ile bir formu görüntülemek olduğunu.