Navigation
Supportsider
Senest Online
flj 1 Dag
kn-aa 2 Dage
helmuth 2 Dage
Henrik Bendtsen 1 Uge
HenningS 1 Uge
ovejnielsen 2 Uger
Doom1 2 Uger
orgermer 4 Uger
eigil-t 4 Uger
iceman50 5 Uger
Besøgende
Gæster online: 2

Brugere online: 0

Antal brugere: 174
Nyeste bruger: Michael Mogensen
Se indlæg
PHP-Fusion - Danmark » PHP-Fusion version 7 » Elementer v7
 Udskriv debat
Forside billeder
Leif_elsborg
Hej


jeg har et element kørende på forsiden, hvor der vises fire forskellige billeder fra et tilfældig fotoalbum.

det kan se på www.alssundfotoklub.dk

Nu er det sådan at jeg ønsker scriptet ændret så jeg bestemmer hvilke galleri, den skal hente fra, er der nogen der kan hjælpe mig hvor der skal rettes


Start element kode:

openside('Tilfældige billeder');
$i=0;
echo "";
while($i<4){
$album = $data['album_id'];
$album_real = "photoalbum/album_" . $album . "";
$result=dbquery(
"SELECT * FROM ".DB_PHOTO_ALBUMS." ta ".
"INNER JOIN ".DB_PHOTOS." USING (album_id) ORDER BY RAND() LIMIT 1"
);
if (dbrows($result) == 1) {
$data=dbarray($result);
//Checker om safemode er on eller ej
if ('!SAFEMODE') {
$album = $data['album_id'];
$album_real = "photoalbum/album_" . $album . "";
}
$image_url="";
$filename=PHOTOS.$data['photo_id'].'t.jpg';
if (!file_exists($filename)) $filename=$image_url.'/imagenotfound.jpg';
echo "";
$i+=1;
}
}
echo"
";
echo "'".$data['photo_title']."'  ";
echo "
";
closeside();
Redigeret af Leif_elsborg d. 31-05-2015 13:16
Med venlig hilsen

Leif Elsborg
www.elsborg1.dk
 
www.elsborg1.dk
ejvindh
Jeg bruger ikke selv album-funktionen, så er lidt i tvivl om, hvordan de lagres. Men hvad får du, hvis du ændrer Query-strengen til:


$result=dbquery(
"SELECT * FROM ".DB_PHOTO_ALBUMS." ta ".
"WHERE album_id='1' INNER JOIN ".DB_PHOTOS." USING (album_id) ORDER BY RAND() LIMIT 1"
);

(hvor du retter album_id til efter dit ønske)
 
Leif_elsborg
Hej igen

Nu har jeg testet dit forslag, men det virker ikke, hjemmesiden prøver på at loade, men den kommer ikke frem.

Elementet kaldes jo på forsiden, så når jeg kalder hjemmesiden, så skriver chrome nederst at den venter på siden, så på en eller anden måde sendes den på skovtur
Med venlig hilsen

Leif Elsborg
www.elsborg1.dk
 
www.elsborg1.dk
ejvindh
Måske kan det have noget at gøre med, hvordan den deler linierne. Hvad sker der hvis du gør sådan:


$result=dbquery("SELECT * FROM ".DB_PHOTO_ALBUMS." ta WHERE album_id='1' INNER JOIN ".DB_PHOTOS." USING (album_id) ORDER BY RAND() LIMIT 1");


(btw: jeg er faktisk ikke klar over hvad "ta" gør i linien, men har beholdt den da den var i forlæget)

Alternativ:

$result=dbquery("SELECT * FROM ".DB_PHOTO_ALBUMS." ta INNER JOIN ".DB_PHOTOS." WHERE ".DB_PHOTOS.".album_id = '1' USING (album_id) ORDER BY RAND() LIMIT 1");
 
janmol
Relativt enkelt ... siger han :)

Den du skal have fat i, er den her:

PHP
  1. <?php
  2. ORDER BY RAND() LIMIT 1
  3. ?>


Det betyder, at man ved hvert gennemløb vælger et enkelt tilfældigt billede. Hvis man nu siger, at album_id = 1 (at det altså er dette album, du vil vise billeder fra), så skal udtrykket se sådan her ud:

PHP
  1. <?php
  2. WHERE album_id = 1 ORDER BY RAND() LIMIT 4
  3. ?>


I dit element, kører udvælgelsen fire gange. Men skal du bare bruge 4 billeder fra det samme album, så kunne du i stedet bruge nedenstående kode:

PHP
  1. <?php
  2. openside('Tilfældige billeder');
  3. echo "<table align='center'><tr>";
  4. $result=dbquery("SELECT * FROM ".DB_PHOTO_ALBUMS." ta ".
  5. "INNER JOIN ".DB_PHOTOS." USING (album_id) WHERE album_id = 1 ORDER BY RAND() LIMIT 4");
  6. echo "<tr>";
  7. while ($data = dbarray($result)) {
  8. echo "<td><a href='".BASEDIR."photogallery.php?photo_id=".$data['photo_id']."'><img src='".BASEDIR."images/photoalbum/album_".$data['album_id']."/".$data['photo_thumb1']."' alt='".$data['photo_title']."' border='0' /></a>&nbsp;&nbsp;</td>";
  9. }
  10. echo"</tr></table>";
  11. closeside();
  12. ?>


Har testet det på en lokal side, og det ser ud til at virke efter hensigten.
Take it easy but take it.
.........................................................
Jan Mølgaard, it-konsulent og oversætter
http://wordit.dk
 
http://wordit.dk
Leif_elsborg
Hej begge to

nu fik jeg det til at fungere, jeg valgte følgende ændring

"INNER JOIN ".DB_PHOTOS." USING (album_id) WHERE album_id = 99 ORDER BY RAND() LIMIT 1"


Jeg ved ikke rigtig, hvad der betyder, men hvis jeg ændrer limit så virker det ikke


Til Jan, jeg ville egentlig gerne bruge dit eksempel fra #5, men får følgende fejlkode:

Parse error: syntax error, unexpected '<' in /customers/9/e/e/alssundfotoklub.dk/httpd.www/administration/panel_editor.php(153) : eval()'d code on line 1

Problemet er ikke større end jeg kan den anden løsning, nu er det bare bliver lidt nysgerrig hvor det ikke vil køre
Redigeret af Leif_elsborg d. 01-06-2015 23:02
Med venlig hilsen

Leif Elsborg
www.elsborg1.dk
 
www.elsborg1.dk
janmol
Du får nok fejlen, fordi der er et < for meget et sted. Hvis jeg får adgang til din side (som admin), så kan jeg prøve at lægge koden ind. Så kan du selv beslutte, om du vil bruge den. Send mig eventuelt en PB.
Take it easy but take it.
.........................................................
Jan Mølgaard, it-konsulent og oversætter
http://wordit.dk
 
http://wordit.dk
Spring til debat: