3

ユーザーが提供した入力を mysql データベースのチェックボックスの形で検索する方法を知りたいです。しかし、その前に、チェックされたフィールドを JavaScript 配列/文字列に取得して、URL で PHP に渡すことができるようにする必要があります。

<form>
    <input type="checkbox" id="interests" name="interests" value="Food">`
    <input type="checkbox" id="interests" name="interests" value="Movies">`
    <input type="checkbox" id="interests" name="interests" value="Music">`
    <input type="checkbox" id="interests" name="interests" value="Sports">`
</form>

テキストや選択入力などの他のフォーム要素については上記を実行できますが、チェックボックスについてはどうすればよいかわかりません。助けてください。ありがとう

4

4 に答える 4

3

それよりも

<form> 
<input type="checkbox" id="interests" name="interests[]" value="Food"> 
<input type="checkbox" id="interests1" name="interests[]" value="Movies"> 
<input type="checkbox" id="interests2" name="interests[]" value="Music"> 
<input type="checkbox" id="interests3" name="interests[]" value="Sports">

name 属性を からinterestsに変更してinterests[] 、問題を解決してください。私が属性について間違っている場合は、申し訳ありませんが、PHP では少し実践的ではありませんが、私はかなり確信しています。JavaScriptで何もする必要はありません。この方法の方がはるかに簡単です。もちろん、簡単にしたくない場合は...

データベースでの検索に関する最初の質問に関しては、なぜそうする必要があるのか​​ わかりません?? チェックボックスの場合は、それがどうあるべきかを正確に知っているので、それを作成して、次のようにデータベースに挿入します。

INSERT INTO your_table values(user_id_i_guess, interests...);

要点はわかりますか?

于 2012-06-13T07:27:21.427 に答える
2

コードの問題

  • id複数の要素に同じを使用しないでください

  • チェックボックスの名前をに変更interests[]

jQuery

var vals = [];

$(':checkbox:checked[name^=interests]').val(function() {
   vals.push(this.value);
});

配列をカンマ区切りの文字列に変換したい場合は、試してください

val.join(',');

ノート

$(':checkbox:checked[name^=interests]')セレクターは、チェックされたすべてのチェックボックスを選択しnameますinterests

于 2012-06-13T07:38:28.990 に答える
0
  1. チェックボックスには異なる ID を使用する必要があります (要素の ID は一意である必要があります)
  2. チェックボックスの名前を Interest[] にしてフォームを送信 - サーバーでは、配列 $_POST['interests'] または $_GET['interests'] を使用できます
于 2012-06-13T07:24:20.880 に答える
0

フォームに名前があると仮定すると、

var c = [],
    els = document.forms.formName.elements,
    len = els.length;

for ( var i = 0; i < length; i++ ) {

    if ( els[ i ].type === 'checkbox' ) {

        // If you want to add only checked checkboxes, you can use:
        if ( els[ i ].checked ) c.push( els[ i ].value );

        // If you don't care, just use:
        c.push( els[ i ].value );
    }
}

console.log( c ); // Array of the checkboxes values

古いブラウザーを気にしない場合は、mapよりクリーンなコードを使用できます。

var c = [].map.call( document.forms.formName.elements, function( el ) {
    if ( el.type === 'checkbox' ) {
        if ( el.checked ) return el.value;
    }
} );

jQuery をお持ちの場合は、コードを次に示します。

var c = $( ':checkbox:checked' ).map( function() {
    return $( this ).val();
} );

console.log( c ); // Array of the checkboxes values

// To be more precise (so, more performant), you can use the following selector:
$( ':checkbox:checked', document.forms.formName.elements )
于 2012-06-13T07:30:28.627 に答える