0

レイアウトと並べ替え順で画像を並べ替えようとしています。私はそれをやりましたが、正確にどのように見せたいかではありません。

<div id="sortableImages">
    <ul>
        <?php
            $galleryID = $_SESSION['newGalleryId'];

            $query  = "SELECT * 
                        FROM galleryimage 
                        WHERE galleryId = $galleryID
                        ORDER BY sort 
                        AND layout
                        ASC";
            $result = mysql_query($query);

            while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $sortImageName = $row['OrgImageName']; 
                $sortPath = "../data/gallery/" . $_GET['edit'] . "/images/album/" . $sortImageName;
        ?>
            <li class="sortPhotos" id="recordsArray_<?php echo $row['id']; ?>">
                <img src="<?php echo $sortPath ?>"  />                            
            </li>
        <?php } ?>
    </ul>
</div>

これにより、次の出力が得られます

<ul class="ui-sortable">
                    <li class="sortPhotos" id="recordsArray_1392">
                <img src="../data/gallery/208/images/album/front_cover.jpg"  />                            
            </li>
                    <li class="sortPhotos" id="recordsArray_1393">
                <img src="../data/gallery/208/images/album/007.jpg"  />                            
            </li>
                    <li class="sortPhotos" id="recordsArray_1394">
                <img src="../data/gallery/208/images/album/009.jpg"  />                            
            </li>
</ul>

私はそれを次のように見せたいと思います

<h2>Layout 1</h2>
<ul class="ui-sortable">
                    <li class="sortPhotos" id="recordsArray_1392">
                <img src="../data/gallery/208/images/album/front_cover.jpg"  />                            
            </li>
</ul>
<h2>Layout 2</h2>
<ul>
                    <li class="sortPhotos" id="recordsArray_1393">
                <img src="../data/gallery/208/images/album/007.jpg"  />                            
            </li>
                    <li class="sortPhotos" id="recordsArray_1394">
                <img src="../data/gallery/208/images/album/009.jpg"  />                            
            </li>
</ul>

PHPでループを正しくネストする方法を理解するのに少し助けが必要です。どんな助けでも大きな助けになるでしょう。ありがとう

4

3 に答える 3

1
<?php

$galleryID = $_SESSION['newGalleryId'];

$layout1 = $layout2 = "";

$query  = "SELECT * 
            FROM galleryimage 
            WHERE galleryId = $galleryID
            ORDER BY sort 
            AND layout
            ASC";
$result = mysql_query($query);

while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $sortImageName = $row['OrgImageName']; 
    $sortPath = "../data/gallery/" . $_GET['edit'] . "/images/album/" . $sortImageName;
    if ($sortImageName == 'front_cover.jpg'){
        $layout1 .= 
            "<li class='sortPhotos' id='recordsArray_{$row['id']}'>
                <img src="$sortPath"  />                            
            </li>";
    } else {
        $layout2 .= 
            "<li class='sortPhotos' id='recordsArray_{$row['id']}'>
                <img src="$sortPath"  />                            
            </li>";
    }
} 
?>
<h2>Layout 1</h2>
<ul class="ui-sortable">
    <?=$layout1?>
</ul>
<h2>Layout 2</h2>
<ul>
    <?=$layout2?>
</ul>
于 2012-06-14T22:52:52.913 に答える
0

フラグを適切に設定する必要があります。

<div id="sortableImages">
    <h2>Layout 1</h2>
    <ul class="ui-sortable">

    // Etc...

    $first = true;
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        $sortImageName = $row['OrgImageName']; 
        $sortPath = "../data/gallery/" . $_GET['edit'] . "/images/album/" . $sortImageName;

    ?>
        <li class="sortPhotos" id="recordsArray_<?php echo $row['id']; ?>">
             <img src="<?php echo $sortPath ?>"  />                            
        </li>
    <?php 
        if( $first === true) {
            $first = false;
    ?>
    </ul>
        <h2>Layout 2</h2>
    <ul>
    <?php
        }
    } 
?>
    </ul> 
</div>
于 2012-06-14T22:47:42.567 に答える
0

$query = "SELECT * FROM galleryimage WHERE galleryId = $galleryID ORDER BY sort AND layout ASC";

次のようにする必要があります。

SELECT 
   layout,sort, id, orgImageName 
FROM galleryimage
GROUP BY layout
ORDER BY layout, sort
于 2012-06-14T22:52:38.740 に答える