好的,这是我第一次使用Stack,所以我提前为我做错的任何事情道歉。
情况: 我有一个用PHP重写HTML代码的类项目。这是HTML代码的片段。
<div class="col-small-6 col-med-6 col-lg-4 albumContainer">
<img src="_images/elephant_king_cover_240x240.png" alt="">
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">Elephant King</a></h2>
</div>
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body">
<ol>
<li>Elephant King</li>
<li>Joy & Sorrow</li>
<li>Traverse</li>
<li>Tres Capos</li>
<li>Timepiece</li>
<li>Adventures in Sawyerland</li>
<li>Be Still</li>
<li>Overtime</li>
<li>Bongolo</li>
<li>Coronation</li>
<li>Anchor</li>
</ol>
<h3>available at:</h3>
<a href="https://itunes.apple.com/us/album/elephant-king/id512331651">iTunes</a>
<a href="https://rads.stackoverflow.com/amzn/click/com/B007G3SEFW" rel="nofollow noreferrer">Amazon</a>
<a href="http://store.whatarerecords.com/collections/trace-bundy/products/trace-bundy-elephant-king-1">United Interests</a>
</div>
</div>
</div>
</div>
</div><!-- end albumContainer -->
结构以不同的内容重复。
问题: 当我运行我的SQl / PHP时,我得到了我要求的所有信息,但它没有正确呈现。我一遍又一遍地获取所有信息,因为有许多不同的歌曲标题(有序列表)。 我希望每个部分都能运行一次,歌曲标题是手风琴的内容。这是我一直在搞乱的SQL / PHP代码。
<?php
require('mysqli_connect_remote.php');
$q = "SELECT Album_Art, Concat(Title, ' ', Release_Date) AS Title, destination, direction, Songs.Name FROM Albums Inner JOIN Songs ON Albums.Album_id=Songs.Album_id ";
$result = mysqli_query($dbcon, $q);
if ($result){
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo '<div class="col-small-6 col-med-6 col-lg-4 albumContainer">';
echo '<img src=' . $row['Album_Art'] . 'alt="">';
echo '<div class="panel-group" id="accordion">';
echo '<div class="panel panel-default">';
echo '<div class="panel-heading">';
echo '<h2 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href=' . $row['direction'] . '>' . $row['Title'] . '</a></h2></div><div id=' . $row['destination'] . ' class="panel-collapse collapse"><div class="panel-body">';
echo '<ol> <li>' . $row['Name'] . '</li> </ol> </div></div></div></div></div>';
}
// <h3>available at:</h3>
// <a href=' . ['Location'] . '>iTunes</a>
// <a href=' . ['Location2'] . '>Amazon</a>
// <a href=' . ['Location3'] . '>United Interests</a>
// ';}
mysqli_free_result ($result);
} else {
echo '<p class="error">The current users could not be retrieved. We apologize for any inconvenience.</p>';
echo '<p>' . mysqli_error($dbcon) . '<br><br />Query: ' . $q . '</p>';
}
mysqli_close($dbcon);
?>
任何有关如何为我工作的见解都将非常受欢迎。
答案 0 :(得分:0)
首先,如果您在循环中执行循环,或在循环中使用if语句,或在if语句中循环,请更好地缩进以清除其中的内容。听起来微不足道,但它在世界上有所不同。
我建议丢掉埃及括号。你知道,那些像埃及人一样行走的人。也就是说,开始将开始括号放在一个新行上,这样开始和结束括号就会对齐,这样可以很容易地看到支架丢失的时候。
我在不改变任何内容的情况下重新缩进代码:
if ($result)
{
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
echo '<div class="col-small-6 col-med-6 col-lg-4 albumContainer">';
echo '<img src=' . $row['Album_Art'] . 'alt="">';
echo '<div class="panel-group" id="accordion">';
echo '<div class="panel panel-default">';
echo '<div class="panel-heading">';
echo '<h2 class="panel-title"><a data-toggle="collapse" data-parent="#accordion" href=' . $row['direction'] . '>' . $row['Title'] . '</a></h2></div><div id=' . $row['destination'] . ' class="panel-collapse collapse"><div class="panel-body">';
echo '<ol> <li>' . $row['Name'] . '</li> </ol> </div></div></div></div></div>';
}
/*<h3>available at:</h3>
<a href=' . ['Location'] . '>iTunes</a>
<a href=' . ['Location2'] . '>Amazon</a>
<a href=' . ['Location3'] . '>United Interests</a>
';}*/
mysqli_free_result ($result);
}
else
{
echo '<p class="error">The current users could not be retrieved. We apologize for any inconvenience.</p>';
echo '<p>' . mysqli_error($dbcon) . '<br><br />Query: ' . $q . '</p>';
}
mysqli_close($dbcon);
?>
现在你可以看到发生了什么。最初,当我第一次重新缩进时,我错过了一个隐藏在长长行末尾的一个右括号,并认为你错过了循环的结束括号。
似乎问题实际上是你的SQL查询。在那里投掷distinct
可能会解决它:
$q = "SELECT DISTINCT Album_Art, Concat(Title, ' ', Release_Date) AS Title, destination, direction, Songs.Name FROM Albums Inner JOIN Songs ON Albums.Album_id=Songs.Album_id ";