【发布时间】:2016-04-24 08:40:25
【问题描述】:
我有一个 php 页面,上面有手风琴标签。每个选项卡的标题标题应该是类别的标题。数据库中有10个类别。
每个选项卡都应列出该特定类别中的所有玩家。因此手风琴 tab1 的标题为“Category 1”,并在“Category 1”中包含数据库中所有玩家的列表。这是在两个单独的 php 页面中完成的。
第一页是手风琴面板主体,它应该遍历数据库并为每个类别创建一个新面板。然后在这个面板页面中是玩家的“包含”。
我的问题是面板 While 循环仅通过循环一次并为类别 1 创建面板,但从未进入“类别 2”。不知何故,原因是玩家的“php包含”。如果我为玩家注释掉"include 'includes/player-select.php';" 以便它只为类别创建选项卡,那么它将遍历整个数据库并创建 10 个选项卡。包括玩家将仅在第一个类别选项卡处停止循环。
有想法吗?
这里是 Panel.php
<?php
$query = "SELECT catID,cat_name,categoryColor FROM Categories";
$result = mysqli_query($conn, $query);
if($result === FALSE) {
die(mysqli_error());
}
while ($row = mysqli_fetch_array($result)) {
$cat_id = $row['catID'];
$catName = $row['cat_name'];
$catColor = $row['categoryColor'];
// BEGIN PANEL
echo '<div class="panel panel-default">';
echo '<a data-toggle="collapse" data-parent="#accordion" href="#collapse' . $cat_id .'">';
echo '<div class="panel-heading" style="background-color: ' . $catColor . '; color: #2b2c31;">';
echo '<h4 class="panel-title">';
echo $catName . '<span class="glyphicon glyphicon-chevron-down caret-right"></span>';
echo '</h4>';
echo '</div>';
echo '</a>'; // END Panel Title Bar
// BEGIN Panel Body
echo '<div id="collapse' . $cat_id . '" class="panel-collapse collapse in">';
echo '<div class="panel-body votes">';
// BEGIN Player1Select.php
include 'includes/player-select.php';
// END Player1Select.php
echo '</div>'; // END panel-body
echo '</div>'; // END collapse' $cat_id
echo '</div>'; // END panel panel-default
// END PANEL
}
?>
现在这里是 player-select.php
<div class="col-md-4 text-center">
<div class="tab-inner">
<div class="form-group">
<form action="" method="post">
<div class="select-box-left">
<?php
//execute the SQL query and return records
$query = "SELECT first_name,last_name, playerID, categoryID FROM Players WHERE categoryID = '$cat_id' ORDER BY last_name";
$result = mysqli_query($conn, $query);
if($result === FALSE) {
die(mysqli_error());
}
while ($row = mysqli_fetch_array($result)) {
$playerID = $row['playerID'];
$playerFN = $row['first_name'];
$playerLN = $row['last_name'];
$playerCatID = $row['categoryID'];
echo '<div class="selection1" value=' . $playerFN . $playerLN . '>' . $playerFN . " " . $playerLN ."</div>";
}
?>
</div>
</form>
</div><!-- END form-group -->
</div> <!-- END tab-inner -->
</div> <!-- END col-md-4 -->
<!-- BEGIN Player Images -->
<div class="col-md-4 text-center">
<div class="tab-inner">
<img src="images/players/3_image.png" class="img-responsive img-left" alt="Vote" width="160" height="116">
<img src="images/players/2_image.png" class="img-responsive img-right" alt="Vote" width="160" height="116">
<img src="images/vs.png" class="img-responsive img-middle" alt="vs" width="45" height="45">
</div>
<div id="btnVote"><button type="submit" class="btn btn-primary" id="voteButton" disabled>VOTE NOW</button></div>
</div>
<!-- END Player Images -->
<div class="col-md-4 text-center">
<div class="tab-inner">
<div class="form-group">
<div class="select-box-right">
<?php
//execute the SQL query and return records
$query = "SELECT first_name,last_name, playerID, categoryID FROM Players WHERE categoryID = '$cat_id' ORDER BY last_name";
$result = mysqli_query($conn, $query);
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
//fetch tha data from the database
while ($row = mysqli_fetch_array($result)) {
$playerID = $row['playerID'];
$playerFN = $row['first_name'];
$playerLN = $row['last_name'];
$playerCatID = $row['categoryID'];
echo '<div class="selection2" value=' . $playerFN . $playerLN . '>' . $playerFN ." " . $playerLN . "</div>";
}
?>
</div>
</div><!-- END form-group -->
</div> <!-- END tab-inner -->
</div> <!-- END col-md-4 -->
【问题讨论】:
-
请修正代码的缩进。
-
如果您要躲在键盘后面并否决这个问题,那么至少增长一对并说明原因。如果是因为您不能使用滚动条,那么您可能一开始就不应该在这里回答问题。您和我一样清楚,此代码是原始代码页的复制粘贴。这不像我今天早上醒来并有我的邪恶计划从 Stackoverflow 问题中缩进 *** .....
-
投反对票的原因:代码太多了。我可以使用滚动条,但如果代码使用两个代码块,都带有水平和垂直滚动条,那么问题肯定不需要所有这些。如果你不顾一切地复制/粘贴代码,你只会伤害自己。
-
Stack Overflow 和社区的其他人抱怨如果没有足够,然后如果有太多。在这种情况下,解决代码故障的唯一方法是查看所有代码。如果山姆先生没有太多需要审查的东西,那么对于你们这些敏感的小家伙来说也没有太多。
标签: php mysql while-loop