2009-08-06 15 views
17

Moja strona PHP zawiera link do usunięcia jednego punktu odniesienia bazy danych MySQL. Chcę, aby było tak, że po kliknięciu linku "usuń" powinno pojawić się okno z potwierdzeniem i powinno zostać wyświetlone pytanie "czy jesteś pewien, że chcesz usunąć?", Z dwoma przyciskami: "tak" i "nie" . Kiedy klikam "tak", chcę usunąć dane tabeli MySQL, a gdy kliknę "nie", nic nie powinno się wydarzyć.PHP: Pokaż okno dialogowe potwierdzenia Yes/no

+0

Gdzie jest dokładnie twój problem? – Bombe

+2

Podpowiedź: Nagłówek

Odpowiedz

47
<a href="http://stackoverflow.com" 
    onclick="return confirm('Are you sure?');">My Link</a> 
+1

najprostszy i najbardziej skuteczny sposób, aby to zrobić, działa jak urok!, Dzięki. – Bhimbim

+2

Pracowałem nad frameworksem Yii, i jakoś widząc, jak to zrobiłem, również uświadomiłem sobie to na Yii, '' options '=> array (' onclick '=>' return confirm ("Czy na pewno?");) ' – Gjordis

8

Można użyć JavaScript do monit:

Znalazłem to tutaj - 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> 

Innym sposobem

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

Warning: ta JavaScript nie zatrzyma rekordy z usuniętych, jeśli tylko n avigate do końcowego URL - delete.page?id=1 w przeglądarce

0

Sposób PHP robić to będzie za pomocą systemu dialogowego wewnątrz php.for przykład GTKDialogs: http://www.kksou.com/php-gtk2/articles/setup-a-dialog-box---Part-2---simple-yes-no-dialog.php javacript sposobem jest prawdopodobnie nieco łatwiejsze , ale pamiętaj, że gdy javascript jest wyłączony, to nie działa (chyba, że ​​zaznaczysz javascript aby był włączony, a następnie dodasz to !?) Może to być z handler'em onclick, takim jak tsvanharen, lub z prostym oknem dialogowym na stronie zamiast dokuczliwego wyskakującego okienka.

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

Używam prototypu (stąd znacznik $() i show()/ukryj()). ale możesz łatwo zmienić go, aby działał bez prototypu:

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

To znowu nie działa bez javascript, ale prawie nie ma opcji.

+1

Nawet jeśli phpgtk został zainstalowany na serwerze (co jest nonsensem, ponieważ wymaga interfejsu graficznego, który nigdy nie jest instalowany na serwerach z systemem Linux), otwierałoby to okno dialogowe na serwerze, a nie w przeglądarce ani na maszyna użytkownika: nie możesz, z serwera, otworzyć okna GTK na kliencie –

9

Powinieneś zawsze używać przycisku formularza/post, aby potwierdzić coś takiego. Nigdy nie polegaj na JavaScript. Przeczytaj this, aby zrozumieć, dlaczego!

+3

Okno dialogowe potwierdzenia nie ma nic wspólnego z problemem w twojej historii. Okno dialogowe potwierdzenia to funkcja użyteczności, która zapobiega przypadkowemu kliknięciu przycisku usuwania. W twoim linku używali javascript do uwierzytelniania, co jest naprawdę głupią rzeczą. –

0

Jeśli usuwasz coś, powinieneś zawsze używać POST, a nie GET, więc używanie metody confirm() jest złym pomysłem. Co robię w twojej sytuacji, użyj modalnego wyskakującego okienka jak jqModal i wyświetl formularz z przyciskami tak/nie wewnątrz wyskakującego okienka.

+0

Jak "potwierdzenie()" uniemożliwia używanie POST? –

2

Zazwyczaj tworzę stronę usuwania, która pokazuje formularz potwierdzenia, jeśli metoda żądania to "GET" i usuwa dane, jeśli metoda była "POST", a użytkownik wybrał opcję "Tak".

Następnie na stronie z linkiem do usuwania dodam funkcję onclick (lub po prostu użyj jQuery confirm plugin), która wykorzystuje AJAX do publikowania linku, z pominięciem strony z potwierdzeniem.

Oto pomysł w pseudo kod:

usunąć.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> 

Strona z usuwania linku:

<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> 
15
<input name="_delete_" type="submit" value="Delete" onclick="return confirm('Are you sure?')"> 
+0

To najprostsza odpowiedź, dzięki. –

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

Czy ten skrypt, a potem myślałam idę sprawdzić internet też.
Tak, to jest stare zagrożenie, ale ponieważ wydaje się, że nie ma podobnej wersji, myślałem, że przyczynię się do tego.
Najprostszy sposób działa na wszystkich przeglądarkach z/w dowolnym elemencie lub polu.

można zmienić window.open do jakiegokolwiek innego polecenia do uruchomienia gdy potwierdzenie jest TRUE, samo z void(0) jeśli konformacja jest NULL lub anulowane.

0

Najlepszy sposób, jaki znalazłem, jest tutaj.

kod HTML

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

dodać do HEAD SEKCJI

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

Należy dodać jQuery i Bootstrap to zadziałało.

0

<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/> możesz wykonać tę akcję również na przycisku!

Powiązane problemy