2

ここに、データベースの画像をWebページに表示するforeachループがあります。私がやりたいのは、foreachループを逆方向に繰り返すことです。そのため、最新のコンテンツが最初にWebページに表示されます。これが私のコードです:

$sql = "SELECT COUNT(*) FROM 'UPLOADPICS'";

    if ($sth = $dbhandle->query($sql)){
        if ($sth->fetchColumn() > 0){
            $sql = "SELECT link FROM 'UPLOADPICS'";
            foreach ($dbhandle->query($sql) as $row){
                $content = $row['link'];
                ?>
                <img src="<?php echo $content ?>" />
                <br/>
                <br/>
                <?php
            }
        }

        else {
            print "No rows matched the query";
        }

これは可能ですか?よろしくお願いします!

4

6 に答える 6

6

逆方向にループするのではなく、結果を並べ替えて、ORDER BY最新のアイテムを最初に表示することができます。これは通常、使用される最も一般的な方法です。

SELECT foo, bar 
FROM uploadpics 
ORDER BY 
  date DESC

もちろん、これは単なる提案ではありません。最初に新しい配列コレクションに値をロードしてから、それを逆方向に反復処理しない限り、値を逆に実行することはできません。そのため、貴重な時間とリソースを浪費することになります。

于 2012-05-16T01:55:18.137 に答える
2

テーブルに日付フィールドがない場合.. id で降順で並べ替えることができます

    $sql = "SELECT link FROM `UPLOADPICS` ORDER BY `id` DESC";

それが気に入らない場合は、array_reverse() 関数を使用できます

于 2012-05-16T08:21:52.323 に答える
0

配列のカウントを実行し、反復ごとに1ずつ減少する単純なインデックス変数を使用して、配列を逆方向に反復することができます。

$arr = $dbhandle->query($sql);
$i = count($arr) - 1;

while ($i >= 0)
{
    $content = $arr[$i]['link'];
    ?>
    <img src="<?php echo $content ?>" />
    <?php
    $i--;
}
于 2012-05-16T01:55:30.710 に答える
0

含めるOrder By方が適切ですが、日付フィールドがない場合があります。

PHPのarray_reverse() 関数を使用すると、配列が逆になります。あなたの場合、最初に配列を逆にしてから foreach を適用します。

お役に立てれば

于 2012-05-16T05:04:00.467 に答える
0
$array=array("uno"=>array(1),"pepito"=>array(1),"clase"=>array(1),"a123"=>array(1));
echo 'normal<br>';
foreach($array as $k=>$v){
    echo $k." = ".$v."<br>";
}
echo 'back<br>';
foreach(array_reverse($array) as $k=>$v){
    echo $k." = ".$v."<br>";
}
于 2013-02-05T21:50:31.233 に答える