PHP代码中的HTML选项标记


HTML Option Tags inside PHP Code

我对PHP相当陌生(刚刚在CS课程中学习),现在我正在尝试显示数据库中的一些值,即股票。但现在我遇到了一些问题,因为我试图在一个不错的选项菜单中显示数据库中的股票符号。但是,当我尝试通过$_POST["stock"]("stock"是选项的名称)检索值时,它会显示一个错误"Undefinex index:stock"。

现在,如果我选择上面的选项(php代码之前的选项),它实际上运行得很好,并且"stock"是可检索的(并且没有显示任何内容,正如预期的那样)。

现在我的问题是:我做错了什么?我如何让"股票"这个名字显示$_POST["股票"]的价值

    <select class="form-group">
    <option class='form-control' type='text' name='stock'></option>
    <?php
        $rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);
        foreach ($rows as $row)
        {
            print("<option class='form-control' name='stock'>{$row["symbol"]}</option>");
        }
    ?> 
    </select>   

您通常应该检查$_POST中的密钥是否存在,以避免undefined index问题,如果定义如下示例所示,您也可以检查它是否为空。

例如

$stock = isset( $_POST["stock"] ) && !empty( $_POST["stock"] ) ? $_POST["stock"] : '';

非简写:

$stock = '';
if ( isset( $_POST["stock"] ) && !empty( $_POST["stock"] ) ) {
    $stock = $_POST["stock"];
}

编辑

$_POST['stock']未定义的原因是因为<select>元素缺少已定义的名称,而是在子元素上定义了名称。

更改:

<select class="form-group">

收件人:

<select class="form-group" name="stock">

此外,请确保从所有<option>元素中删除name属性。

祝你好运,
弗雷德里克

将动态参数从双引号中取出,并在打印时用点划线。在使用发布的数据之前也要使用phpisset(特别是当第一个选项为空时):

     <select class="form-group">
       <option class='form-control' type='text' name='stock'></option>
        <?php
            $rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);
            foreach ($rows as $row)
            {
                print "<option class='form-control' name='stock'>{".$row["symbol"]."}</option>";
            }
        ?> 
        </select> 

您需要添加属性名称来选择不在选项中。像这样使用

<select class="form-group" name="stock">
    <option class='form-control' type='text'></option>
    <?php
        $rows = query("SELECT * FROM stocks WHERE id = ?", $_SESSION["id"]);
        foreach ($rows as $row)
        {
print("<option value='".$row["symbol"]."' class='form-control'>".$row["symbol"]."</option>");
        }
    ?> 
    </select>

然后使用php,当您尝试使用$_POST['stock']获取值时,它将返回所选的选项值。即该选项中的CCD_ 9值。

您有几个问题,严重的问题大多是基于HTML的。

1) 为了使用POST变量,您需要设置FORM以通过POST发送数据,这是通过method标签完成的,您可能已经或可能还没有,但:

<form method="post"> 

2) 对于HTML,需要定义所选选项的VALUE,例如您有

print("<option class='form-control' name='stock'>{$row["symbol"]}</option>");

但它所做的是发送一个值""(如果有的话),因为没有定义任何值。改为:

 print("<option class='form-control' name='stock' value='stockvalue'>{$row["symbol"]}</option>");

另外,"name"属性需要出现在<select>元素中,而在<option>元素中只需要value属性。

所以:

print("<option class='form-control' value='stockvalue'>{$row["symbol"]}</option>");

3) query不是公认的函数,除非你自己制作了函数?您可能需要mysqli_query()

4) 次要重新格式化:不要对数组键使用双引号,您的数组应该是:$rows['symbol']。此外,当将变量打印到print命令时,养成这样的习惯:

  print "<option class='form-control' name='stock' value='stockvalue'>".$row['symbol']."</option>";

这将停止使用.字符进行打印,并附加原始PHP变量值$row,然后使用另一个.将要打印的字符串的其余部分附加到该值上。打印也不需要在括号中。