【发布时间】:2017-07-24 16:41:13
【问题描述】:
所以我有一个下拉列表,可以更改表单下方部分中显示的信息。 switch 语句检查选择了哪个选项,然后将要运行的正确查询分配给变量 $query。我不确定为什么查询没有运行,因为我在 cPanel 的文件管理器上使用代码编辑器。我网站的另一个页面上有一个类似的 php 代码可以完美运行,所以我更加困惑。
<section class="content">
<h2 class="heading">
Fetal Development Navigation
</h2>
<div id="navigationButtons">
<form action="" style="display:inline;" method="GET">
<select name="week" style="width:50%; display:inline; height:5%;">
<option title='Select A Week' value='select'>Please select a week! </option>
<option title='Week 1' value='one'>Week 1</option>
<option title='Week 2' value='two'>Week 2</option>
<option title='Week 3' value='three'>Week 3</option>
<option title='Week 4' value='four'>Week 4</option>
<option title='Week 5' value='five'>Week 5</option>
<option title='Week 6' value='six'>Week 6</option>
<option title='Week 7' value='seven'>Week 7</option>
<option title='Week 8' value='eight'>Week 8</option>
<option title='Week 9' value='nine'>Week 9</option>
<option title='Week 10' value='ten'>Week 10</option>
<option title='Week 11' value='eleven'>Week 11</option>
<option title='Week 12' value='twelve'>Week 12</option>
<option title='Week 13' value='thirteen'>Week 13</option>
<option title='Week 14' value='fourteen'>Week 14</option>
<option title='Week 15' value='fifteen'>Week 15</option>
<option title='Week 16' value='sixteen'>Week 16</option>
<option title='Week 17' value='seventeen'>Week 17</option>
<option title='Week 18' value='eightteen'>Week 18</option>
<option title='Week 19' value='nineteen'>Week 19</option>
<option title='Week 20' value='twenty'>Week 20</option>
<option title='Week 21' value='twenty-one'>Week 21</option>
<option title='Week 22' value='twenty-two'>Week 22</option>
<option title='Week 23' value='twenty-three'>Week 23</option>
<option title='Week 24' value='twenty-four'>Week 24</option>
<option title='Week 25' value='twenty-five'>Week 25</option>
<option title='Week 26' value='twenty-six'>Week 26</option>
<option title='Week 27' value='twenty-seven'>Week 27</option>
<option title='Week 28' value='twenty-eight'>Week 28</option>
<option title='Week 29' value='twenty-nine'>Week 29</option>
<option title='Week 30' value='thirty'>Week 30</option>
<option title='Week 31' value='thirty-one'>Week 31</option>
<option title='Week 32' value='thirty-two'>Week 32</option>
<option title='Week 33' value='thirty-three'>Week 33</option>
<option title='Week 34' value='thirty-four'>Week 34</option>
<option title='Week 35' value='thirty-five'>Week 35</option>
<option title='Week 36' value='thirty-six'>Week 36</option>
<option title='Week 37' value='thirty-seven'>Week 37</option>
<option title='Week 38' value='thirty-eight'>Week 38</option>
<option title='Week 39' value='thirty-nine'>Week 39</option>
<option title='Week 40' value='forty'>Week 40</option>
</select>
<input type="submit" value="Go" style="width:25%; display:inline; height:5%;"/>
</form>
</div>
</section>
<section id="week" class="content">
<?php
$i = $_GET['week'];
switch ($i) {
case "one":
$query = "SELECT * FROM fetaldev WHERE week = 1;";
$week = "Week One";
break;
case "two":
$query = "SELECT * FROM fetaldev WHERE week = 2;";
$week = "Week Two";
break;
case "three":
$query = "SELECT * FROM fetaldev WHERE week = 3;";
$week = "Week Three";
break;
case "four":
$query = "SELECT * FROM fetaldev WHERE week = 4;";
$week = "Week Four";
break;
case "five":
$query = "SELECT * FROM fetaldev WHERE week = 5;";
$week = "Week Five";
break;
}
/*if($i == 'one') {
$query = "SELECT * FROM fetaldev WHERE week = 1;";
$week = "Week One";
echo $query . $week;
}*/
$run = mysqli_query($dbconn, $query);
while ($row = mysqli_fetch_array($run)){
$id = $row['id'];
$tag = $row['tag'];
$description = $row['description'];
}
//query isn't running
?>
<?php if(isset($week)){?>
<h2 class="heading"><?php echo $week; ?></h2>
<h4>Size Comparisons</h4>
<?php } else { ?>
<h3>Please select a week from the dropdown list!</h3>
<p>Each week will list out the size comparisons and notable milestones in the development of your baby!</p>
<?php } ?>
<p>
<?php if($tag == 'size'){
echo $description . ', ';
}?>
</p>
<?php if(isset($week)){?>
<h4>Approximate Weight and Length</h4>
<?php } ?>
<p><?php if($tag=='weight' || $tag =='length'){echo $description;}?></p>
</section>
如果您需要代码中的更多内容,请告诉我!提前致谢!
【问题讨论】:
-
有一些未知数 - 你有一个有效的连接吗?查询后,
mysqli_error($dbconn)有没有回滚?是否有任何 PHP 错误(启用错误报告并检查您的日志)。您还应该在运行查询之前检查表单是否已提交。 -
如果你去 www.mommy-info.com/pregnancy/fetal-development,你可以看到发生了什么。表单正在提交,因为正在执行 switch 语句(例如,选择了第三周,然后 $week 变量显示为第三周)。从 mysqli_error($dbconn) 打印没有错误。并且此代码编辑器上没有错误报告或日志。谢谢!
-
您的开关是否必须使用字符串大小写?这有点不相关,但是使用 PHP,如果您不必按照目前的方式使用它,您可以将大量代码变成一个非常短的集合 - 这将更容易排除故障、阅读和进一步开发跨度>
-
我会写一个简单的例子来说明我的意思
-
快速建议 - 将
value='one'更改为value='1',这将删除开关,因为您可以直接使用该值。