【问题标题】:need more detail tying in Session_start() to a select statement需要更多详细信息将 Session_start() 绑定到 select 语句
【发布时间】:2013-04-04 10:54:27
【问题描述】:

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

所以我只是将整个代码发布出来,以免引起混乱。

<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 显示

【问题讨论】:

  • 您只能在一个页面中启动一次会话。因此请删除代码底部的所有其他session_start();
  • @kaii 很好,我不得不把它放在不同的地方试图让它工作,虽然我摆脱了那个。
  • @DipeshParmar 这会回答我需要两条线的原因吗?
  • @BillFlippen 是的,你需要

标签: php session-variables


【解决方案1】:

会话取消设置和销毁:here 或者您可以只注销一个变量:session_unregister($week)

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

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

【讨论】:

  • 谢谢,我没有意识到我有第二个 session_start(),我把它移动到代码的不同部分忘了我移动它没有删除
【解决方案2】:

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:

如果您需要将整个 select 放入 $_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);

【讨论】:

  • 删除了第二个 Session()。那么如何获得 print"
  • 阅读下文。如果您将某些内容保存到 $_SESSION,则输出应通过 var_dump($_SESSION) 显示它。调试时很有用。
  • 我了解(有点)$_SESSION 是如何工作的,只是不了解如何从我的 吗?
  • 我想我不知道怎么问这个问题,让我再试一次,谢谢你的耐心。从下拉列表中,我想选择 1 个项目,然后将其分配给一个变量以将其分配给 $_SESSION
  • 我会将此作为另一个问题打开,非常感谢您的帮助
【解决方案3】:

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

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

【讨论】:

  • 谢谢!!!!!!!!!这对我来说仍然是全新的,我还在学习小东西
【解决方案4】:

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

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

print $_SESSION['week'];    

【讨论】:

  • 谢谢您的时间,我的第二页确实有,但无法打印(它确实打印了我正在测试的其他 $_session['x'] (因此我关于注销它们的问题)
  • 来一探究竟,我的pftp会话结束了,我重新打开并没有得到完全正确的cd目录路径。我将更改上传到错误的目录。感谢您的耐心等待!
【解决方案5】:

您的第一个问题:

第 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。

【讨论】:

  • 谢谢你,经过更多的澄清here你的回答很有道理
猜你喜欢
  • 2022-11-17
  • 1970-01-01
  • 2011-02-27
  • 2014-08-02
  • 2013-11-07
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2014-03-04
相关资源
最近更新 更多