gpt4 book ai didi

php - 如何避免PHP中的 session 数组被覆盖

转载 作者:行者123 更新时间:2023-12-01 04:39:31 25 4
gpt4 key购买 nike

我有一个表单。其中文本框下方有一个复选框列表。当我单击每个复选框时,会出现一个模式,其中包含根据来自数据库的复选框的子数据。我想做的是将数据传递到数据库中。那已经完成了。但问题是所有子复选框值都不会进入数据库。它仅将最后选定的主类别的子类别与其他帖子数据一起传递到数据库中。我认为,由于 insert.php 文件内的 session 数组而发生错误。它用新来的发布数据覆盖 session 变量。(复选框值)。我找不到它有什么问题。

我制作了一个简单的表格来最好地描述。

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">&times;</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

enter image description here

图像 2

enter image description here

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 文件并存储在 session 变量中。

插入.php

<?php
if (!isset($_SESSION['insert'])) {
$_SESSION['insert'] =[];
}
$insert = $_POST['insert'];
array_push($_SESSION['insert'], $insert);
?>

点击提交按钮后,所有发布数据都会传递到 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);
}


?>

我试着向你展示我的想法,希望你能理解。帮助我。

最佳答案

终于我自己解决了。

insert.phppassData.php 必须修改如下

插入.php

<?php
session_start();

if (!isset($_SESSION['insert'])) {
$_SESSION['insert'] = array();
}
$insert = $_POST['insert'];
array_push($_SESSION['insert'], $insert);

$list = implode(",", array_filter($_SESSION['insert']));

$_SESSION['final'] = $list;

?>

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['final']."');" ;
$result=mysqli_query($conn,$sql);

}

unset($_SESSION['final']);
session_destroy();


?>

在这里,我将数组转换为字符串并将其分配给变量。然后进入 session 变量。

关于php - 如何避免PHP中的 session 数组被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com