2016-04-16 6 views
0

このコードは、最後のテキストボックスの値だけを保存します。 3つのテキストボックスを生成すると、3番目の値だけがすべてではなくデータベースに格納されます。私は(名前から' + i + 'を削除)あなたがこれを書くためにあなたのjavascriptを更新した場合、データベースmysqliを使ってデータベースに生成されたテキストボックスの値を追加する方法

<?php if(isset($_POST['submit'])){ 
$num_cat = $_POST['num_cat']; 
$text = $_POST['category']; 
foreach ($text as $key) { 
    // echo $key."\n"; 
} 
$insertquery = mysqli_query($con, "INSERT INTO accounts (accountusername, accountemail) VALUES('".$num_cat."', '".$key."')"); 
if(!$insertquery){ 
    echo "Error".mysqli_error($con); 
} 
} ?> 

<script type="text/javascript"> 
    //when the webpage has loaded do this 
    $(document).ready(function() { 
     //if the value within the dropdown box has changed then run this code    
     $('#num_cat').change(function(){ 
      //get the number of fields required from the dropdown box 
      var num = $('#num_cat').val();     

      var i = 0; //integer variable for 'for' loop 
      var textboxes = ''; //string variable for html code for fields 
      //loop through to add the number of fields specified 
      for (i=1;i<=num;i++) { 
       //concatinate number of fields to a variable 
       textboxes += 'Category'+i+': <input type="text" name="category[]' + i + '" placeholder = "category_' + i + '" /><br/>'; 
      } 

      //insert this html code into the div with id catList 
      $('#catList').html(textboxes); 
     }); 
    }); 
</script> 


<form method="post" action=""> 
    Number of fields required:  
    <select id="num_cat" name="num_cat"> 
     <option value="0">- SELECT -</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
     <option value="6">6</option> 
     <option value="7">7</option> 
     <option value="8">8</option> 
     <option value="9">9</option> 
     <option value="10">10</option> 
    </select> 
    <div id="catList"></div> 
    <input type="submit" name="submit" value="Submit"/> 
</form> 

答えて

0

すべて生成されたテキストボックスの値を格納したい:

textboxes += 'Category'+i+': <input type="text" name="category[]" placeholder = "category_' + i + '" /><br/>'; 

が、その後$_POST['category']は配列になります。それは、あなたが値を格納する方法によって異なりますが、次の3つの行をお勧めしますと仮定すると、あなたはこれを行う必要があります:

foreach ($_POST['category'] as $key) { 
    $insertquery = mysqli_query($con, "INSERT INTO accounts (accountusername, accountemail) VALUES('".$num_cat."', '".$key."')"); 
    if(!$insertquery){ 
    echo "Error".mysqli_error($con); 
    } 
} 

これはin the PHP manualを説明しています。 how can I prevent SQL-injection in PHP?もご覧ください。現在のコードは単純な悪用の脆弱性があるためです。

+0

ありがとう私はそれを助けてくれる –

+0

@MuhammadFarhanJutt聞いてよかった!私の回答を受け入れるようにマークしてください(http://stackoverflow.com/help/someone-answers)) – Sjon

関連する問題