【问题标题】:Passing radio selection Array variable through session using PHP/HTML使用 PHP/HTML 通过会话传递单选选择数组变量
【发布时间】:2014-05-05 15:43:58
【问题描述】:
  • 列表项

我已经为此工作了几天,但似乎无法理解。我正在创建一个 Internet 航空公司数据库,不幸的是我对 PHP/HTML 不是很熟悉,但我正在学习。

现在,当我在选择单选按钮后尝试在下一页上调用我的会话时,我得到了索引错误,我似乎无法弄清楚它们。 SQL pull 工作正常,所有数据都显示出来了

如果样式不是最好的,请见谅。我正在删除和添加太多东西,我失去了我的样式,需要修复它。

这是我正在传递的选项之一的表格和单选按钮

Session_start();

<form method="post" action="quantity.php">
                                            <?php
        for ($j=0; $j<$num_rows; $j++) 
        {

            echo "<table border='6'>
            <tr>
            <th>Select Flight</th>
            <th>Flight ID</th>
            <th>Flight Number</th>
            <th>Departure Date</th>
            <th>Flight Time</th>
            <th>Destination</th>
            <th>Origin</th>
            <th>Flight Class</th>
            <th>Flight Cost</th>
            </tr>";

            $row2 = mysqli_fetch_assoc($return);

            echo "<td>". "<input type='radio' name= 'Returns'         
            value=".$row2['fid'].")>". 
            "</td>". 
            "<td>". $row2['fid']. "</td>". 
            "<td>". $row2['fnumber']. "</td>". 
            "<td>". $row2['fdate']. "</td>". 
            "<td>". $row2['ftime']."</td>".  
            "<td>". $rowO['0']. ','. $rowO['1']. "</td>".
            "<td>". $rowD['0']. ','. $rowD['1']. "</td>". 
            "<td>". $row2['class']. "</td>". 
            "<td>". '$'.$row2['price']."</td>"; 

            print "<br>";

            //$_SESSION['Return']=$_POST['Returns'];
        }
            if (isset($_POST['Returns']))
            {
                 $_SESSION['Returns']=$_POST[$row2('fid')];
            }
?>
 <input type="submit" name="submit" value="Reserve" />
    </form>

在我的下一页,quantity.php,我调用存储在会话中的变量:

session_start();

echo $_SESSION['Returns'];

我真正需要传递的是“fid”值,因为我以后可以使用它来从数据库中提取其他所有内容。

每当我尝试通过时,有时我会得到 Array(0') 作为答案...

我还尝试将 fid 声明为变量,然后将单选按钮的名称设置为该变量,但无论检查什么,它总是会传递最后一行。它不会正确循环。

非常感谢任何帮助。我在这里搜索并梦想在代码中以及朋友的 PHP 书中寻找答案。不幸的是,我找不到对我有帮助的解决方案,或者我没有正确实施它。

谢谢。

【问题讨论】:

  • 语法是session_start(); 而不是Session_start(); 将错误报告添加到文件顶部error_reporting(E_ALL); ini_set('display_errors', 1);
  • 是的,抱歉,我的文件中没有大写字母。我输入了那个而不是复制粘贴。我将添加错误报告。谢谢。

标签: php html arrays radio-button session-variables


【解决方案1】:
 echo "<td>". "<input type='radio' name= 'Returns[]'         
        value=".$row2['fid'].")>". 

 echo "<td>". "<input type='radio' name= 'Returns[".$j."]'         
        value=".$row2['fid'].")>". 

【讨论】:

    【解决方案2】:

    您处理帖子的代码永远不会被调用。 如果提交表单,浏览器将切换到“quantity.php”,并且不会调用包含您的代码的文件。

    在大多数情况下,表单操作停留在 form.php 中。 有你处理帖子,验证输入,如果一切正常,你将浏览器重定向到下一页。

    编辑: 我刚看到这段代码

    if (isset($_POST['Returns']))
                {
                     $_SESSION['Returns']=$_POST[$row2('fid')];
                }
    

    在您的循环之外。在这种情况下 $row2 不包含有效值。这是单个变量$_SESSION['Returns'],也许你需要在这里放置一个数组$_SESSION['Returns'][$row2('fid')]。 Ofcurse 将它移到那个循环中。

    【讨论】:

    • 我只包含了部分代码,因为完整的代码有数百行。单选按钮调用都在一个更大的循环内,循环内的 POST 返回和循环外的表单。它应该被调用,不是吗?如果我错了,请纠正我。
    • 我觉得您确实需要改进您的源代码结构以获得干净且易于维护的代码。首先,您应该将 php-code(逻辑)与 html(显示)分开。这通常是通过使用 smarty (smarty.net) 或 php 之类的模板引擎完成的。
    猜你喜欢
    • 2013-07-30
    • 2013-08-11
    • 2011-09-15
    • 2010-12-30
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多