我遇到了问题。我试图在每次点击会话时保存不同的ID,但是当我从会话中获取此ID时,始终显示一个id(i.e-the first saved one.
)。我在下面解释我的代码。
<?php
foreach ($catdata as $v) {
?>
<div class="col-sm-3">
<a href="javascript:void(0)" class="<?php echo $classarr[$counter];?>" onClick="keepSection('<?php echo $v['id']; ?>');"><?php echo $v['name'] ?></a><!-- activemap1 -->
</div>
<?php
$counter++;
if($counter==4){
$counter=0;
}
}
点击锚标记时,相应的ID将通过ajax调用保存到会话中,如下所示。
function keepSection(id){
var url="common.php?action=savecid";
$.post(url,{"cat_data":id},function(data){
var obj=JSON.parse(data);
console.log('data',obj);
if(obj.isData==1){
var v = jQuery("#fyndspaceownsec").validate({
});
if (v.form()) {
$(".frm").hide("fast");
$("#sf2").show("slow");
}
}
})
}
的common.php:
$action = $_REQUEST['action'];
$result=array();
if($action=='savecid'){
$id=$_POST['cat_data'];
session_start();
if(isset($_SESSION['cid']) && !empty($_SESSION['cid'])){
unset($_SESSION['cid']);
$_SESSION['cid']=$id;
$flag="true";
}else{
$_SESSION['cid']=$id;
$flag="false";
}
$result=array("isData"=>1,"cid"=>$_SESSION['cid'],"flag"=>$flag);
echo json_encode($result);
}
这里我将id存入session.At每次点击我正在清理会话并存储新的id。当我尝试获取它时,它只显示一个id,每次点击后首先保存。
<div class="fyndspacecategory fyndsheightsubc nano">
<div class="nano-content">
<?php
echo $_SESSION['cid'];
?>
我的完整代码如下。
<div class="fynd-space-itms">
<?php
$classarr = array("item-exhibitation maploc", "item-parking maploc", "item-offices maploc", "item-storage maploc");
$sql="select * from category order by id desc";
$catdata=$dbobj->db_get_data($sql);
$counter=0;
foreach ($catdata as $v) {
?>
<div class="col-sm-3">
<a href="javascript:void(0)" class="<?php echo $classarr[$counter];?>" onClick="keepSection('<?php echo $v['id']; ?>');"><?php echo $v['name'] ?></a><!-- activemap1 -->
</div>
<?php
$counter++;
if($counter==4){
$counter=0;
}
}
<button class="btn nextbtnbgdiv open2" type="button">Next <span class="fa fa-arrow-right"></span></button>
<div class="fyndspacecategory fyndsheightsubc nano">
<div class="nano-content">
<?php
echo $_SESSION['cid'];
?>
</div>
</div>
此时,当用户点击next
按钮时,第二部分div部分将显示并从会话中获取ID。
假设首次点击存储在会话中的id=16
,echo
将打印值16
,并在第二次点击存储到会话中的id=17
,但这次也是echo
值即将到来16
这是我的问题。我需要每次点击旧ID将删除并且新ID将存储,并且每次点击后echo
应该打印新值。请帮助我。
答案 0 :(得分:0)
你会使用isset和empty:
session_start();
if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) {
echo 'Set and not empty, and no undefined index error!');
}
array_key_exists是使用isset检查密钥的不错的替代方法:
session_start();
if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) {
echo 'Set and not empty, and no undefined index error!');
}
else
{
echo "session is not set";
}
确保在读取或写入会话数组之前调用session_start。