2012-02-12 3 views
1

チェックボックスの値をカンマ区切りの文字列としてデータベースに挿入する際に問題があります(これは通常、悪いスタイルと見なされますが、必要とされている)。POSTメソッドを使用してチェックボックスデータをmysqlデータベースに挿入します

私は、その後、私は、データベースに接続し、

$q16 = implode(",",$_POST['q16[]']); 

値の配列を作成するために、PHPコードのこの部分を使用

<div id="page16" class="page"> 
      <p style="font-weight: bold; width: 55%;"><a id="q16_qtext">*</a></p> 
      <p style="font-style: italic;">Vælg venligst de (højst) 3 primære årsager (i alt).</p> 
      <p style="font-style: italic;">Af økonomiske årsager:</p> 
      <input type="checkbox" name="q16[]" value="1" id="num161">For dyrt i forhold til udbyttet for eleverne<br> 
      <input type="checkbox" name="q16[]" value="2" id="num162">For dyrt i forhold til andre omkostninger (bøger, efteruddannelse af lærere osv.)<br> 
      <input type="checkbox" name="q16[]" value="4" id="num164">Andre økonomiske årsager<br> 
      <p style="font-style: italic;">Andre årsager:</p> 
      <input type="checkbox" name="q16[]" value="5" id="num165">Pga. skolesammenlægning eller en anden større ændring<br> 
      <input type="checkbox" name="q16[]" value="6" id="num166">Skolen havde/har ikke bemanding til det<br> 
      <input type="checkbox" name="q16[]" value="7" id="num167">Der var for tidskrævende i forhold til udbyttet (for eleverne i forhold til pensum)<br> 
      <input type="checkbox" name="q16[]" value="8" id="num168">Der var ikke længere opbakning til det i skoleledelsen (ikke økonomisk)<br> 
      <input type="checkbox" name="q16[]" value="9" id="num169">Der var ikke længere opbakning til det blandt lærerne<br> 
      <input type="checkbox" name="q16[]" value="10" id="num1610">Der var ikke længere opbakning til det blandt elever/forældre<br> 
      <input type="checkbox" name="q16[]" value="11" id="num1611">Andet.&nbsp;&nbsp;&nbsp;&nbsp; Angiv i så fald primært hvad: &nbsp;&nbsp;<a style="text-align: center;"></a><input type="text" name="q16extra" value="" id="num89"><br> 
      <input type="checkbox" name="q16[]" value="12" id="num1612">Ved ikke<br> 
      <p style="bottom:5px;"><input style="width: 150px; height: 30px;" type="button" class="all" id="B19" value="tilbage" onClick="showPreviousLayer()"><input style="width: 150px; height: 30px;" type="button" class="all" id="C20" value="fortsæt" onClick="checkAnswersSixteen()"></p>  
     </div> 

ここではhtmlファイルのコードスニペットを持っており、列と値を「表」に挿入します。もちろん、他の多くの列と値が挿入されていて、これらは機能します!この問題は、insertステートメントではなく、おそらくimplodeメソッドであるようです。

私はecho($ q16)を実行しようとしました。 しかし、それはちょうど空であるようです。

問題の原因を知っている人は誰ですか?あなたが他の情報が必要な場合は私に知らせてください:)

答えて

2

私はあなたがそれを配列

$q16 = implode(",",$_POST['q16']); 
+0

ありがとうございます!本当に問題を解決しました。だから、HTMLの名前の余分な部分は、名前のすべての部分ではなく、それは配列のための単なる指標ですか? – PNS

+0

@PNSあなたは正しいです。 '[]'は名前の一部ではありません。しかし、 'q16'変数はPHPで配列として扱われ認識されるべきです。 –

0

に変換されていますとしてだけで$_POST['q16']を使用しようとすることをお勧めだけにチェック入力が渡されることに注意してください。私は3つの最初のボックスと最後の1をチェックするのであれば、私の例ファイルの出力は次のようになります。ここで

Array 
(
    [q16] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 4 
      [3] => 12 
     ) 

    [q16extra] => e 
) 
----1,2,4,12 

としているファイルの例:

<div id="page16" class="page"> 
    <p style="font-weight: bold; width: 55%;"><a id="q16_qtext">*</a></p> 
    <p style="font-style: italic;">Vælg venligst de (højst) 3 primære årsager (i alt).</p> 
    <p style="font-style: italic;">Af økonomiske årsager:</p> 
    <form action="form.php" method="post"> 
    <input type="checkbox" name="q16[]" value="1" id="num161">For dyrt i forhold til udbyttet for eleverne<br> 
    <input type="checkbox" name="q16[]" value="2" id="num162">For dyrt i forhold til andre omkostninger (bøger, efteruddannelse af læ rere osv.)<br> 
    <input type="checkbox" name="q16[]" value="4" id="num164">Andre økonomiske årsager<br> 
    <p style="font-style: italic;">Andre årsager:</p> 
    <input type="checkbox" name="q16[]" value="5" id="num165">Pga. skolesammenlægning eller en anden større ændring<br> 
    <input type="checkbox" name="q16[]" value="6" id="num166">Skolen havde/har ikke bemanding til det<br> 
    <input type="checkbox" name="q16[]" value="7" id="num167">Der var for tidskrævende i forhold til udbyttet (for eleverne i forhold til pensum)<br> 
    <input type="checkbox" name="q16[]" value="8" id="num168">Der var ikke længere opbakning til det i skoleledelsen (ikke økonomisk) <br> 
    <input type="checkbox" name="q16[]" value="9" id="num169">Der var ikke længere opbakning til det blandt lærerne<br> 
    <input type="checkbox" name="q16[]" value="10" id="num1610">Der var ikke længere opbakning til det blandt elever/forældre<br> 
    <input type="checkbox" name="q16[]" value="11" id="num1611">Andet.&nbsp;&nbsp;&nbsp;&nbsp; Angiv i så fald primært hvad: &nbsp;&n bsp;<a style="text-align: center;"></a> 
    <input type="text" name="q16extra" value="e" id="num89"><br> 
    <input type="checkbox" name="q16[]" value="12" id="num1612">Ved ikke<br> 
    <p style="bottom:5px;"> 
     <input style="width: 150px; height: 30px;" type="button" class="all" id="B19" value="tilbage" onClick="showPreviousLayer()"> 

    <input style="width: 150px; height: 30px;" type="submit" class="all" id="C20" value="fortsæt" onClick="checkAnswersSixteen()"></p > 
    </form> 
    </div> 


    <?php 
    print '<pre>'; 
    print_r($_POST); 
    print '----'; 
    print_r(implode(",", $_POST['q16'])); 
    print '</pre>'; 
    ?> 

差が要素にあり、最後のphp - printステートメント

関連する問題