hallo liebe Genossen
Ich sitze seit ein paar Stunden an einer Gallerie für die Webseite meiner Schule, und habe nun verschiedene Lösungsansätze probiert, um die Bilder aus der Datenbank auszulesen und zeilenweise in jeweils 3 Spalten anzeigen zu lassen.
BILD1 | BILD2 | BILD3
BILD4 | BILD5 | BILD6
BILD7 | BILD8
Die Bildinfos werden aus der Datenbank gelesen, das Thumbnail sofern vorhanden dann aus dem jeweiligen Ordner der Kategorie gelesen.
Ich habe 2 Lösungsansätze probiert, wobei einer halbwegs funktioniert, dor aber das Problem besteht, dass nur dann die Reihe Bilder angezeigt wird, wenn es durch 3 Teilbar ist.
Folgender Code ist für meinen ersten Ansatz vorhanden:
Bei diesem Ansatz habe ich das Problem, dass nur dann eine neue Zeile aufgerufen wird, wenn die Schleife 3 mal durchlaufen wurde, also werden bei 26 Bildern eben nur 24 angezeigt, da der rest nur 2 bilder sind und die for-Schleife nicht aufgerufen wird.
###############################
Dann habe ich noch einen zweiten Ansatz, den ich irgendwo mal aufgegriffen hatte.
Dort wird alles per FOR-Schleife abgearbeitet, bedingt aber ein ARRAY.
Da ich die Daten ja mit FETCH_ARRAY auslese, habe ich eines, aber trotzdem funktioniert es nicht, ich denke es liegt daran, dass ich keine INDEXES habe.
Code hierzu:
Das ist alles mal bisschen provisorisch, aber wenns funzt kann man dann ja eh optimieren
Hier habe ich nun das Problem, dass auf das Array nicht zugriffen wird. Es ist ja vorhanden, aber das mit dem Index scheint nicht zu stimmen.
Ich habe mich schon durch die Doku von php gewälzt, aber werde nicht schlau.
Wie könnte ich dieses Problem, gut es sind 2.., beheben?
Ihr könnt es auch als Brainstomring betrachten, aber im grunde habe ich ja die Ansätze, nur bei der Durchführung hapert's...
ciaoo
sniper.de
Ich sitze seit ein paar Stunden an einer Gallerie für die Webseite meiner Schule, und habe nun verschiedene Lösungsansätze probiert, um die Bilder aus der Datenbank auszulesen und zeilenweise in jeweils 3 Spalten anzeigen zu lassen.
BILD1 | BILD2 | BILD3
BILD4 | BILD5 | BILD6
BILD7 | BILD8
Die Bildinfos werden aus der Datenbank gelesen, das Thumbnail sofern vorhanden dann aus dem jeweiligen Ordner der Kategorie gelesen.
Ich habe 2 Lösungsansätze probiert, wobei einer halbwegs funktioniert, dor aber das Problem besteht, dass nur dann die Reihe Bilder angezeigt wird, wenn es durch 3 Teilbar ist.
Folgender Code ist für meinen ersten Ansatz vorhanden:
PHP-Code:
// Kategorie vorhanden / laden
$kat = $db->query_first("SELECT ordner, ID, kategoriename
FROM kategorie WHERE ID = '".$_GET['katid']."' AND images = '1' ");
// Daten aus der Datenbank holen
$result = $db->query("SELECT bilder.bildid AS bildid,
bilder.dateiname AS bildname, bilder.dateigroesse AS bildfilesize,
bilder.thumbnail AS bildthumbnail,
bilder.bilddescription AS bilddescription, bilder.hits AS hits
FROM bilder
WHERE bilder.kategorie_id = '".$kat['ID']."' ORDER BY bilder.dateiname ASC ");
//$result = $db->query($sql);
//$kat2 = $db->fetch_array($result);
// Anzahl aller bilder
$anzahlpics = $db->num_rows($result);
// Gibt es überhaupt bilder?
if ($anzahlpics == 0) $gallery_kat_main = $tpl->fetch('no_gallery_pic.html');
// Spalten
$spalten = 3;
// Zeilen
$zeilen = ( $anzahlpics % $spalten )
? ( ( $anzahlpics - ( $anzahlpics % $spalten ) ) / $spalten + 1 )
:$anzahlpics / $spalten;
// Laufvariable
$i = 0;
while ( $katpics = $db->fetch_array($result) )
{
// es sind bestimmte Zeilen
// Also laufen wir die Schleife durch und
// machen nach jeder Zeile eine neue auf
// und setzen alles auf Anfangswerte
// Thumbnail vorhanden?
if ($katpics['bildthumbnail'] == '' )
{
$bildthumbnail = 'no_preview.gif';
}
else
{
$bildthumbnail = $kat['ordner'].'/'.$katpics['bildthumbnail'];
}
// Bild laden und Template verarbeiten
$assign = array(
'picsize' => sizeoutput( $katpics['bildfilesize'] ),
'url' => $conf['url'],
'hits' => $katpics['hits'],
'bildid' => $katpics['bildid'],
'bildname' => $katpics['bildname'],
'katordner' => $kat['ordner'],
'bildthumbnail' => $bildthumbnail
);
$tpl->assign($assign);
$mitte = $tpl->fetch('gallery_kat_main.html');
$td .= "\t\t<td class=\"hebel\">" . $mitte . "</td>\n";
$i++;
if ( $i == $spalten)
{
// Alle Spalten voll, also neue Zeile
$i = 0;
$gallery_kat_main .= "\t<tr align=\"center\"
onMouseOver=\"this.bgColor='".$conf['bg_main2']."'\"
onMouseOut=\"this.bgColor='".$conf['bg_main']."'\">\n" . $td . "\t</tr>\n";
$td = '';
}
}
// HIER erfolgt dann ausgabe über Smarty
###############################
Dann habe ich noch einen zweiten Ansatz, den ich irgendwo mal aufgegriffen hatte.
Dort wird alles per FOR-Schleife abgearbeitet, bedingt aber ein ARRAY.
Da ich die Daten ja mit FETCH_ARRAY auslese, habe ich eines, aber trotzdem funktioniert es nicht, ich denke es liegt daran, dass ich keine INDEXES habe.
Code hierzu:
PHP-Code:
// Kategorie vorhanden / laden
$kat = $db->query_first("SELECT ordner, ID, kategoriename
FROM kategorie WHERE ID = '".$_GET['katid']."' AND images = '1' ");
// Daten aus der Datenbank holen
$result = $db->query("SELECT bilder.bildid AS bildid,
bilder.dateiname AS bildname, bilder.dateigroesse AS bildfilesize,
bilder.thumbnail AS bildthumbnail,
bilder.bilddescription AS bilddescription, bilder.hits AS hits
FROM bilder
WHERE bilder.kategorie_id = '".$kat['ID']."' ORDER BY bilder.dateiname ASC ");
//$result = $db->query($sql);
//$kat2 = $db->fetch_array($result);
// Anzahl aller bilder
$anzahlpics = $db->num_rows($result);
// Gibt es überhaupt bilder?
if ($anzahlpics == 0) $gallery_kat_main =
$tpl->fetch('no_gallery_pic.html');
// Spalten
$spalten = 3;
// Zeilen
$zeilen = ( $anzahlpics % $spalten )
?( ( $anzahlpics - ( $anzahlpics % $spalten ) ) / $spalten + 1 )
:$anzahlpics / $spalten;
$katpics = mysql_fetch_array($result, MYSQL_NUM);
/* $z = 0;
while ( $katpics2 = mysql_fetch_array($result, MYSQL_NUM) )
{
$katpics[$z++] = $katpics2;
}*/
echo $zeilen."<br>".$spalten."<br>".$anzahlpics;
// Daten verabeiten
$tr = '';
// Zeile für Zeile
for( $i = 0;$i < $zeilen; ++$i )
{
// Spalte für Spalte
// Spalten auf leer setzen
$td = '';
for( $ii = 0;$ii < $spalten; ++$ii )
{
if (isset( $katpics[$i * $spalten + $ii] ) )
{
// Thumbnail vorhanden?
if ($katpics[$i * $spalten + $ii]['bildthumbnail'] == '' )
{
$bildthumbnail = 'no_preview.gif';
}
else
{
$bildthumbnail = $kat['ordner'].'/'.$katpics[$i * $spalten + $ii]['bildthumbnail'];
}
// Bild laden und Template verarbeiten
$assign = array(
'picsize' => sizeoutput( $katpics[$i * $spalten + $ii]['bildfilesize'] ),
'url' => $conf['url'],
'hits' => $katpics[$i * $spalten + $ii]['hits'],
'bildid' => $katpics[$i * $spalten + $ii]['bildid'],
'bildname' => $katpics[$i * $spalten + $ii]['bildname'],
'katordner' => $kat['ordner'],
'bildthumbnail' => $bildthumbnail
);
$tpl->assign($assign);
$mitte = $tpl->fetch('gallery_kat_main.html');
//$katpics2[$i * $spalten + $ii];
}
else
{
$mitte = " ";
}
// wenns nichts mehr gibt, ein
$td .= "\t\t<td class=\"hebel\">" . $mitte . "</td>\n";
}
// Ende des TRs
$gallery_kat_main .= "\t<tr align=\"center\"
onMouseOver=\"this.bgColor='".$conf['bg_main2']."'\"
onMouseOut=\"this.bgColor='".$conf['bg_main']."'\">\n" . $td . "\t</tr>\n";
}
// HIER Ausgabe über Smarty
Hier habe ich nun das Problem, dass auf das Array nicht zugriffen wird. Es ist ja vorhanden, aber das mit dem Index scheint nicht zu stimmen.
Ich habe mich schon durch die Doku von php gewälzt, aber werde nicht schlau.
Wie könnte ich dieses Problem, gut es sind 2.., beheben?
Ihr könnt es auch als Brainstomring betrachten, aber im grunde habe ich ja die Ansätze, nur bei der Durchführung hapert's...
ciaoo
sniper.de
Kommentar