Avatar billede uhreskov Nybegynder
09. maj 2007 - 07:06 Der er 32 kommentarer og
1 løsning

Hvordan laver jeg "Random" fotos ?

Hejsa !

Vil høre om der er en af jer der kan hjælpe mig lidt videre med at lave et script der kan blande billeder på min side ?

Jeg har fundet et script på nettet der ser sådan her ud:

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var timeDelay = 2; // change delay time in seconds
var Pix = new Array
("r2.jpg"
,"r14.jpg"
,"r16.jpg"
,"r17.jpg"
,"r18.jpg"
,"r19.jpg"
,"r20.jpg"
,"r21.jpg"
,"r22.jpg"
,"r23.jpg"
,"r3.jpg"
,"r4.jpg"
,"r5.jpg"
,"r6.jpg"
,"r7.jpg"
,"r8.jpg"
,"r9.jpg"
,"r10.jpg"
,"r11.jpg"
,"r12.jpg"
);
var howMany = Pix.length;
timeDelay *= 1000;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];
function startPix() {
setInterval("slideshow()", timeDelay);
}
function slideshow() {
PicCurrentNum++;
if (PicCurrentNum == howMany) {
PicCurrentNum = 0;
}
PicCurrent.src = Pix[PicCurrentNum];
document["ChangingPix"].src = PicCurrent.src;
}
//  End -->
</script>


Er det muligt at skrive det om så jeg kan få scriptet til at "Kigge" i en mappe på min server og få den til at "Random" billederne i mappen ?
For i det script jeg har "Pastet" overpå, skal man manuelt selv skrive navnet på hvert billede ind..

Håber i har en god idé, eventuelt et alternativ til hvordan man laver random fotos..

På forhånd TAK !
Uhreskov.
Avatar billede Slettet bruger
09. maj 2007 - 08:06 #1
Du kan ikke med Javascript kigge en mappe igennem.
Men det kan du enten med PHP, ASP/.NET ect. til dit javascript, og derefter så tag en random en.
Avatar billede uhreskov Nybegynder
09. maj 2007 - 08:14 #2
Hejsa coldgate...

Min hjemmeside er lavet i PHP, har du noget idé til hvordan det så kan laves, stadig så den "Kigger" en en mappe...
Eks. www.domain.dk/fotos/

Mvh.
Uhreskov.
Avatar billede Slettet bruger
09. maj 2007 - 08:29 #3
Ja du laver en fil, som 'scanner' din mappe.
Der hvor du har dit javascript der laver vi vores scanning.

Du kan se funktionen her: http://dk.php.net/manual/da/function.scandir.php

<?PHP
## Vi skanner vores mappe
$dir = "fotos";
$files = scandir($dir);
$images = array();
$finish = "";
$i = 1;
foreach($files as $file) {
  if($file <> "." && $file <> "..") {
      $images[] = $file;
  }
}

foreach($images as $file) {
  if($i <> count($images)) {
    $finish = "\"".$dir."/".$file."\",";
  } else {
    $finish = "\"".$dir."/".$file."\"";
  }
}
?>

I dit java script:



<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var timeDelay = 2; // change delay time in seconds
var Pix = new Array(<?PHP echo $finish; ?>);
var howMany = Pix.length;
timeDelay *= 1000;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];
function startPix() {
setInterval("slideshow()", timeDelay);
}
function slideshow() {
PicCurrentNum++;
if (PicCurrentNum == howMany) {
PicCurrentNum = 0;
}
PicCurrent.src = Pix[PicCurrentNum];
document["ChangingPix"].src = PicCurrent.src;
}
//  End -->
</script>
Avatar billede uhreskov Nybegynder
09. maj 2007 - 16:28 #4
Hej igen coldgate...
Wauw det ser spændende ud, jeg er dog ikke helt sikker på hvor meget jeg skal bruge af scriptet ? Om jeg både skal ha' både PHP koden og javascriptet lagt ind på min side.. ?

Det vil jeg rode lidt med,
TAK for hjælpen :o)

Uhreskov.
Avatar billede Slettet bruger
09. maj 2007 - 18:13 #5
Du skal bruge begge dele, da PHP'en læser fra mappen du skriver $dir ligmed.
Og skriver det så ud til Javascriptet.
Avatar billede uhreskov Nybegynder
09. maj 2007 - 19:44 #6
Hej coldgate..
ok det må jeg se om jeg kan finde ud af at få sat sammen...
Min side er lavet i php-fusion.

Tak igen.
Uhreskov.
Avatar billede uhreskov Nybegynder
10. maj 2007 - 07:21 #7
coldgate...
jeg kunne godt bruge lidt mere hjælp.. Kan ikke få det til at virke, jeg er i tvivl om hvordan de 2 script skal "Snakke" sammen ?

På min php fusion side kan jeg tilføje et element, hvor jeg i elementet kan skrive enten en PHP kode, eller html/java...

Hvordan skal jeg bygge det op ?

På forhånd TAK !
Uhreskov.
Avatar billede Slettet bruger
10. maj 2007 - 07:37 #8
Du skal faktisk bare tilføje php delen lige over i javascript.
og så skal fil typen selvfølgelig være .php, så php'en virker.
Avatar billede uhreskov Nybegynder
10. maj 2007 - 19:25 #9
Hejsa endnu engang...
Jeg tror der skal en stor hammer til at banke det ind.. jeg kan ikke få det til at virke ?

Jeg har lavet en mappe på server der hedder "fotos"
og lavet en side der hedder fotos.php med koden:

<?PHP
## Vi skanner vores mappe
$dir = "fotos";
$files = scandir($dir);
$images = array();
$finish = "";
$i = 1;
foreach($files as $file) {
  if($file <> "." && $file <> "..") {
      $images[] = $file;
  }
}

foreach($images as $file) {
  if($i <> count($images)) {
    $finish = "\"".$dir."/".$file."\",";
  } else {
    $finish = "\"".$dir."/".$file."\"";
  }
}
?>

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var timeDelay = 2; // change delay time in seconds
var Pix = new Array(<?PHP echo $finish; ?>);
var howMany = Pix.length;
timeDelay *= 1000;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];
function startPix() {
setInterval("slideshow()", timeDelay);
}
function slideshow() {
PicCurrentNum++;
if (PicCurrentNum == howMany) {
PicCurrentNum = 0;
}
PicCurrent.src = Pix[PicCurrentNum];
document["ChangingPix"].src = PicCurrent.src;
}
//  End -->
</script>

Hvad gør jeg forkert ?

Mvh.
Uhreskov.
Avatar billede roenving Novice
10. maj 2007 - 19:34 #10
Hvordan ser det ud, når du ser kilden i browseren ?-)
Avatar billede uhreskov Nybegynder
10. maj 2007 - 20:52 #11
ser kilden ?
Jeg går ud fra du mener hvad jeg kan se på siden når jeg åbner den i browseren ?
Hvis det er det du mener, så kommer der intet frem ?
siden er blank

Mvh.
Uhreskov.
Avatar billede roenving Novice
10. maj 2007 - 20:54 #12
Prøv Vis kilde !-)
Avatar billede uhreskov Nybegynder
11. maj 2007 - 06:41 #13
ahh.. nu er jeg lidt med
jeg skrev www.domain.dk/fotos.php og valgte vis kilde...
her er hvad der står:


<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var timeDelay = 2; // change delay time in seconds
var Pix = new Array();
var howMany = Pix.length;
timeDelay *= 1000;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];
function startPix() {
setInterval("slideshow()", timeDelay);
}
function slideshow() {
PicCurrentNum++;
if (PicCurrentNum == howMany) {
PicCurrentNum = 0;
}
PicCurrent.src = Pix[PicCurrentNum];
document["ChangingPix"].src = PicCurrent.src;
}
//  End -->
</script>

Mvh.
Uhreskov.
Avatar billede roenving Novice
11. maj 2007 - 11:40 #14
-- og så er din php-forespørgsel åbenbart ikke gået, som den burde, for Pix-arrayet er tomt ...
Avatar billede Slettet bruger
11. maj 2007 - 11:46 #15
Men roenving, er det i PHP min fejl lægger?
Det ser ellers ud til at skulle virke.
Skal der mon chmod'es - nej vel??
Avatar billede Slettet bruger
11. maj 2007 - 11:48 #16
Men det er spild af ressourscer at lave 2 x foreach, istedet for at klarer det hele i en løkke, for løkke 2 kan lige så godt bygges sammen med løkke 1.
Avatar billede Slettet bruger
11. maj 2007 - 11:50 #17
Jamen prøv lige at tilføje, det der 'objekt/element' ChangingPix!
Avatar billede roenving Novice
11. maj 2007 - 13:26 #18
-- i øvrigt mangler det html-elementer, du skal have fat i da også, f.eks.

<img src="r2.jpg" style="width:200px;border:0;" name="ChangingPix" id="ChangingPix">
Avatar billede Slettet bruger
11. maj 2007 - 13:28 #19
Det er jo det jeg skriver roenving. ^^
Avatar billede roenving Novice
11. maj 2007 - 14:01 #20
Jepz, det lykkedes mig bare at overse det !-)
Avatar billede uhreskov Nybegynder
11. maj 2007 - 15:06 #21
Hej igen...
Jeg har lidt primitivt prøvet at copy/paste hele koden i Frontpage, og der får jeg en fejl i linje 29 tegn 21.. ?
Jeg kan ikke "Finde" tegn 21..

Hvordan kommer jeg videre ?

På forhånd TAK !
Uhreskov.
Avatar billede roenving Novice
11. maj 2007 - 15:16 #22
Har du en mulighed for at lægge det fulde dokument op, så vi kan se det ?-)
Avatar billede Slettet bruger
11. maj 2007 - 17:07 #23
Ja hvis det er mulighed for det så prøve lige at smide det online, ellers så posted hele din kode her.
Avatar billede uhreskov Nybegynder
11. maj 2007 - 18:01 #24
Hej...
Siden er PT ikke online, da den er under opbygning..

Her er hele koden fra fotos.php

<?PHP
## Vi skanner vores mappe
$dir = "fotos";
$files = scandir($dir);
$images = array();
$finish = "";
$i = 1;
foreach($files as $file) {
  if($file <> "." && $file <> "..") {
      $images[] = $file;
  }
}

foreach($images as $file) {
  if($i <> count($images)) {
    $finish = "\"".$dir."/".$file."\",";
  } else {
    $finish = "\"".$dir."/".$file."\"";
  }
}
?>

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var timeDelay = 2; // change delay time in seconds
var Pix = new Array(<?PHP echo $finish; ?>);
var howMany = Pix.length;
timeDelay *= 1000;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];
function startPix() {
setInterval("slideshow()", timeDelay);
}
function slideshow() {
PicCurrentNum++;
if (PicCurrentNum == howMany) {
PicCurrentNum = 0;
}
PicCurrent.src = Pix[PicCurrentNum];
document["ChangingPix"].src = PicCurrent.src;
}
//  End -->
</script>
Avatar billede Slettet bruger
11. maj 2007 - 21:21 #25
Jeg har testet dette og det virker.


<?PHP
## Vi skanner vores mappe
$dir = "fotos";
$files = scandir($dir);
$images = array();
$finish = "";
foreach($files as $file) {
  if($file <> "." && $file <> "..") {
      $images[] = "'".$dir."/".$file."'";
  }
}
?>

<SCRIPT LANGUAGE="JavaScript">

<!-- Begin
var timeDelay = 2; // change delay time in seconds
var Pix = new Array(<?PHP echo implode(", ", $images); ?>);
var howMany = Pix.length;
timeDelay *= 1000;
var PicCurrentNum = 0;
var PicCurrent = new Image();
PicCurrent.src = Pix[PicCurrentNum];

function startPix() {
    setInterval("slideshow()", timeDelay);
}

function slideshow() {
    PicCurrentNum++;
    if (PicCurrentNum == howMany) {
        PicCurrentNum = 0;
    }
    PicCurrent.src = Pix[PicCurrentNum];
    document["ChangingPix"].src = PicCurrent.src;
}
startPix();
//  End -->
</script>
<img src="r2.jpg" style="width:200px;border:0;" name="ChangingPix" id="ChangingPix" />
Avatar billede Slettet bruger
11. maj 2007 - 21:22 #26
Jeg har forkortet det med de 2 x foreach og gjort det lidt bedre.
Der manglede som sagt det element/img tag der skulle ændres sti på.
Og så manglede der i javascript'et at be om at starte [startPix(); funktionen]
Avatar billede uhreskov Nybegynder
01. juni 2007 - 18:21 #27
Hejsa..
Så er jeg tilbage igen, jeg har været i udlandet og arbejde...
I må undskylde at jeg ikke har svaret før nu...

Jeg har testet skriptet og det virker KANONT !!!
Har et tillægs spørgsmål:

Er det muligt at få scriptet til at "Kigge" i undermapper ?
Forstået på den måde at jeg har i min mappe andre mapper når jeg laver en opdatering
Eks.
fotos/april
fotos/maj
fotos/juni

Osv...
Kan det fixes så den kan "blande" fra flere mapper ?

Endnu engang tak for jeres hjælp
Uhreskov.
Avatar billede Slettet bruger
01. juni 2007 - 19:18 #28
Ja det kan godt lade sig gøre.
Jeg skal bare lige kigge på scriptet igen, kan ikke huske hvordan det er bygget op.
Avatar billede uhreskov Nybegynder
01. juni 2007 - 23:04 #29
Hej coldgate...
Det lyder super, ikke for at være vanskelig, men er det også muligt at lave i scriptet, så scriptet laver random,
forstået på den måde at hver gang siden loades ind, at scriptet ikke starter forfra med at vise de samme billeder igen, hvis det kan laves så scriptet "Bare" tager nogle billeder i vilkårlig rækkefølge, og ikke fra nummer 1 2 3 osv.

Mvh.
Uhreskov.
Avatar billede Slettet bruger
03. juni 2007 - 00:00 #30
Ja det er muligt.
Jeg kan squ ikke lige se det for mig, hvilke funktion man kan bruge til det med sub_dirs men for at få blandet de billeder du har skal du bruge denne funktion:
shuffle.

I dit php script skal du så bare ændre til

<?PHP
## Vi skanner vores mappe
$dir = "fotos";
$files = scandir($dir);
$images = array();
$finish = "";
foreach($files as $file) {
  if($file <> "." && $file <> "..") {
      $images[] = "'".$dir."/".$file."'";
  }
}
shuffle($images);
?>
Avatar billede uhreskov Nybegynder
08. juni 2007 - 21:52 #31
Hejsa endnu engang...
Ikke for at være belastende...
men er det muligt som en sidste ting at ligge noget i scriptet der kan bestemme størrelsen af de billeder der skal vises ?

Jeg syntes de billeder der er nu er lidt for store, jeg vil gerne gøre dem lidt mindre..

På forhånd TAK !
Uhreskov.
Avatar billede uhreskov Nybegynder
08. juni 2007 - 21:54 #32
ups... det er jo øjenene man bliver blind på først...
Jeg har fundet ud af det med størrelsen..

coldgate kunne jeg ikke be' om et "svar" fra dig, så du kan få lidt point ?

Mvh.
Uhreskov.
Avatar billede Slettet bruger
11. juni 2007 - 01:00 #33
svar
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