循环PHP循环

时间:2015-01-28 20:28:22

标签: php while-loop

好的,这是我第一次使用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 &amp; 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); 
?>

任何有关如何为我工作的见解都将非常受欢迎。

1 个答案:

答案 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 ";