1

仍在敲我的头,但我认为答案可能会帮助我了解事情的真正运作方式。我一直很讨厌语言,但我想在你的帮助下,我可以强行做到这一点。

因此,我将发布整个代码,以免引起混淆。

<html>
<head>
<title>Change a player</title>
</head>
<BODY >
<?php
 include "inc.php";
 session_start();

 print 'Select week for season: ';
   print $this_season;
##the week drop down query#
$wquery=
"select week_num,week_name
from stats_week
where season=$this_season
order by week_num";
    $wresult=mysql_query($wquery);
print'<form action="changeplayer_2.php" method="post">';
    session_start();
        print"<select name='Week_select'> <br>";
        while ($wrow=mysql_fetch_array($wresult))
    { 
    print '<option value="'.$wrow['week_num'].'">'.'week             '.$wrow['week_num'].'     '.$wrow['week_name'].'</option><br>\n';  
    }
print "</select><br><br>";#
print'<button type="submit" >Next</button>';
$varWeek=$_POST['Week_select'];
    print"</form>";
$_SESSION['week'] = $varWeek;
?>  
</body>
</html>

所以,我不知道如何将 'Week_select' 分配给 $_SESSION['week']。上面的代码是我最后的努力。其次,一旦我为 Session 分配了一些东西,我以后如何清除它,这样它就不会一直弹出?奖金问题

print 'Select week for season: ';
   print $this_season;

是我可以同时显示语句和变量的唯一方法。当我做

print 'Select week for season: '$this_season;

我没有显示变量,当我这样做时

print 'Select week for season: $this_season';

我得到 Select week for season: $this_season 显示

4

5 回答 5

2

当显示(打印/回显)具有特定字符串的变量时,您必须用“.”(点)将两者连接起来

print 'Select week for season: ' . $this_season;
于 2013-04-12T03:21:55.480 回答
1

Session unset and destroy: here 或者您可以只注销一个变量:session_unregister($week)

是的,理想情况下,在输出任何内容之前,每页应该只有一次 session_start。正确的打印方式是连接:

print "Select week for season: " . $this_season;
于 2013-04-12T03:19:10.733 回答
1

将 session_start() 放在 html 的顶部。删除页面中的第二个 session_start()。

尝试打印/回显您的 $_SESSION['week'] 以检查它是否具有值。

print $_SESSION['week'];    
于 2013-04-12T03:32:53.047 回答
1

你的第一个问题:

第1部分

要设置会话,应在 HTML 标记之前插入代码。阅读下面的代码:

<?php
session_start();
$_SESSION['week'] = $this_season;
?>

<html>
<head>
//your code here
</head>
<body>
//your code here
</body>
</html>

第2部分

如果要完全删除会话,可以使用以下代码,这将破坏会话:

<?php session_destroy(); ?>

或者,如果您只想清除会话,可以使用以下代码:

<?php unset($_SESSION['week']); ?>

它将清除会话值。

你的第二个问题:

要将两种打印语法合并在一起,您需要使用点“。” . 在某些其他语言中,使用“+”。该过程称为串联

您的新代码应该是:

print 'Select week for season: ' . $this_season;

这意味着您要打印字符串 'Select week for season:' 后跟变量 $this_season。

于 2013-04-12T03:42:35.973 回答
0

session_start() 应该放在输出或任何 $_SESSION 交互之前。而且只有一次。

<?php
session_start();
?>
<html>
<head>
<title>Change a player</title>
</head>
<BODY >
<?php
 include "inc.php";
// etc...
?>
</body>
</html>

UPDv1:

如果您需要从会话中删除某些内容,那么您可以执行:

<?php unset($_SESSION['something']); ?>

UPDv2:

如果您需要将整个选择放入 $_SESSION,您可以这样做:

ob_start();

print "<select name='Week_select'>";

while ($wrow=mysql_fetch_array($wresult))
    { print '<option value="'.$wrow['week_num'].'">week '.$wrow['week_num'].' '.$wrow['week_name'].'</option>'.PHP_EOL; }

print "</select>";

$_SESSION['something'] = ob_get_clean();

// var_dump($_SESSION);
于 2013-04-12T03:19:47.060 回答