私はフォームを持っています。そこには、テキストボックスの下にチェックボックスのリストがあります。各チェックボックスをクリックすると、データベースからのチェックボックスに従ってサブデータが表示されます。私がしたいのは、データをデータベースに渡すことです。それはすでに行われています。しかし問題は、すべてのサブチェックボックスの値がデータベースに送られないことです。最後に選択したメインカテゴリのサブカテゴリだけを他の投稿データと一緒にデータベースに渡します。私はinsert.phpファイル内のセッション配列のために間違っていると思います。セッション変数を新しくポストデータに上書きします(チェックボックスの値)。私はそれが間違っているものを見つけることができませんでした。PHPのセッション配列の上書きを避ける方法
私は、最高の表現をするためにシンプルなフォームを作った。
config.phpの
<?php
$servername = "localhost";
$username = "root";
$password = "";
$db = "mydb";
// Create connection
$conn = mysqli_connect($servername, $username, $password,$db);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
?>
form.php
<body>
<div class="form1">
<form action="passData.php" method="post">
<input type="text" name="name" placeholder="Name"/><br>
<input type="text" name="age" placeholder="age"/><br>
<input type="text" name="address" placeholder="address"/><br>
<input type="checkbox" name="favourite" value="1"/>sports
<input type="checkbox" name="favourite" value="2"/>fruits
<input type="checkbox" name="favourite" value="3"/>colors
<div>
<button class="btn btn-primary" type="submit" name="submit" id="submit">Submit</button>
</div>
</form>
</div>
<!--modal-->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-fill" id="submit" onclick="submit();" name="submit" >save</button>
</div>
</div>
</div>
</div><!--modal is finished-->
</body>
画像1
ここでは0画像2
modal.php
<?php
if($_POST['value']){
$value = $_POST['value'];
include("config.php");
$sql = "SELECT sub_categories FROM favourite WHERE category_id=".$value." ";
$res = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($res)){
echo "<input class='category' type='checkbox' name='category[]' value ='".$row['sub_categories']."'/>".$row['sub_categories'];
echo "<br>";
}
}
?>
私はモーダル、選択したチェックボックスの値を保存ボタンをクリックしたときに、私のjsファイルは
$(document).ready(function(){
//model
$("input[type=checkbox][name=favourite]").on('change',function(){
if(this.checked) {
var value = $(this).val();
$.ajax({
url:"modal.php",
type:"POST",
data:{value:value},
success:function(modalBody){
$("#myModal .modal-body").html(modalBody);
$("#myModal").modal('show');
}
});
}
});
});
function submit() {
var insert = [];
$('.category:checked').each(function(){
insert.push($(this).val());
});
insert = insert.toString();
$.ajax({
url:'insert.php',
type:'POST',
data:{insert:insert},
success:function(){
alert('success');
$("#myModal").modal('hide');
}
});
}
ですinsert.phpファイルに渡してセッションvaに保存するライバル。
insert.php送信ボタンををクリックした後、すべてのポストデータは、私がお見せしようpassData.php
passData.php
<?php
session_start();
include('config.php');
if(isset($_POST['submit'])){
$name=$_POST['name'];
$age=$_POST['age'];
$address=$_POST['address'];
$sql= "INSERT INTO students(name,age,address,favourite) VALUES('$name',
'$age',
'$address',
'".$_SESSION['insert']."');" ;
$result=mysqli_query($conn,$sql);
}
?>
に渡す
<?php
if (!isset($_SESSION['insert'])) {
$_SESSION['insert'] =[];
}
$insert = $_POST['insert'];
array_push($_SESSION['insert'], $insert);
?>
私の考えは、あなたが理解できることを願っています。