我知道这是一个愚蠢的问题,我已经尝试过查看其他答案,但它们并不适合我。我已经接管了维护一个包含大量预先存在的代码的网站,并且需要添加一个新的查询。
我设法让查询工作并显示在网页中,但只显示第一条记录。我知道我错过了循环函数,但我无法弄清楚如何将它添加到函数中以便显示所有记录。
我已经和他斗争了好几个小时了,非常感谢一些指点!
这是主list.php文件中的代码 - 第一个查询是预先存在的,新查询是以getFeedback过程开头的“$ sql2 =”CALL sp_GetFeedback(“。$ listing ['unique_listing_id']。 “)”;”。
if(($PMDR->get('Authentication')->checkPermission('admin_view_real_prices')) || ($PMDR->get('Session')->get('user_id'))) {
$admin_user_can_view_prices = true;
$template_content->set('admin_user_can_view_prices',$admin_user_can_view_prices);
$sql = "CALL sp_Entertainers_Contact_Info(".$listing['unique_listing_id'].")";
//all variables come from db.php
$mysqli = new mysqli($dbserver, $dbuser, $dbpass, $dbnameaf);
$rs = $mysqli->query($sql);
while($row = $rs->fetch_assoc())
{
$template_content->set('primaryEmail',$row['PrimaryEmail']);
$template_content->set('secondaryEmail',$row['SecondaryEmail']);
$template_content->set('cellPhone',$row['CellPhone']);
$template_content->set('homePhone',$row['HomePhone']);
$template_content->set('alternatePhone',$row['AlternatePhone (Please Specify)']);
$template_content->set('streetAddress',$row['StreetAddress']);
$template_content->set('entertainerCity',$row['City']);
$template_content->set('entertainerState',$row['State']);
$template_content->set('entertainerZip',$row['Zip']);
$template_content->set('entertainerNotes',$row['Note']);
}
$data = "";
$griddata = "";
$grid = "";
$entertainerid = $_POST['unique_listing_id'];
$mysqli = new mysqli($dbserver, $dbuser, $dbpass, $dbnameaf);
$sql2 = "CALL sp_GetFeedback(".$listing['unique_listing_id'].")";
$rs = $mysqli->query($sql2);
$numrows = mysqli_num_rows($rs)." Rows";
while($row = $rs->fetch_assoc()) {
$allRows[] = $row;
$style = ($altRowCount % 2 == 0 ? ' class="row" ' : ' class="row tdg" ');
$template_content->set('eventID',$row['EventID']);
$template_content->set('dateOfEvent',$row['DateOfEvent']);
$template_content->set('clientFollow',$row['ClientFollowUp']);
$template_content->set('performerFollow',$row['PerformerFollowUp']);
$griddata .= "
<div $style>
<div class='col-xs-2 col-sm-2 col-md-2' onclick=\"popupEvent('".$row['EventID']."')\">".$eventID."</div>
<div class='col-xs-2 col-sm-2 col-md-2'>".$dateOfEvent."</div>
<div class='col-xs-4 col-sm-4 col-md-4'>".$clientFollow."</div>
<div class='col-xs-4 col-sm-4 col-md-4'>".$performerFollow."</div>
</div>
";
$altRowCount = $altRowCount + 1;
}
$mysqli->close();
$grid = "
<div style='max-height: 110px; overflow: scroll;'>
<table class='fancygrid'>
<tbody>
".$griddata."
</tbody>
</table>
</div>
<!-- <div style='width: 100%; font-weight: bold; color: red;'>".$numrows."</div> -->
";
echo $gridHeader.$grid;
} //getEntertainerFeedback
} // is an office user logged in? -- end
以下是包含该网页HTML的附带listing.tpl文件中的代码:
<div class="row">
<div class='col-xs-2 col-sm-2 col-md-2' onclick="popupEvent(".$row['eventID'].")"><?php echo $eventID ?></div>
<div class='col-xs-2 col-sm-2 col-md-2'><?php echo $dateOfEvent ?></div>
<div class='col-xs-4 col-sm-4 col-md-4'><?php echo $clientFollow ?></div>
<div class='col-xs-4 col-sm-4 col-md-4'><?php echo $performerFollow ?></div>
</div>
我尝试添加
<?php
foreach ($allRows as $row) {
?>
<?php } ?>
围绕上面的html代码,但这根本不会导致任何记录显示,甚至不会显示。
由于您必须登录才能查看此数据,因此无法共享该链接,但是蓝色登录区域的内容与蓝色框底部显示的一条记录相似:
ETA:仅供参考 - 我也试过在我的HTML代码中回显.grid - 但这根本没有给我带来结果,不知道为什么。
任何帮助指出我正确的方向或告诉我我缺少的东西都非常感谢!!
谢谢!
答案 0 :(得分:2)
首先,您已经打开了两次数据库连接
$data = "";
$griddata = "";
$grid = "";
$entertainerid = $_POST['unique_listing_id'];
# remove this line, just to be sure it doesn't cause any problems
$mysqli = new mysqli($dbserver, $dbuser, $dbpass, $dbnameaf);
$sql2 = "CALL sp_GetFeedback(".$listing['unique_listing_id'].")";
其次,通过在while循环中打印一些东西来调试你的查询结果,只是为了确保查询返回多行作为结果
我应该尝试的最后一件事是在你的while循环之前将$ allRows声明为一个数组,只是为了安全
$allRows = array();
while($row = $rs->fetch_assoc()) {
$allRows[] = $row;
然后尝试这种方法
<?php
foreach ($allRows as $row) {
?>
<!-- HTML -->
<?php } ?>
修改强> 这看起来像某种View对象,所以你有预定义的HTML代码,你只需用数据库中的值填充它,所以我认为你的while语句在每个循环中覆盖你视图中的值,这就是为什么你可能得到一个记录。您的视图可能设计为包含一行/数据
$template_content->set('eventID',$row['EventID']);
$template_content->set('dateOfEvent',$row['DateOfEvent']);
$template_content->set('clientFollow',$row['ClientFollowUp']);
$template_content->set('performerFollow',$row['PerformerFollowUp']);