2017-03-11 18 views
0

私はjavascriptを使って行を追加したり削除したりできる複数の入力行を作成しました。PHPで複数の配列レコードを挿入するには?

ここではコードです:

var field = 1; 
 

 
function plan_fields() { 
 

 
    field++; 
 
    var objTo = document.getElementById('plan_fields') 
 
    var divtest = document.createElement("div"); 
 
    divtest.setAttribute("class", "form-group removeclass" + field); 
 
    var rdiv = 'removeclass' + field; 
 
    divtest.innerHTML = '<div class="col-sm-4 nopadding"><div class="form-group"> <input type="text" class="form-control" id="plannumber" name="plannumber[' + field + ']" value="" placeholder="School name"></div></div><div class="col-sm-4 nopadding"><div class="form-group"> <input type="text" class="form-control" id="Degree" name="Degree[' + field + ']" value="" placeholder="Degree"></div></div><div class="col-sm-4 nopadding"><div class="form-group"><div class="input-group"> <select class="form-control" id="plandate" name="plandate[' + field + ']"><option value="">Date</option><option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option><option value="2018">2018</option> </select><div class="input-group-btn"> <button class="btn btn-danger" type="button" onclick="remove_plan_fields(' + field + ');"> <span class="glyphicon glyphicon-minus" aria-hidden="true"></span> </button></div></div></div></div><div class="clear"></div>'; 
 

 
    objTo.appendChild(divtest) 
 
} 
 

 
function remove_plan_fields(rid) { 
 
    $('.removeclass' + rid).remove(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<form action="?create" method="post"> 
 
    <div class="panel-body"> 
 
    <div id="plan_fields"> 
 

 
    </div> 
 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <input type="text" class="form-control" id="plannumber" name="plannumber[0]" value="" placeholder="Plan Number"> 
 
     </div> 
 
    </div> 
 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <input type="text" class="form-control" id="context" name="context[0]" value="" placeholder="Context represented on plan"> 
 
     </div> 
 
    </div> 
 

 

 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <div class="input-group"> 
 
      <select class="form-control" id="plandate" name="plandate"> 
 
      
 
      <option value="">Date Completed</option> 
 
      <option value="2015">2015</option> 
 
      <option value="2016">2016</option> 
 
      <option value="2017">2017</option> 
 
      <option value="2018">2018</option> 
 
      </select> 
 
      <div class="input-group-btn"> 
 
      <button class="btn btn-success" type="button" onclick="plan_fields();"> <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> </button> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="clear"></div> 
 

 
    </div> 
 

 
    <div class="form-group"> 
 
    <div class="col-md-9 col-sm-9 col-xs-12 col-md-offset-3"> 
 
     <button type="submit" value="submit" class="btn btn-success">Add Plan</button> 
 
    </div> 
 
    </div> 
 

 
</form>

さて、私は複数のアレイのレコードを追加したいが、私はここで立ち往生していますので、私は私のPHPの部分をどのように修正すればよいが、 ?

<?php    
    $host  = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "project"; 

    if (isset($_GET['create'])) { 
    $link = mysqli_connect($host, $username, $password, $dbname) 
     or die('Could not connect: ' . mysqli_error()); 

    mysqli_select_db($link, $dbname) 
     or die('Could not select database'); 

    foreach($_POST as $key => $value) 
    { 
     if (strstr($key, '')) 
     { 
      $x = str_replace('',NULL,$key); 
      inserttag($value, $x); 
     } 
    } 

    $plannumber= $_POST['plannumber[]']; 
    $plan = $_POST['context[]']; 
    $date = $_POST['plandate[]']; 


    $query = "INSERT INTO plans 
      VALUES ($plannumber,'$date','$plan')"; 
    $result = mysqli_query($link, $query) or die('Could not connect: '); 

    $message = "Plan Added"; 
    echo "<script type='text/javascript'>alert('$message');window.location.href = 'plans.php';</script>"; 



    } 


?> 
+0

'plannumber'だけではなく、' plannumber [] '? – Roljhon

+0

あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く利用していますので、[Prepared Statements](http://php.net/ manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。あなたがユーザーの入力をまったくエスケープしていないからです! –

+0

[複数の行を1つのクエリMySQLで挿入する]の可能な複製(http://stackoverflow.com/questions/12502032/insert-multiple-rows-with-one-query-mysql) - その回答は、MySQLiとPrepared Statementsでよく –

答えて

0

あなたは、あなたがserialize($array)機能を使用することができ、テーブルの配列を格納する場合(あなたの配列変数名と$配列を置き換えます)。それは直列化されたデータを返しますし、その直列化された配列を格納することができます。あなたのコードは非常に安全ではありません。

0

まず、配列の値を含む変数が必要です。その後、配列の値は空白の区切り記号になります。爆縮区切りの値は文字列です。セパレータ値を挿入することができます。このように

$plannumber= $_POST['plannumber[]']; 
$plannumber_separated = implode(" ", $plannumber); 
$plan= $_POST['context[]']; 
$plan_separated = implode(" ", $plan); 
$query = "INSERT INTO plansVALUES ($plannumber_separated,$plan_separated)"; 
+0

それは動作しませんでした、あなたは私をより助けることができますか? – martinBibo

+0

1つの配列の値を挿入して1つの列を挿入しますか? –

関連する問題