2017-03-08 163 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