0

各行に次のようなチェックボックスを付けて、ある種のhtmlテーブル(mysqlクエリデータから)を生成しているとしましょう

$display_string = "<form action=\"delete.php\" method=\"post\">";
$display_string .= "<div><input type=\"button\" VALUE=\"Button1\"></div>";
$display_string .= "<div><input type=\"button\" VALUE=\"Button2\"></div>";
while($row = mysql_fetch_array($qry_result)){
    $display_string .= "<tr onmouseover=\"this.className = 'hlt';\" onmouseout=\"this.className = '';\">";
    $display_string .= "<td class='blank'><input type=\"checkbox\" /></td>";
    $display_string .= "<td class='data'>" . $row['first_name'] . "</td>";
    $display_string .= "<td class='data'>" . $row['last_name'] . "</td>";
    $display_string .= "<td class='data'><a href='" . $row['email'] . "'>" . $row['email'] . "</a></td>";
etc...
etc...
$display_string .= "</form>";

さまざまなチェックボックスが選択された後、私が今やりたいことは2つあります。1)たとえば、Button1がクリックされて選択された行が削除されたときにdelete.phpを呼び出します。2) Button2 がクリックされたときに呼び出される他の php ファイル

各チェックボックスに名前を付けるために使用できる $row['ID'] にアクセスできます


更新 以下は私の目的のために働くようです

私は次のhtmlを持っています-

<form name='myForm' method=\"post\" >
<input type=\"submit\" onClick=\"deleterow(document.myForm)\" VALUE=\"Delete ROWs\">

while($row = mysql_fetch_array($qry_result)){
    <input type=\"checkbox\" name='rows' value=" .$row['ID']. "/>

Javascriptは次のとおりです-

<script language=\"javascript\" type=\"text/javascript\">
function deleterow(form){

    if (!confirm(\"Are you sure you want to delete?\")) return false;

    var queryString = \"?ID=\";

    for (var i = 0; i < document.myForm.rows.length; i++) {
        if (document.myForm.rows[i].checked) {
            ID = document.myForm.rows[i].value;
            ID = ID.slice(0, -1);
            queryString += ID;
            queryString += \"-\";
        }
    }
    queryString = queryString.slice(0, -1);

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject(\"Msxml2.XMLHTTP\");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject(\"Microsoft.XMLHTTP\");
            } catch (e){
                // Something went wrong
                alert(\"Your browser broke!\");
                return false;
            }
        }
    }

    var ajaxRequest;  // The variable that makes Ajax possible!
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            var ajaxDisplay = document.getElementById('ajaxDiv');
            ajaxDisplay.innerHTML = ajaxRequest.responseText;
        }
    }

    ajaxRequest.open(\"GET\", \"delete_row.php\" + queryString, true);
    ajaxRequest.send(null); 
    confirm('Delete successful!');
}

その後、delete_row.php を使用すると、mysql クエリで必要なことをすべて行うことができ、新しいデータを送り返して表示することができます。

<div id='ajaxDiv'></div>
4

2 に答える 2

1

明確なコードを取得するには、2 つの複数のアクションを実行する 2 つのボタンを避けることをお勧めします。代わりに、単純な JavaScript メソッドを使用して、送信されたフォームにパラメーターを追加し、押されたボタンを取り除きます。

<script type="text/javascript">
    function submitForm( act ){
         $('#act').val(act);
         $('#myForm').submit();
}

</script>

<form id="myForm" ... >
<input type="hidden" id="act" value="" />

<button onClick="submitForm(1)">1</button>
<button onClick="submitForm(2)">2</button>
</form>

これは単なる例です (jquery を使用)。

2 番目の回答 (チェックボックス) について:

<input type="checkbox" name="selectedboxes[]" value="someIdHere" />

フォームが送信されると、チェックされたチェックボックスを取得するパラメーターとして配列「selectedboxes」を受け取ります。

于 2012-06-20T12:52:27.397 に答える
1

Form アクションを変更することもできます。たとえば、BUTTON 1 をクリックすると、アクションが DELETE.PHP に変更されます。次の投稿をご覧ください。

javascript/jqueryでフォームの動作を変更する

彼らはJQueryを使用しており、その方法について複数の回答があります

于 2012-06-20T12:52:36.727 に答える