私は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>";
}
?>
'plannumber'だけではなく、' plannumber [] '? – Roljhon
あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く利用していますので、[Prepared Statements](http://php.net/ manual/en/mysqli.quickstart.prepared-statements.php)を使用してください。あなたがユーザーの入力をまったくエスケープしていないからです! –
[複数の行を1つのクエリMySQLで挿入する]の可能な複製(http://stackoverflow.com/questions/12502032/insert-multiple-rows-with-one-query-mysql) - その回答は、MySQLiとPrepared Statementsでよく –