2016-06-21 8 views
0

配列を使用してデータを動的に挿入するためにいくつかのコードを試しましたが、同じ行に同じデータが挿入されているという問題があります。 "whileループ"内でチェックされた値を無視して挿入しました。私はこのアレイコンセプトを初めて使用しています。データベースへのデータの動的挿入

の.php

<form id="form" name ="form" method = "POST" action="move_ppl.php" class="wizard-big" autocomplete = "off" enctype="multipart/form-data"> 
               <div class="col-md-12"> 

             <?php 
              $con = mysqli_connect("localhost","***","***","***"); 
              $query = ("SELECT * FROM profile"); 
              $result = mysqli_query($con, $query); 
              while ($row = $result->fetch_assoc()) 
              { 


              echo ' 

              <tr> 
            <td align="left">' . $row['via'] . '<input type="hidden" name="type[]" value="' . $row['via'] . '"></td> 
            <td align="left"> <input type="checkbox" name="type[]" value="macro"/> Macro </td> 
            <td align="left"> <input type="checkbox" name="type[]" value="micro"/> Micro </td> 
            <td align="left"> <input type="checkbox" name="type[]" value="nano"/> Nano </td> 

           </tr>'; 



              } 
             ?> 
           <input style="width: 100%;" type="submit" name = "submit" id = "submit" value="Move" class="btn btn-info"><br><br> 
             </form> 

をdb.php

<?php 
    session_start(); 
    define('HOST','localhost'); 
    define('USER','***'); 
    define('PASS','***'); 
    define('DB','***'); 

    $response = array(); 

    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 

    if(isset($_POST["submit"]) && isset($_POST["type"])){ 

     //receiving post parameters 
      $types = $_POST["type"]; 
      if(sizeof($types) > 0){ 
       foreach($types as $type){ 
     // create a new user profile 
            $sql = "INSERT INTO ppl_tbl (vault_no, via, gname, ppl, macro, micro, nano, created_at) VALUES ('".$_SESSION['via']."', '".$_SESSION['vault_no']."', '".$_SESSION['gname']."', '".$type."','".$type."','".$type."','".$type."', NOW())"; 
            if(mysqli_query($con,$sql)){ 
             header('Location: macro_ppl.php'); 

            }else{ 
             $response["error"] = true; 
             $response["error_msg"] = "INSERT operation failed"; 
             echo json_encode($response); 
            } 

       } 
      } 

    } 

?> 

答えて

0

あなたは間違ってそれをやっている、単にデータ配列

フォーム

でフォームを送信
<form id="form" name ="form" method = "POST" action="someForm.php"> 
    <tr> 
     <td align="left"> <input type="checkbox" name="type[]" value="macro"/> Macro </td> 
     <td align="left"> <input type="checkbox" name="type[]" value="micro"/> Micro </td> 
     <td align="left"> <input type="checkbox" name="type[]" value="nano"/> Nano </td> 
    </tr> 
</form> 

someForm.php

if (isset($_POST['type'])) { 
    foreach ($_POST['type'] as $myType) { 
     echo $myType 
    } 
} 

それらが設定されていない場合は、フォーム

<form id="form" name ="form" method = "POST" action="move_ppl.php" class="wizard-big" autocomplete = "off" enctype="multipart/form-data"> 

<?php 
    $con = mysqli_connect("localhost","***","***","***"); 
    $query = ("SELECT * FROM profile"); 
    $result = mysqli_query($con, $query); 
    while ($row = $result->fetch_assoc()) 
     { 
?> 
     <tr> 
      <td align="left"><?php echo $row['via'] ?><input type="hidden" name="type[]" value="<?php echo $row['via'] ?>"></td> 
      <td align="left"> <input type="checkbox" name="type[]" value="macro"/> Macro </td> 
      <td align="left"> <input type="checkbox" name="type[]" value="micro"/> Micro </td> 
      <td align="left"> <input type="checkbox" name="type[]" value="nano"/> Nano </td> 
     </tr> 
<?php  
     } 
?> 
    <input style="width: 100%;" type="submit" name = "submit" id = "submit" value="Move" class="btn btn-info"><br><br> 
</form> 
+0

ありがとう:

は、1つの可能性があり、この作業を行うには多くの方法がありますwhileループwhileテーブルの中にユーザを表示する必要があります。 –

+0

大丈夫ですが、あなたが言ったことを実装する上で問題はありません。 –

+0

sir ..あなたはどのように私は実際にこのコードを実装することができますか、私は本当にこの全体の概念に新しいですね。 –

0

は、すべてのチェックボックスの値の最初のポストには存在しません。

2番目に多くの結果を追加すると、ループ内にinsert sqlを呼び出す原因となります。

あなたは使用することができます。

var_dump($_POST['type']); 

をので、あなたは構造が実際にどのように見えるかが表示されます。

//setting the variables first 
$ppl = 0; 
$macro = 0; 
$micro = 0; 
$nano = 0; 

//then run the loop to set them 
foreach($types as $type){ 
    if(in_array($type,['ppl','macro','micro','nano'])) //just to be sure nobody pass something else so we will not override other variables 
     $$type = 1; 
} 

//then write the query 
$sql = "INSERT INTO ppl_tbl (vault_no, via, gname, ppl, macro, micro, nano, created_at) VALUES ('".$_SESSION['via']."', '".$_SESSION['vault_no']."', '".$_SESSION['gname']."', '".$ppl."','".$macro."','".$micro."','".$nano."', NOW())"; 
+0

と投与量は変わらないままですか? –

0

PHPファイルで、私は両方と送信ボタンを必要と

if (isset($_POST['submit'])) { 
    if(isset($_POST['type'])) { 
    foreach ($_POST['type'] as $value) { 
     echo $value; 
     /*add this in the query, this will return the value of checkbox which are checked*/ 
    } 
} 

}あなたの応答が、先生のための

関連する問題