Avatar billede myst1098 Nybegynder
18. juli 2006 - 18:55 Der er 17 kommentarer og
1 løsning

Slideshow med database

Kan man få sådan et her script til at hente billederne via en mysql database ?

<script language="javascript">

var delay=1000
var curindex=0

var randomimages=new Array()

    randomimages[0]="1.jpg"
    randomimages[1]="2.jpg"

var preload=new Array()

for (n=0;n<randomimages.length;n++)
{
    preload[n]=new Image()
    preload[n].src=randomimages[n]
}

document.write('<img name="defaultimage" src="'+randomimages[Math.floor(Math.random()*(randomimages.length))]+'">')

function rotateimage()
{

if (curindex==(tempindex=Math.floor(Math.random()*(randomimages.length)))){
curindex=curindex==0? 1 : curindex-1
}
else
curindex=tempindex

    document.images.defaultimage.src=randomimages[curindex]
}

setInterval("rotateimage()",delay)

</script>
Avatar billede nielle Nybegynder
18. juli 2006 - 19:08 #1
Det burde du kunne gøre ved at ændre denne del:


var randomimages=new Array()

    randomimages[0]="1.jpg"
    randomimages[1]="2.jpg"


- til noget i stil med:


var randomimages=new Array()
<?php
$sql = "SELECT billede FROM dinBilledeTabel";
$result = mysql_query($sql) or die(mysql_error());

$counter = 0;
while ($row = mysql_fetch_assoc($result))
{
    echo "randomimages[" . $counter . "]=\"" . $row["billede"] . "\"\n";
    $counter++;
}
?>
Avatar billede myst1098 Nybegynder
18. juli 2006 - 19:22 #2
hmm.. forstår ikke helt...

Det er jo nemt nok at plukke random fra databasen så det burde vel ikke gøres ekstra i js bagefter.

$foresp = mysql_query("SELECT * FROM pictures order BY RAND() LIMIT 1");
Avatar billede nielle Nybegynder
18. juli 2006 - 19:29 #3
Jeg tilpassede den bare til den javascript kode som du postede.

Fordelen ved at lade javascriptet om at køre slideshowet er at du ikke skal en tur forbi serveren og databasen for hvert nyt billede.
Avatar billede myst1098 Nybegynder
18. juli 2006 - 19:29 #4
ok, så alle billederne indlæses i et array ?
Avatar billede myst1098 Nybegynder
18. juli 2006 - 19:31 #5
Jeg har i forvejen lavet denne funktion til at hente selve billedet med...

<?
function hent_billede() {
$foresp = mysql_query("SELECT * FROM pictures  order BY RAND() LIMIT 1");
while($data = mysql_fetch_row($foresp)){
echo $data[2]."thumb_".$data[3];
echo "<p><img class='billed' border='1' src='http://x.dk/album/albums/".$data[2]."thumb_".$data[3]."' ></p>";
}
mysql_close();
}
?>
Avatar billede nielle Nybegynder
18. juli 2006 - 19:36 #6
18/07-2006 19:29:53> Ja.

Prøv at køre koden, og lav dig så en Vis Kode. Så burde du geren se alle billederne blive lagt pælt i JS arrayet.
Avatar billede myst1098 Nybegynder
18. juli 2006 - 20:58 #7
Det virker...

Jeg har denne kode til at styre højde/bredde med:

<style type="text/css">
<!--
.billed {max-width:150; max-height:100;}
-->
</style>

Hvordan får jeg lagt den ind ?

Jeg har forsøgt med:

document.write('<img class='billed' name="defaultimage" src="'+randomimages[Math.floor(Math.random()*(randomimages.length))]+'">')

men det virker tilsyneladende ikke ...
Avatar billede nielle Nybegynder
18. juli 2006 - 21:10 #8
Hvordan med:

<style>
img.billed {max-width:150px; max-height:100px;}
</style>
Avatar billede myst1098 Nybegynder
18. juli 2006 - 21:17 #9
nops...

har forsøgt med dit forslag og så ændret til

document.write('<img class='img.billed' name="defaultimage" src="'+randomimages[Math.floor(Math.random()*(randomimages.length))]+'">')

eller document.write('<img class='billed' name="defaultimage" src="'+randomimages[Math.floor(Math.random()*(randomimages.length))]+'">')

Men det giver bare en blank skærm...
Avatar billede myst1098 Nybegynder
18. juli 2006 - 21:17 #10
Ændrede lige points til 30 nu hvor spørgsmålet udvidede sig lidt...
Avatar billede nielle Nybegynder
18. juli 2006 - 21:24 #11
Hm, lidt mystisk. Prøv med:

document.write('<img name="defaultimage" src="'+randomimages[Math.floor(Math.random()*(randomimages.length))]+'" style="max-width:150px; max-height:100px;">')
Avatar billede myst1098 Nybegynder
18. juli 2006 - 21:26 #12
hjælper ikke...
Avatar billede nielle Nybegynder
18. juli 2006 - 21:33 #13
Det tyder jo kraftigt på at man så ikke kan bruge max-width og max-height i den sammenhæng.

Hvordan med:

document.write('<img name="defaultimage" src="'+randomimages[Math.floor(Math.random()*(randomimages.length))]+'" style="width: 150px; height: 100px;">')
Avatar billede myst1098 Nybegynder
18. juli 2006 - 21:38 #14
Ja, det ku det tyde på for alm. height og width virker fint nok....

Æv... Bliver en smule svært at styre proportionerne så...
Avatar billede nielle Nybegynder
18. juli 2006 - 21:45 #15
Tja, den er god nok; Det virker ikke for en img-tag:

http://www.blooberry.com/indexdot/css/properties/dimension/maxwidth.htm

Mit bedste bud på en løsning er simpelthen at have billederne liggende i de rigtige dimensioner til at starte med.
Avatar billede myst1098 Nybegynder
18. juli 2006 - 21:47 #16
Jep...

Billederne jeg henter er thumb'sne fra Coppermine og de varierer lidt i størrelsen.

Nå pyt... Du hjalp og der er 30 points klar når du smider et svar :o)
Avatar billede nielle Nybegynder
18. juli 2006 - 21:49 #17
Hvis de kun variere lidt er det vel heller ikke det helt store problem?
Avatar billede myst1098 Nybegynder
18. juli 2006 - 21:52 #18
he he... jo, der er nogle panorama billeder der er ret brede som thumbs men dem retter jeg bare manuelt ned til en acceptabel bredde og så er roblemet løst :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester