【问题标题】:PHP drop down list with pre-selected values带有预选值的 PHP 下拉列表
【发布时间】:2015-06-23 17:01:16
【问题描述】:

我想我几乎解决了这个问题,但我不太明白为什么我的解决方案不起作用。我正在尝试从使用 MySQL 表的 php 下拉列表中预先选择一个项目。下拉列表按预期填充,但预选不起作用。我的代码:

echo $Trans1E; // Display Existing value
    echo '<p>Trans1: ';
        $q = "SELECT TR1_Name FROM sb_TR1 ORDER BY TR1_Name";
        $r = @mysqli_query ($dbc, $q);
        $row = mysqli_fetch_array ($r, MYSQLI_NUM);
        echo "<select name='Trans1' value=''>Trans1</option>"; // list box select command
        while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
        {//Array of records stored in $row
            $selected='';
            if($row[TR1_Name]==$Trans1E) //determine if the row value is the same as the Existing
            {//if it it then mark as selected
                echo "<option value=$row[TR1_Name] selected='selected'>$row[TR1_Name]</option>";
            }
            else
            {// if it is not then just inlcude it in the drop down list
                echo "<option value=$row[TR1_Name] >$row[TR1_Name]</option>";
            }
        }
        echo "</select>";// Closing of list box
    echo '
    </p>';

我在这个论坛上看到了类似的下拉列表,我已将其合并到我的代码中,或者至少尝试过但没有成功,我怀疑以下错误:if($row[TR1_Name]==$Trans1E ),但是已经没有东西可以尝试了。

【问题讨论】:

  • $row[TR1_NAME] 是(希望)会在你的if() 语句中为“未定义的常量,假设字符串”吐出大量的 php 警告。您是否确认 $trans1e 和 $row['tr1_name'] 是否包含您认为它们应该包含的内容?即使是某个地方的额外空间也会把它扔掉,例如'foo' == 'foo[space]' 是假的。
  • 如果您在浏览器中查看源代码,您可以看到任何选项上的选定属性吗?

标签: php mysql


【解决方案1】:

似乎我比我想象的更接近正确的代码,我通过添加以下行解决了问题:

$Trans1E=mysqli_real_escape_string($dbc, trim(htmlentities($Trans1E)));

在代码之前。 尽管显示了 Trans1E 的内容,但其中似乎有一个不需要的元素,我没有发现,所以我认为下面的代码有问题。 谢谢你们的cmets。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2015-02-22
    相关资源
    最近更新 更多