2016-11-08 14 views
3

私はいくつかのチェックボックスを持つhtmlフォームを持っています。 My form with 4 checkboxPHP - htmlのチェックボックスからsqlを選択

私は自分のチェックボックスを含めるSQLを記述したいと思います。私のデータベース上の例えば


カラム:Stato
オプション:0,1,2,3

  • 0 =アペルト、
  • 1 = Stampato 、
  • 2 = Bloccato、
  • 3 =❤(お気に入り)、

これらがすべて選択されている場合は、私にすべての種類を表示する必要があります。

どのようにsqlを書くことができますか?

これは私のチェックボックスである:

<div id="radioset"> 
     <input type="checkbox" id="radio1" name="aperto" checked="checked"><label for="radio1">Aperto</label> 
     <input type="checkbox" id="radio2" name="stampato" checked="checked"><label for="radio2">Stampato</label> 
     <input type="checkbox" id="radio3" name="bloccato" checked="checked"><label for="radio3">Bloccato</label> 
     <input type="checkbox" id="radio4" name="favorite" checked="checked"><label for="radio4">&#9829</label> 
</div> 

そして、これが私のPHPのSQLです:

$input=$_POST['input']; 
$id=$_POST['id']; 
$tipo=$_POST['tipo']; 
$numero1=$_POST['numero1']; 
$numero2=$_POST['numero2']; 
$data1=date('d/m/Y', strtotime($_POST['from']));; 
$data2=date('d/m/Y', strtotime($_POST['to']));; 

$sql="SELECT [Id Ord] AS [ID], [Tipo Ord] AS [Tipo], [N Ord] AS [Numero], [Data Ord] AS [Data], [Ragione Sociale], [Indirizzo], [TotImp] AS [IMPORTO TOTALE], [TotIva] AS [IMPORTO IVA] FROM [Ordini] WHERE [Id Ord] LIKE '$id' OR [Tipo Ord] LIKE '$tipo' OR [Data Ord] BETWEEN #$data1# AND #$data2#"; 

$rs = $con->execute($sql); 

ありがとう!あなたがチェックボックスの配列を必要とする

+0

@AnilMaurya意味が分かりません –

答えて

0

まず任意の助けが必要な場合を教えてください(専門用語を使用していません」ラジオ」 - ラジオボタン)がかなり異なっている、と彼らはデータベースレコードに一致するように、値を変更します!

<div id="checkboxes"> 
    <input type="checkbox" id="checkbox1" name="options[]" value="0" checked="checked"><label for="checkbox1">Aperto</label> 
    <input type="checkbox" id="checkbox2" name="options[]" value="1" checked="checked"><label for="checkbox2">Stampato</label> 
    <input type="checkbox" id="checkbox3" name="options[]" value="2" checked="checked"><label for="checkbox3">Bloccato</label> 
    <input type="checkbox" id="checkbox4" name="options[]" value="3" checked="checked"><label for="checkbox4">&#9829</label> 
</div> 

次に、あなたがそれらをループするために、各ループのために使用することができ、およびオプションのI場合現在の(ボックスがチェックされなかった場合は、チェックボックスの値がさえポストバックには存在しません)、検索でそのオプションを含めるようにSQLのビットを追加します。

$optionsSQL = ""; 

foreach($_POST["options"] as $index => $option) { 
    if ($optionsSQL == "") $optionsSQL = "AND Stato IN ("; //if it's the first detected option, add the IN clause to the string 
    $optionsSQL .= $option.","; 
} 

//trim the trailing comma and add the closing bracket of the IN clause instead 
if ($optionsSQL != "") 
{ 
    $optionsSQL = rtrim($optionsSQL, ","); 
    $optionsSQL .= ")"; 
} 

続いて最後に$optionsSQL文字列を追加あなたのお問い合わせ:

$sql="SELECT [Id Ord] AS [ID], [Tipo Ord] AS [Tipo], [N Ord] AS [Numero], [Data Ord] AS [Data], [Ragione Sociale], [Indirizzo], [TotImp] AS [IMPORTO TOTALE], [TotIva] AS [IMPORTO IVA] FROM [Ordini] WHERE ([Id Ord] LIKE '$id' OR [Tipo Ord] LIKE '$tipo' OR ([Data Ord] BETWEEN #$data1# AND #$data2#))".$optionsSQL; 

NBこれは簡単な例なので、SQLインジェクションを防ぐためにここでは取り組んでいません。悪意のあるユーザーがオプション値を改ざんし、問題のあるデータを送信しようとする可能性があることに注意する必要があります。 SQL文で使用する前に、各オプション値を検証する必要があります。

+0

拳のもの:「radio1」[...]はjQueryスタイルに属しているので、私はそれを取り除くとスタイルを失います。それを問題なく維持できますか? –

+0

はい、あなたはそれを保つことができます、それはラジオボタンが何か他のものなので意味的に間違っています。あなたがそれを既存のスタイルシートにリンクしようとしていたことはわかりませんでした。 PHPに影響を与えずに変更を元に戻すことができます。 – ADyson

+0

そして、「Aperto」、「Stampato」、「Bloccato」、「Favorite」を「0」、「1」、「2」、「3」にするにはどうすればいいですか?私のデータベース "Stato"には "0"、 "1"、 "2"、 "3"があるからです。 –

0

、名前の

<div id="radioset"> 
    <input type="checkbox" id="radio1" name="options[]" value="aperto" checked="checked"><label for="radio1">Aperto</label> 
    <input type="checkbox" id="radio2" name="options[]" value="stampato" checked="checked"><label for="radio2">Stampato</label> 
    <input type="checkbox" id="radio3" name="options[]" value="bloccato" checked="checked"><label for="radio3">Bloccato</label> 
    <input type="checkbox" id="radio4" name="options[]" value="favorite" checked="checked"><label for="radio4">&#9829</label> 
</div> 

[]あなたが取得します$ _POSTのような多次元配列[ "オプション"] =配列();あなたが値を取得するために、これを行うことができ提出

foreach($_POST["options"] AS $index => $option) { 
    // example of print all checked boxes 
    print $option; 

} 

あなたは配列としてあなたのチェックボックスを定義し、

+0

この時点で、 '$ option'は値として" aperto "や" stampato "や" bloccato "や" favorite "を持っています。本当ですか? –

+0

どうすれば "0"、 "1"、 "2"、 "3"にすることができますか?ので、私のデータベースでは、私は0,1,2,3。 –

+1

@MarcoBagiacchi値を0,1,2,3に変更することができます。 値は必要なものにすることができ、ユーザーの解釈のためにラベルを使用してラベルを使用することができます。 – c42759

関連する問題