【问题标题】:recall session variable in loop在循环中调用会话变量
【发布时间】:2015-06-08 16:32:14
【问题描述】:

我正在生成一个带有循环的 html 表单,其中“quan”是一个数量。我想回顾一下提交表单、用户进入确认页面并返回表单以调整某些内容(例如条目中的错字)的情况下的会话变量。我无法找到这种情况的帮助。这是我尝试过的。

for($i = 1; $i<= $_SESSION['quan']; $i++) 
{
    echo "<input type=\"text\" name=\"nam_" . $i . "\" size=\"35\" value=\""; 
    if (array_key_exists($_SESSION['nam_$i']) { echo $_SESSION['nam_$i']; };
    echo "\" /><br />";
}

这会根据订购的数量生成一系列 Post 变量(例如 $_POST['nam_1']$_POST['nam_2'] 等)。在处理表单时,我将 Post 变量转换为带有另一个循环的 Session 变量;在 if 语句中,如果用户需要返回表单以更正某些内容,我会尝试调用用户输入的会话变量。

显然会话值nam_$i 不是执行此操作的正确方法。

我玩弄了可变变量但没有成功。提前感谢您的帮助。

【问题讨论】:

  • 您必须使用带有双引号的"nam_$i" 才能替换$i 变量。
  • 完美,如此简单——非常感谢!

标签: php forms session


【解决方案1】:

鲍勃,

如果您为echo 使用不同的文本分隔符,而不是为html 使用不同的文本分隔符,它会使您的代码更易于阅读和调试,而且您不必添加所有那些转义\ 字符掩盖正在发生的事情,即使用

echo ' ';

将允许您对 html 使用双引号 "。所以

for($i = 1; $i<= $_SESSION['quan']; $i++) 
{
    echo '<input type="text" name="nam_' . $i . '" size="35" value="'; 
    if (array_key_exists($_SESSION["nam_$i"]) { 
       echo $_SESSION["nam_$i"]; 
    };
    echo '"/><br />';
}

阅读和调试要容易得多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 2023-01-25
    • 2019-12-20
    • 2021-11-16
    相关资源
    最近更新 更多