PHP在下拉列表中显示空白值,该值从数据库

时间:2017-06-23 18:50:05

标签: php mysql

我已经在我的网络表单中显示了多年的设置,每年都会更新这些工作正常。

由于我需要对用户选择的年份值进行数学运算,因此我在MySQL数据库中将其设为INT。使值INT返回零到选择字段,用户没有输入任何信息。用户将其中一些字段留空。

以下是我目前用于填充年份选择框的代码:

<div class="kstyle">
    <label for="c02">C #02&nbsp;</label>
    <select id="c02" name="c02">
    <option value=""></option>
    <option value="<?=$row['c02'];?>" selected><?=$row['c02'];?></option>

<script>
    var min = new Date().getFullYear() - 45;
    cur = new Date().getFullYear();
    select = document.getElementById('c02');

    for (var i = min; i<=cur; i++){
    var opt = document.createElement('option');
    opt.value = i;
    opt.text = i;
    select.appendChild(opt);
}
    </script>
    </select>
</div>

在没有选择值的任何INT字段中返回零。

我遇到的问题是审美问题。每当数据库返回零/ NULL时,我都希望页面显示一个完全空白的结果。

我正在尝试用if - else语句调整上面的代码,但是继续遇到与等号,左和/或右胡萝卜符号相关的语法错误。这告诉我这些值被评估为算术,这意味着我可能需要调整括号和/或引号的位置。然而,这超出了我在PHP手册中所阅读的范围,所以我需要一些帮助。

以下是我现在所处的代码:

 <div class="kstyle">
    <label for="c03">C #03&nbsp;</label>
    <select id="c03" name="c03">
    <option value="<?php if($row['c03']=NULL)
    { echo '';
    } else {
    <$row['c03']; selected><$row['c03'];}>?>"></option>

    <script>
    var min = new Date().getFullYear() - 45;
    cur = new Date().getFullYear();
    select = document.getElementById('c03');

    for (var i = min; i<=cur; i++){
    var opt = document.createElement('option');
    opt.value = i;
    opt.text = i;
    select.appendChild(opt);
}
    </script>
    </select>
</div>

如果有人能告诉我在哪里搞砸了或采用不同的方法,我会永远感激。

3 个答案:

答案 0 :(得分:1)

除非我不太了解您尝试做什么,否则看起来您的输出语法错误。

试试这个?

    <option value="<?php 
        if($row['c03'] == null){ 
            echo '">';
        } else {
            echo $row['c03'] . '" selected >';
        }
    ?>
    </option>

答案 1 :(得分:1)

首先,你的if条件是错误的。将其与==

进行比较
if($row['c03']==NULL)

第二,你说你在数据库中有0值,如果条件检查NULL,我认为这是错误的。它应该是

if($row['c03']==0)

选项标签有语法错误。它应该是这样的

<option value="<?php if($row['c03']==0)
    { echo '';
    } else {
    $row['c03'];?> selected><?php echo $row['c03'];}?>"></option>

答案 2 :(得分:1)

您可以使用以下命令检查0和null:

<?= !empty($row['c02']) ? $row['c02'] : null ?>

但是,为什么不用PHP生成所有选项:

$minY = date('Y',strtotime('-45 years')); // ## 45 Years Ago
$curY = date('Y'); // ## This Year
$selY = !empty($row['c03']) ? $row['c03'] : null; // ## Resultset Year

echo "<select id=\"c03\" name=\"c03\">\n";
echo "\t<option value=\"\">Select a Year</option>\n"; // ## Blank/Prompt Option
for($i = $minY; $i <= $curY; $i++) {
    $selected = ($i == $selY) ? 'selected' : null;
    echo "\t<option $selected value=\"$i\">$i</option>\n";
}
echo "</select>\n";

"\n"(换行符)和"\t"(标签符号)不是必需的,但会产生更清晰的代码。这应该给你这样的东西:

<select id="c03" name="c03">
    <option value="">Select a Year</option>
    <option  value="1972">1972</option>
    <option  value="1973">1973</option>
    ...
    <option  value="2017">2017</option>
</select>