web-dev-qa-db-ja.com

PHP:はい/いいえの確認ダイアログを表示

私のPHPページには1つのMySQLテーブルデータムを削除するリンクがあります。「削除」リンクをクリックすると確認ボックスが表示され、「 「はい」と「いいえ」の2つのボタンがあります。「はい」をクリックするとMySQLテーブルのデータが削除され、「いいえ」をクリックすると何も起こりません。

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

このようなことを確認するには、常にフォーム/投稿ボタンを使用する必要があります。 Javascriptに依存しないでください。 this を読んで、理由を理解してください!

9
Mez

JavaScriptを使用してプロンプトを表示できます。

ここにあります-

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

別の方法

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

警告:このJavaScriptは、ブラウザで最終的なURL-delete.page?id=1に移動するだけで、レコードの削除を停止しません。

8
Nick Clarke

私が通常行うことは、要求メソッドが「GET」の場合に確認フォームを表示し、メソッドが「POST」でユーザーが「はい」オプションを選択した場合にデータを削除する削除ページを作成することです。

次に、削除リンクのあるページで、AJAX=をバイパスしてバイパスする)を使用するonclick関数を追加します(または単に jQuery confirm plugin を使用します確認ページ。

擬似コードの考え方は次のとおりです。

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>

削除リンクのあるページ:

<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

これを試して:

<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

私はそれを行う方法も探していましたが、フォームと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はisset($ _ POST ['del_confirm'])をチェックし、対応するphpスクリプトを呼び出します(データベースアクションなど)。 Voilà、javascriptは必要ありません。 formaction属性を使用すると、削除ボタンは任意のフォームの一部になり、別のフォームアクションを呼び出すことができます(同じページを参照しますが、ボタンを設定します)。

ボタンが押された場合、確認ボタンが表示されます。

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

このスクリプトを作成し、その後、インターネットもチェックしてみました。

最も簡単で最も簡単な方法は、任意の要素またはフィールドを含むすべてのブラウザーで機能します。

確認がTRUEのときに実行する他のコマンドに_window.open_を変更できます。コンフォメーションがNULLであるかキャンセルされた場合、void(0)と同じです。

0
user2702359

<input type="submit" name="submit" value="submit" onclick="return confirm('Are you sure?');"/>ボタンでもこのアクションを実行できます!

0
Abhi Chavda
<a onclick="javascript:return confirm('Are You Confirm Deletion');" href="delete_customer.php?a=<?php echo $row['id']; ?>"  class="btn btn-danger a-btn-slide-text" style="color: white; width:86px; height:37px;" > <span class="glyphicon glyphicon-remove" aria-hidden="true"></span><span><strong></a></strong></span> 
0
Rohit Ghodadra

私が見つけた最良の方法はこちらです。

HTMLコード

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

これを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;
    });
});

これを機能させるには、JqueryとBootstrapを追加する必要があります。

0
Vishal Kumar

PHPこれを行う方法は、php.for GTKDialogs内のダイアログシステムを使用することです。 http://www.kksou.com/php-gtk2/articles/setup- a-dialog-box ---- Part-2 --- simple-yes-no-dialog.php javacriptの方法はおそらく少し簡単ですが、javascriptがオフになっている場合は機能しません(ただし、 JavaScriptが有効になっていることを確認してからこれを追加してください!?)これは、tsvanharenのようなonclickハンドラーを使用するか、ページ内でのしつこいポップアップの代わりにシンプルなテキストダイアログを使用します。

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

プロトタイプを使用します(したがって$()タグとshow()/ hide())。ただし、プロトタイプなしで動作するように簡単に変更できます。

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

繰り返しますが、これはjavascriptなしでは機能しませんが、オプションはほとんどありません。

0
xaddict

何かを削除する場合は、GETではなくPOSTを常に使用する必要があります。したがって、confirm()を使用することはお勧めできません。あなたの状況で行うのは jqModal そして、ポップアップ内にyes/noボタンがあるフォームを表示します。

0
jimyi