我已经在我的网络表单中显示了多年的设置,每年都会更新这些工作正常。
由于我需要对用户选择的年份值进行数学运算,因此我在MySQL数据库中将其设为INT。使值INT返回零到选择字段,用户没有输入任何信息。用户将其中一些字段留空。
以下是我目前用于填充年份选择框的代码:
<div class="kstyle">
<label for="c02">C #02 </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 </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>
如果有人能告诉我在哪里搞砸了或采用不同的方法,我会永远感激。
答案 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>