Bildgalerie horizont- u. vertikal Format

fredolin

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Problem. Ich habe eine Bildgalerie von Artikelfotos. Nun habe ich in dieser Datenbank Bilder in vertikal und horizontalem Format. Kann ich die Abfrage zum auslesen der Bilder so aufbauen, das ich die Vertikalen Bilder zusammen und dann die horizontalen Bilder zusammen auslesen kann?

Habe es versucht über $imginfo und somit das Größenverhältnis zu ermitteln.

Ich würde mich sehr freuen wenn Ihr mir da Denkanstöße geben könntet.

Viele Grüße Fredolin
 
Du kannst die Abfrage sehr leicht umsetzen, wenn Du die Dimensionen der Bilder mit in der Datenbank speicherst. Dann gilt logischerweise:
Höhe > Breite => vertikal
Höhe < Breite => horizontal
 
hallo ,

ich habe bei mir e momentan so auf gebaut:
PHP:
// db-abfrage
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 
$pfad = 'img/artikel_pic/'.$row['artbild'];
            $imginfo = getimagesize($pfad);
            $sizewidth = ceil(filesize($imginfo[0])/1024);
            $sizeheight = ceil(filesize($imginfo[1])/1024);
                if($sizewidth > $sizeheight) {
                    echo '<div class="artbildbox radius12 gray90"><a href="?act=artdetail&amp;artID='.$row['artID'].'"><img src="'.$pfad.'" width='.$imginfo[0].'" height='.$imginfo[1].'" alt="'.$row['artname'].'" title="'.$row['artname'].'" border="0" /></a></div>';
                } elseif($sizewidth < $sizeheight) {
                    echo '<div class="artbildbox radius12 gray90"><a href="?act=artdetail&amp;artID='.$row['artID'].'"><img src="'.$pfad.'" width='.$imginfo[0].'" height='.$imginfo[1].'" alt="'.$row['artname'].'" title="'.$row['artname'].'" border="0" /></a></div>';
                }
            } else {
                echo '<div class="artbildbox gray90">No Image found</div>';
            }

was ich aber gerne erreichen möchte ist, das ich zuerst alle vertikalen Bilder anzeige und dann alle horizontale Bilder. Cool wäre auch, wenn ich dann genau sagen könnte in jeder Zeile nur 3 Bilder.
und genau dazu benötige ich Hilfe...
 
PHP:
$path = 'img/artikel_pic/';
$images = array();
while ( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ) {
  $dimensions = getimagesize( $path . $row[ 'artbild' ] );
  $row[ 'width'  ] = $dimensions[0];
  $row[ 'height' ] = $dimensions[1];
  $row[ 'orientation' ] = ( $dimensions[0] > $dimensions[1] ) ? 'horizontal' : 'vertical';
  $images[] = $row;
}

usort( $images, function ( $a, $b ) {
  $a = ( $a[ 'orientation' ] == 'vertical' );
  $b = ( $b[ 'orientation' ] == 'vertical' );

  if ( $a == $b ) {
    return 0;
  } elseif ( $a && !$b ) {
    return 1;
  } else {
    return -1;
  }
});

$images; # enthält Bilddaten, wobei erst vertikale Bilder und dann erst horizontale Bilder erscheinen
 
Hallo einfach nur crack,

erst mal danke für deine Hilfe. Aber ich speichere die Werte Höhe, Beite nicht in der Datenbank. Könnte ich deine Werte $row['width'] und $row['height'] auch mit den Werten, die ich über $imginfo[0] und $imginfo[1] befüllen?

Gruß Fredolin
 
Was Du da mit dem filesize() und dem ceil() machst, ist mir ein Rätsel - persönlich würde ich es als absoluten Bullshit bezeichnen. Abgesehen davon befülle ich doch die Werte genau damit, nur das meine Variable anders heißt.
 
Zuletzt bearbeitet:
lacht, da hast du recht einfach nur crack .. den filesize() und ceil() habe ich auch wech gehauen.. das war echt Blödsinn gewesen... aber ich habe herum probiert.. und bin noch anfänger in sachen php und mysql ..

gruß fredolin
 
Um Dich noch etwas zu verwirren, habe ich die Sortierfunktion noch etwas gekürzt:
PHP:
usort( $images, function ( $a, $b ) {
  $a = ( $a[ 'orientation' ] == 'vertical' );
  $b = ( $b[ 'orientation' ] == 'vertical' );
  return ($a ^ $b) * ($b ? -1 : 1);
});
 

Neue Beiträge

Zurück