PHP代码中的HTML选项标签

时间:2015-03-29 21:38:29

标签: php html

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

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

现在我的问题是:我做错了什么,如何命名" stock"显示$ _POST [" stock"]

的值
    <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>   

4 个答案:

答案 0 :(得分:1)

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

E.g。

$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">

另外,请务必从所有name元素中删除<option>属性。

祝你好运,
弗雷德里克

答案 1 :(得分:0)

从双引号中提取动态参数,并在打印时用点分隔。在使用发布的数据之前也使用php isset(特别是当第一个选项具有空值时):

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

答案 2 :(得分:0)

您需要添加属性名称以选择不在options.use中,如此

<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']获取值时,它将返回您选择的选项值。即该选项中的$row["symbol"]值。

答案 3 :(得分:0)

你有几个问题,严重问题主要是基于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>");

作为一个额外的 - &#34;名称&#34;属性需要显示在<select>元素中,value元素中只需要<option>属性。

这样:

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,然后将其附加到.字符串的其余部分以进行打印。 打印也不需要在括号中。