Autor Zpráva
lolin33
Profil *
Dobrý večer,

mám menší problém s výpisem dat z databáze. Dělám si správu obrázků a potřeboval bych poradit, jak udělat aby při výpisu obrázku z databáze ( u článku mají přiřazené id ) zobrazil pouze jeden obrázek s přiřazeným id a další obrázky by se zobrazily až po kliknutí na první obrázek.

Je to prakticky mini galerie s řazením obrázku do složek.
M,ohl by mi někdo zkušenější poradit, jak toho docílit?

mnohokrát díky.
whoami
Profil
Při výpisu článků postupuješ podobně..: (neřeším řazení či filtry)
$clanky = array();
$sth = $pdo->prepare("SELECT * FROM clanky ORDER BY id DESC LIMIT 10");
if ( $sth->execute() ) {
$clanky = $sth->fetchAll();
}
Potom získáš fotky k článkům..:
$clanky_id = array();
foreach ( $clanky as $clanek ) {
$clanky_id[] = $clanek['id'];
}
$obrazky = array();
$sth = $pdo->prepare("SELECT * FROM clanky_obrazky WHERE clanek_id IN (:clanky_id) ORDER BY priority ASC, id ASC");
if ( $sth->execute(array(':clanky_id' => implode(',', $clanky_id))) ) {
foreach ( $sth->fetchAll() as $obrazek ) {
$obrazky[($obrazek['clanek_id'])][] = $obrazek;
}
}
při výpisu článků pak můžeš získat první obrázek takto:
foreach ( $clanky as $clanek ) {
echo 'Clanek: '.$clanek['jmeno'];
echo '<img src="'.$obrazky[($clanek['id'])][0]['adresa'].'" alt="Obrázek k '.$clanek['jmeno'].'" />';
}
A pokud máš ostatní obrázky pomoc´něajkého javascriptového něčeho tak je tam načteš podle potřeby všechny pomocí..:
//...
foreach ( $obrazky[($clanek['id'])] as $obrazek ) {
echo '<img src="'.$obrazek['adresa'].'" alt="Obrázek k '.$clanek['jmeno'].'" />';
}
//...
A pokud je galerie na jiné stránce tak si obrázky stáhneš obdobně..:
$obrazky = array();
$sth = $pdo->prepare("SELECT * FROM clanky_obrazky WHERE clanek_id = :clanek_id ORDER BY priority ASC, id ASC");
if ( $sth->execute(array(':clanek_id' => $_GET['clanek'])) ) {
$obrazky = $sth->fetchAll();
}
foreach ( $obrazky as $obrazek ) {
echo '<img src="'.$obrazek['adresa'].'" alt="" />';
}
a k tomu můžeš klidně stáhnout ten článek a ukázat tam název a podobně..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0