2017-03-08 71 views
0

感谢先进,PHP会话数据刷新

我一直在寻找在创建链接的下拉菜单,发现教程/码在线

我已经使用这个代码两次,以创建lmsdropdown.php和clubdropdown .PHP。我能够存储来自lmsdropdown表单的值是一个会话,并将它们回显到clubdropdown(仅用于验证该值是否存在)。

lmsdropdown是一个包含在members.php中的php,clubdropdown是包含在members2.php中的一个。

当我在clubdropdown上选择一个值时,页面刷新,填充第二个下拉框,这会导致我的会话数据被清除。

我是PHP/Javascript的新手,所以答案可能非常明显,但这让我难倒了几天。任何帮助将非常感激。

下面是两个片段members2.php的合并,它将lmsdropdown的输出和会话中存储的输出结合起来。 clubdropdown显示了Java代码,同时也回声会议声明

我能够正确地呼应但是会话数据的JavaScript似乎建立时删除此下拉2.

members.php session data 
 

 
<?php 
 
    session_start(); 
 
    $_SESSION['lms'] = $_POST['lms']; 
 
    $_SESSION['week'] = $_POST['week']; 
 

 
    if (!isset($_SESSION['usr_lvl']) or ($_SESSION['usr_lvl'] != 0)) { 
 
     header("Location: login.php"); 
 
     exit(); 
 
    } 
 

 
?> 
 

 
clubdropdown output of session data 
 

 
<SCRIPT language=JavaScript> 
 
    function reload(form) { 
 
     var val = form.lge.options[form.lge.options.selectedIndex].value; 
 
     self.location = 'members-page2.php?lge=' + val; 
 
    } 
 
</script> 
 
</head> 
 
<body> 
 
    <?php 
 
     $usr = $_SESSION['usr_id']; 
 
     @$lge=$_GET['lge']; // Use this line or below line if register_global is off 
 
     if(strlen($lge) > 0 and !is_numeric($lge)){ // to check if $lge is numeric data or not. 
 
      echo "Data Error"; 
 
      exit; 
 
     } 
 
     $usr = $_SESSION['usr_id']; 
 
     $lms=$_SESSION['lms']; 
 
     $week=$_SESSION['week']; 
 
     echo "<br>Value of \$week = $week<br>Value of \$lms = $lms <br>Value of \$usr = $usr";

下图显示了输出到clubdropdown的会话变量,包含在members2.php中 clubdropdown with variables shown

此图显示从第1个下拉菜单中进行选择后的错误。 Error after list refresh

从这里的一些类似问题的答案我假设错误是因为发布的数据在刷新时被覆盖/删除,但我认为这是会话的目的?

非常感谢您的任何意见。

+1

* java **脚本**刷新 – evolutionxbox

+0

下拉菜单教程可以在这里查看。我用第一个选项drop_down.zip http://www.plus2net.com/php_tutorial/php_drop_down-download.php?download_style=1 – Don

+0

嗨,唐, 这可能是帮助你http://stackoverflow.com/questions/ 30396944/session-variable-reset-on-refresh。 –

回答

0

您正在从$_POST获取值,这是您第二次运行该页面时不存在的值。您需要添加If(isset($_POST['lms'])){ $_SESSION['lms'] = $_POST['lms']; },以便在$_POST值不存在时跳过。

目前,您的$_SESSION变量仍然存在,但正在替换为空的$_POST值。

我怀疑你最好使用AJAX调用填充下拉列表。

+0

这是惊人的斯图尔特,非常感谢作品一种享受! – Don

+0

乐意帮忙。祝您的编码顺利。 – Stuart