0

質問のタイトルがわかりにくいかもしれませんが、これが私が達成しようとしていることです。

私は多くのアイテムで満たされたテーブル内にULを持っています。リストのセルの1つにチェックボックスが含まれています。これらのチェックボックスはすべて配列「itemsDone[]」で名前が付けられています。サイドメニュー(フォームの外)にボタンがあります。このボタンでサーバーにクエリを送信して、チェックされている各チェックボックスの値を更新したいのですが...可能ですか?私は約1時間グーグルをしていて、間違ったキーワードを探しているかもしれません...何か助けていただければ幸いです。

皆さん、ありがとうございました。良い一日を!

編集:PHPページ内にはフォームはまったくありません。

Edit2:これが私が今持っているコードです:

<script type="text/javascript">
$(document).ready(function(){

    $("#saveCheckboxes").click(function(){
        var check = Array();
        var counter= 0;

        $('.itemsDone').each(function(){
            if(this.checked)
            {
                check[counter] = this.value;
                counter+=1;
                console.log(check[counter]);
            }
        })

        $.post('setCommandes.php',{'check[]':check}, function(data) {

            alert(data);

        });      
       return false;
    });
});
</script>

これが私のsetCommandes.phpコンテンツです:

<?php
    include('includes/connexion.php');
    $data = $_POST['check[]'];

    $db_select=mssql_select_db("Test_CommandesWeb");
    foreach ($data as $checks)
    {
        $sql = "UPDATE Commandes SET CommandeFaite='1' WHERE CommandeId='$checks'";
        mssql_query($sql,$connexion);
    }
?>

現在、foreachステートメントでエラー(無効な引数が指定されています)が発生しています。

4

4 に答える 4

1

これは、jQueryを使用して次のように行うことができます。

$('#myButton').click(function(){

    // loop through all checkboxes and check if they're checked
    $('input[type=checkbox]').each(function () {
       if (this.checked) {
           // do something with the checkbox if it's checked, like make ajax call
    });

});

または、PHPでそれを行うことができます。フォーム内に送信ボタンを配置するだけで、送信時に配列itemsDone []に​​アクセスして、チェックされているかどうかを確認します。

于 2012-07-23T19:09:29.747 に答える
1

jQuery.post()を使用してこれを行うことができるはずです

あなたのページがどのように見えるかはわかりませんが、コードは次のようになると思います。


//適切なセレクターを使用するようにしてください

//so, do the following when .class is clicked
$(".class").click(function(){

    //select the value 
    $('select.foo').val();

    //post the data
    $.post('ajax/test.html', function(data) {

        //replace the .result div with the
        //response from the server
        $('.result').html(data);

    });      

});
于 2012-07-23T19:11:56.050 に答える
0

ボタンを送信するには、ボタンがフォーム内にある必要があります。フォームには、ボタンとともに必要なすべての入力を保持する必要があります。

<form method="POST" action="/mark_items_done.php">

  <ul>
    <li>
      <input type="checkbox" name="itemsDone[]" value="1" />
    </li>
    <li>
      <input type="checkbox" name="itemsDone[]" value="2" />
    </li>
    <li>
      <input type="checkbox" name="itemsDone[]" value="3" />
    </li>
    <li>
      <input type="checkbox" name="itemsDone[]" value="4" />
    </li>
    <li>
      <input type="checkbox" name="itemsDone[]" value="5" />
    </li>
    <li>
      <input type="checkbox" name="itemsDone[]" value="6" />
    </li>
  </ul>

  <input type="submit" value="Send Items" />
</form>

PHPページで、を取得できますitemsDone

<?php

$items_done = isset($_POST['itemsDone']) ? $_POST['itemsDone'] : null;

if( $items_done ) {
  // do something with the items
}

フォーム内でボタンを移動したくない場合は、jQueryを使用してこのようなことを行うことができます。

$('#submit_button').click(function() {
  $('#my_form').submit();
});

このソリューションはページをリロードしますが、必要に応じてAJAXを実装するのはそれほど難しくありません。

于 2012-07-23T19:16:00.340 に答える
0

次の手順を検討してください。

1) JavaScript を使用して任意のアクションで任意のフォームを送信できます。この場合、フォームには属性 name または id が含まれている必要があります。

フォーム自体:

<form name="formName" id="formId" method="POST" action="anyformhandler.php">
<input type="checkbox" value="opt1" name="itemsDone[]">
<input type="checkbox" value "opt2" name="itemsDone[]">
</form>

フォーム外の送信者 (単純なテキストなど):

<a href="#" onClick="document.formName.submit()">Submit the form!</a>

また

<a href="#" onClick="document.forms['formId'].submit()">Submit the form!</a>

2) フォームを処理する php ファイルで、データを取得します。

  if ((isset($_POST["itemsDone"])) and (is_array($_POST["itemsDone"]))){
     // just do needed stuff.
    } 

3) データベースの使用時に各チェックボックスの値を更新するには、データベースと対話する必要があります。データベースへのクエリ -> データの保存 -> チェックボックスの値のロード。

必要に応じて質問してください。お役に立てれば ;)

于 2012-07-23T19:23:11.903 に答える