2017-02-09 14 views
0

フォームからデータをMySQL DBに挿入しようとしています。下記の例のようなhtmlテーブルがあります。PHP insert MySql

テーブル例

チェックボックス|ドロップダウン

チェックボックス|ドロップダウン

チェックボックス|ドロップダウン

チェックボックス|ドロップダウン

すべてのテーブルとコントロールがdbから読み込まれています。私はチェックボックスがチェックされているドロップダウンから値を挿入したいだけです。これまでのところ、最初のドロップダウンが空でない場合、すべてのチェックボックスが正常に機能する場合にのみ機能します。

挿入のためのPHPコード:

 <?php 
      //$c = checkbox array which is generated from mysql db data 
       $c = $_POST['check']; 
//$n = dropdown array which is generated from mysql db data 
       $n = $_POST['nivel']; 
     //count the amount of checkboxes checked to use in for loop 
       $camount = count($c); 
     //count the amount of dropdowns which have a value selected should be equal to $camount but it is not 
       $namount = count($n); 
        ?> 



       <?php 



          for($i = 0; $i <$camount; $i++) 
          { 

              //insert row into table for each checked checkbox 
              $d = new Disciplina_Estudiante(); 
              $d->idestudiante = $estudiante->id; 
              $d->iddisciplina =$c[$i]; 

    //this is supposed to get the values from the dropdowns that are not empty 
              $d->idnivel = $n[$i]; 


              $d->save();    
          } 


      html markup: 
      <div class="col-md-4"> 

            <table class="table table-bordered table-condensed table-hover" > 
            <thead style="background-color: #f707f3;"> 
             <tr> 
             <th>Disclipina</th> 
             <th>Costo</th> 
             <th>Grupo</th> 


             </tr> 
            </thead> 
            <tbody> 
            <?php foreach ($disciplinas as $disciplina) : ?> 

            <tr> 


              <td> <input type="checkbox" id="check" value="<?php echo $disciplina->id;?>" name="check[]"><?php echo $disciplina->nombre;?></input></td> 
              <td> <?php echo $disciplina->costo;?></td> 
              <td><select class="form-control" id="nivel" name="nivel[]" > 
              <option selected value="" readonly>Seleccionar un Nivel</option>        
              <?php foreach ($niveles as $nivel) : ?> 


              <option value="<?php echo $nivel->id; ?>"> <?php echo $nivel->nombre_nivel."<br>";?></option> 




              <?php endforeach; ?> 
               </select> 
               </td> 


            </tr> 
            <?php endforeach ;?> 

            </tbody> 

            </table> 
            <br> 
              <input type="submit" class="btn btn-primary pull-right" name="submit" value="Aceptar"></input> 


            </div> 

任意の助けが初めてポスティングをいただければ幸いです...してくださいLMKこれは意味をなさない場合

+2

これは意味をなさない。手元の問題だけに焦点を当てたコードの量を最小限に抑えることができますか? – tadman

+0

これは良いですか? –

+0

ブランクの束を削除したり、関連性のないインラインCSSを削除したりするのは、手元の問題に集中していることを示すために役立ちます。デバッグ時に行う最も重要なことは、問題の原因となっていないすべてのものを削除してから、その問題に絞り込むことです。 (また、yikes、inline CSS?Please、stylesheet that!) – tadman

答えて

0

あなたの問題があることがある唯一のチェックボックスつつありますユーザが値を選択したかどうかにかかわらず、selectボックスのうちのアレイに、すべてが渡されます。 $check[]配列のインデックスi$nivel[]配列のインデックスiに一致するように、あなたがこのケースで何ができるか

name属性のインデックスあなたのチェックボックスです。これと同じように:

<input type="checkbox" id="check" value="<?php echo $disciplina->id; ?>" name="check[0]" />(道ことでinput sが自動閉鎖要素です。)選択に対応するであろう

<select class="form-control" id="nivel" name="nivel[0]" >

が続いそうのようなforeachのためにあなたのループを変更します。最後の注意として

foreach ($c as $i => $checkbox) { 
    $d = new Disciplina_Estudiante(); 
    $d->idestudiante = $estudiante->id; 
    $d->iddisciplina = $checkbox; 

    $d->idnivel = $n[$i]; 
    $d->save(); 
} 

くださいインデントあなたのコード。

+0

**ありがとうございました**私の問題を解決しました。私はちょうどその方法で私の入力を閉じるのが好きです。個人的な好みだと思います。 –

+0

歓迎です:) [HTML5仕様](https://www.w3.org/TR/html5/syntax.html#void-elements)では、空白要素に終了タグを追加しないでください「入力」のように...個人的な好みの問題ではありません。 – jake2389

+0

@ifigs XHTMLは、HTML5とは表面的には似ていますが、等価ではありません。学習している場合は、[validator(https://validator.w3.org)を使用してコードを正しく書いていることを確認してください。ブラウザがあなたのHTMLを正しく解釈しない場合、個人的な好みが障害になります。 – tadman