Avatar billede tjensen Nybegynder
26. november 2004 - 18:34 Der er 30 kommentarer og
1 løsning

Random fil funktion..

Hey!

Jeg har en skærm hængende, som jeg skal have til at vise nogle random billeder fra en mappe. Men for hver 5 billede skal der komme en htm fil frem fra en anden mappe.
Nogen der kan hjælpe mig med det.
Side opsætninge skal der ikk være det store af, da den bare skal maksimeres.
Avatar billede baitianlong Nybegynder
26. november 2004 - 18:44 #1
Er det også tilfældige htm filer fra mappe2 ?
Avatar billede tjensen Nybegynder
26. november 2004 - 18:48 #2
Hmm, kunne være rart, hvis man kunne kalde dem 1.htm 2.htm 3.htm
og de så kom i den række følge. Der vil aldrig være mere end 10 forskellige htm. Så 01.htm er ikk nødvendigt.
Avatar billede baitianlong Nybegynder
26. november 2004 - 18:59 #3
...og billederne skal skifte selv med noget tidsforsinkelse, eller?
Avatar billede tjensen Nybegynder
26. november 2004 - 19:04 #4
Det skal gerne virke som et alternativ til et powerpoint show med nogle billeder.
Et af gangen som fylder hele skærmen, og ind i mellem en htm side som også fylder hele skærme.
Ikk fordi jeg tror du er dum eller noget at jeg gentager det, bare vi er sikker på at forstå hinanden. :)
Og ja så skal den skifte mellem siderne/billederne med et tidsinterval ja.
Avatar billede baitianlong Nybegynder
26. november 2004 - 19:08 #5
Ok, så kan man jo f.eks lave det ved at have en meget lille frame, hvor PHP siden ligger og hygger, og i den anden frame skifter billeder og htm sider.

Jeg prøver at rode lidt med det...

(Og mange tak for at du ikke tror jeg er dum, det er rørende) :)
Avatar billede tjensen Nybegynder
26. november 2004 - 19:51 #6
Jeg takker meget... Men smutter på arbejde, så svarer først en gang i morgen tidelig igen! Takker!!!
Avatar billede tjensen Nybegynder
01. december 2004 - 19:37 #7
Jeg mangler stadig hjælpe...
Avatar billede baitianlong Nybegynder
01. december 2004 - 19:41 #8
Beklager, jeg har haft lidt travlt... Jeg koder det lige til dig efter aftensmaden :)
Avatar billede tjensen Nybegynder
01. december 2004 - 19:45 #9
Weehy!

Det lyder lækkert! Men tager det lidt længere gør det heller ikk det store, bare rart at vide hjælpen er på vej!!! :)
Avatar billede baitianlong Nybegynder
01. december 2004 - 22:01 #10
Her er en første model, den er godt nok ikke testet, eller noget, men det er noget i den stil det skal være. Lav dig et frameset med to rows="1,*" hvor øverste frame hedder overframe og nederste frame hedder underframe, put denne side i overframe og åben det vindue i fullscreen. Så fortæl om det virker. Der er naturligvis nogle få ting som mappenavne, du skal rette til...

<?php
$mappemedbilleder = "/billeder";
$mappemedhtml = "/html";
$hastighed = 5; //sekunder
$tal = $_GET['tal'];
if(!isset($tal)) $tal = 0;

//Array med billedefiler oprettes og fyldes

$billeder = array();
$handle1 = opendir($mappemedbilleder);
while(false !== ($file1 = readdir($handle1)) {
    if($file1 != "." && $file1 != "..") {
        array_push($billeder, $file1);
    }
}
closedir($handle1);

//Array med html filer oprettes og fyldes

$htmlfiler = array();
$handle2 = opendir($mappemedhtml);
while(false !== ($file2 = readdir($handle2)) {
    if($file2 != "." && $file2 != "..") {
        array_push($htmlfiler, $file2);
    }
}
closedir($handle2);

//Denne frame genindlæses, og dermed skifter billedet (i den anden frame). Hvis tallet kan divideres med 5 vises en html side.

print "<html><body><script type=\"text/javascript\">";

if(tal >= sizeof($htmlfiler)) tal = 0;
if(tal % 5 == 0) {
  $htmlfil = $htmlfiler[$tal];
  print "parent.underframe.location.href=\"".$htmlfil."\";";
} else {
  print "parent.underframe.location.href=\"".$billeder[rand(0, sizeof($billeder)-1]."\";";
}

print "setTimeout(\"parent.overframe.location.href=\"".$_SERVER['PHP_SELF']."?tal=".++$tal."\", ".$hastighed.");</script></body></html>";
?>

Sikke noget :P
Avatar billede tjensen Nybegynder
02. december 2004 - 14:15 #11
Hey!

Jeg takker mange gange! Godt nok har jeg ikk haft tid til at teste det endnu, men for det flotter arbejde har jeg accepteret dit svar. Nu kan jeg altid selv justere lidt, php er ikk helt fremmet for mig. Har bare aldrig arbejdet med 'fysiske' filer og mappe og ting i den dur.

Mange tak!
Avatar billede baitianlong Nybegynder
02. december 2004 - 14:16 #12
Hvis du får problemer, eller det ikke virker optimalt, må du jo lige skrive hvad der er galt, så retter vi den til :)
Avatar billede baitianlong Nybegynder
02. december 2004 - 14:22 #13
Hov, jeg kan allerede se at der er et par fejl i scriptet:

<?php
$mappemedbilleder = "/billeder";
$mappemedhtml = "/html";
$hastighed = 5; //sekunder
$tal1 = $_GET['tal1'];
$tal2 = $_GET['tal2'];
if(!isset($tal1)) $tal1 = 0;
if(!isset($tal2)) $tal2 = 0;

//Array med billedefiler oprettes og fyldes

$billeder = array();
$handle1 = opendir($mappemedbilleder);
while(false !== ($file1 = readdir($handle1)) {
    if($file1 != "." && $file1 != "..") {
        array_push($billeder, $file1);
    }
}
closedir($handle1);

//Array med html filer oprettes og fyldes

$htmlfiler = array();
$handle2 = opendir($mappemedhtml);
while(false !== ($file2 = readdir($handle2)) {
    if($file2 != "." && $file2 != "..") {
        array_push($htmlfiler, $file2);
    }
}
closedir($handle2);

//Denne frame genindlæses, og dermed skifter billedet (i den anden frame). Hvis tallet kan divideres med 5 vises en html side.

print "<html><body><script type=\"text/javascript\">";

if($tal2 >= sizeof($htmlfiler)) $tal2 = 0;
if($tal1 % 5 == 0) {
  $htmlfil = $htmlfiler[$tal2++];
  print "parent.underframe.location.href=\"".$htmlfil."\";";
} else {
  print "parent.underframe.location.href=\"".$billeder[rand(0, sizeof($billeder)-1]."\";";
}

print "setTimeout(\"parent.overframe.location.href=\"".$_SERVER['PHP_SELF']."?tal1=".++$tal1."&tal2=".$tal2."\", ".$hastighed.");</script></body></html>";
?>

Det var bedre, skulle jeg mene... :)
Avatar billede tjensen Nybegynder
02. december 2004 - 15:48 #14
Dejlig service, sjældent man oplever det nu til dags! ;)
Avatar billede tjensen Nybegynder
10. december 2004 - 13:50 #15
Hmm frames.. Argh bruger kun tabeller nu.... :)

Men kan det her gå?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
    <title>TEEN-CLUB dot dk</title>
</HEAD>
<frameset rows="1,*">
    <frame name="overframe" src="overframe.php">
    <frame name="underframe">
</frameset>
</HTML>

PS. Jeg får fejl i linie:
Avatar billede tjensen Nybegynder
10. december 2004 - 13:50 #16
print "parent.underframe.location.href=\"".$billeder[rand(0, sizeof($billeder)-1]."\";";
Avatar billede baitianlong Nybegynder
10. december 2004 - 14:04 #17
Det er fordi der mangler en ) efter -1  :)
Avatar billede tjensen Nybegynder
10. december 2004 - 14:08 #18
Ja, klart dumme mig, tænkte mig om lige efter jeg havde spurgt og fandt den.
Nu er den bare kommet med en masser andre fejl, men har lige kontaktet mig udbyder for at se om det overhovedet var muligt at arbejde med mapper på vores serve.

Warning: opendir(): SAFE MODE Restriction in effect. The script whose uid/gid is 5071/5071 is not allowed to access / owned by uid/gid 0/0

Warning: opendir(/billeder): failed to open dir: No such file or directory

Warning: readdir(): supplied argument is not a valid Directory resource

Warning: closedir(): supplied argument is not a valid Directory resource

Warning: opendir(): SAFE MODE Restriction in effect. The script whose uid/gid is 5071/5071 is not allowed to access / owned by uid/gid 0/0

Warning: opendir(/gskaerm): failed to open dir: No such file or directory

Warning: readdir(): supplied argument is not a valid Directory resource

Warning: closedir(): supplied argument is not a valid Directory resource
Avatar billede baitianlong Nybegynder
10. december 2004 - 14:27 #19
Jeg tror måske det er pga "":

$handle1 = opendir("billeder");
Avatar billede tjensen Nybegynder
10. december 2004 - 14:32 #20
Hmm, nope desværre...

opendir(): SAFE MODE Restriction in effect. The script whose uid/gid is 5071/5071 is not allowed to access / owned by uid/gid 0/0 in /var/www/epoxy/web3/inkarneret/docs/overframe.php on line 13
Avatar billede baitianlong Nybegynder
10. december 2004 - 14:37 #21
sikke noget ! Det er serverens opsætning så... Det er bare underligt, når mappen ligger samme sted som filen (for det gør den vel)
Avatar billede tjensen Nybegynder
10. december 2004 - 14:42 #22
ja, det gør den... Men jeg har også skrevet til CSG.dk så venter bare på svar, ville satme være ærgeligt hvis det ikk kommer til at virke. Hvordan med det frameset jeg skrev et par kommentar oppe, er det fint nok?

Jeg fik lige hjælp af en til at lave følgende, så skulle den gerne selv fatte at vælge en edn nyeste undermappe i /billeder.

$mappe = "billeder/"; //Overordnet mappe
$d = dir($mappe);
while (false !== ($entry = $d->read())) {
    if (is_dir($mappe . $entry) && $entry != '.' && $entry != '..') {
        $file['name'][] = $entry;
        $file['tid'][] = filemtime($mappe . $entry);
    }
}
$d->close();
arsort($file['tid']);
$nr = key($file['tid']);
$billeder = array();
$handle1 = opendir($file['name'][$nr]);
while (false !== ($file1 = readdir($handle1))) {
    if($file1 != "." && $file1 != "..") {
        array_push($billeder, $file1);
    }
}
closedir($handle1);

$handle1 = opendir($mappe.$file['name'][$nr]);
Avatar billede baitianlong Nybegynder
10. december 2004 - 14:49 #23
Jeg tror det frameset er fint nok :)
Avatar billede tjensen Nybegynder
12. december 2004 - 20:29 #24
Uha, nu jeg der gået en hel dag med at lege med dit 'script'!

det ser sådan ud nu:
<?php
$mappemedbilleder = "/var/www/epoxy/web3/teen-clubdk/docs/billeder/";
$mappemedhtml = "/var/www/epoxy/web3/teen-clubdk/docs/gskaerm/";
$hastighed = "5"; //sekunder
$tal1 = $_GET['tal1'];
$tal2 = $_GET['tal2'];
if(!isset($tal1)) $tal1 = 0;
if(!isset($tal2)) $tal2 = 0;

//Array med billedefiler oprettes og fyldes
$d = dir($mappemedbilleder);
while (false !== ($entry = $d->read())) {
    if (is_dir($mappemedbilleder . $entry) && $entry != '.' && $entry != '..') {
        $file['name'][] = $entry;
        $file['tid'][] = filemtime($mappemedbilleder . $entry);
    }
}
$d->close();
arsort($file['tid']);
$nr = key($file['tid']);
$billeder = array();

$handle1 = opendir($mappemedbilleder.$file['name'][$nr]);
while (false !== ($file1 = readdir($handle1))) {
    if($file1 != "." && $file1 != "..") {
        array_push($billeder, $file1);
    }
}
closedir($handle1);

//Array med html filer oprettes og fyldes
$htmlfiler = array();
$handle2 = opendir($mappemedhtml);
while(false !== ($file2 = readdir($handle2))) {
    if($file2 != "." && $file2 != "..") {
        array_push($htmlfiler, $file2);
    }
}
closedir($handle2);

//Denne frame genindlæses, og dermed skifter billedet (i den anden frame). Hvis tallet kan divideres med 5 vises en html side.
print "<html><body><script type=\"text/javascript\">";

if($tal2 >= sizeof($htmlfiler)) $tal2 = 0;
if($tal1 % 5 == 0) {
  $htmlfil = $htmlfiler[$tal2++];
  print "parent.underframe.location.href=\"gskaerm/".$htmlfil."\";";
} else {
  print "parent.underframe.location.href=\"".$billeder[rand(0, sizeof($billeder)-1)]."\";";
}

print "setTimeout(\"parent.overframe.location.href=\"".$_SERVER['PHP_SELF']."?tal1=".++$tal1."&tal2=".$tal2."\", ".$hastighed.");</script></body></html>";
?>
Avatar billede tjensen Nybegynder
12. december 2004 - 20:32 #25
Det volder mig bare en del problem at få ordnet javascriptet.. Her er hvad den skriver ud, barer lige stillet overskueligt op..

<html>
  <body>
    <script type="text/javascript">
      parent.underframe.location.href="gskaerm/1.html";
      setTimeout("parent.overframe.location.href="/overframe.php?tal1=1&tal2=1", 5);
    </script>
  </body>
</html>

Jeg har bøvlet rundt med at få den til at skrive det rigtige, kan jeg bare ikk.
Avatar billede baitianlong Nybegynder
12. december 2004 - 20:40 #26
Prøv med:

print "setTimeout(\"parent.overframe.location.href='".$_SERVER['PHP_SELF']."?tal1=".++$tal1."&tal2=".$tal2."'\", ".$hastighed.");</script></body></html>";
Avatar billede tjensen Nybegynder
12. december 2004 - 22:40 #27
nope, det virkede ikk.. Sorry jeg var lidt lang tid om at svare.. Har lige fået det nye NFS.. WEE! Det holder maks!

Se www.teen-club.dk/gskaerm.php
og www.teen-club.dk/overframe.php

Stadig fejl.
<html>
  <body>
    <script type="text/javascript">
      parent.underframe.location.href="gskaerm/1.html";
      setTimeout("parent.overframe.location.href='/overframe.php?tal1=1&tal2=1'", 5);
    </script>
  </body>
</html>
Avatar billede baitianlong Nybegynder
12. december 2004 - 23:34 #28
Det er den der skråstreg, der gør det. Jeg fatter ikke hvor den kommer fra. Nå, men så skriv filnavnet selv.

print "setTimeout(\"parent.overframe.location.href='overframe.php?tal1=".++$tal1."&tal2=".$tal2."'\", ".$hastighed.");</script></body></html>";
Avatar billede tjensen Nybegynder
13. december 2004 - 15:58 #29
Yeah, nu begynder det at se rigtig ud... I hvert fald begynder =)

http://www.teen-club.dk/gskaerm.php

Resten leger jeg lige selv lidt med.. Ellers så bliver jeg jo aldrig klogere! :) Helt vildt mange tak!
Avatar billede baitianlong Nybegynder
13. december 2004 - 17:21 #30
Det var så lidt :)
Avatar billede tjensen Nybegynder
13. december 2004 - 19:11 #31
Hvis nogen skulle have interesse i scriptet er det her, og det er blevet funktionelt!

<?php
$mappemedbilleder = "";
$mappemedhtml = "";
$sek = 5; //sekunder mellem side skift
$tal1 = $_GET['tal1'];
$tal2 = $_GET['tal2'];
if(!isset($tal1)) $tal1 = 1;
if(!isset($tal2)) $tal2 = 0;

//Array med billedefiler oprettes og fyldes
$d = dir($mappemedbilleder);
while (false !== ($entry = $d->read())) {
    if (is_dir($mappemedbilleder . $entry) && $entry != '.' && $entry != '..') {
        $file['dir'] = $entry;
                $file['name'][] = $entry;
        $file['tid'][] = filemtime($mappemedbilleder . $entry);
    }
}
$d->close();
arsort($file['tid']);
$nr = key($file['tid']);
$billeder = array();

$handle1 = opendir($mappemedbilleder.$file['name'][$nr]);
while (false !== ($file1 = readdir($handle1))) {
    if($file1 != "." && $file1 != "..") {
        array_push($billeder, $file1);
    }
}
closedir($handle1);

//Array med html filer oprettes og fyldes
$htmlfiler = array();
$handle2 = opendir($mappemedhtml);
while(false !== ($file2 = readdir($handle2))) {
    if($file2 != "." && $file2 != "..") {
        array_push($htmlfiler, $file2);
    }
}
closedir($handle2);

//Denne frame genindlæses, og dermed skifter billedet (i den anden frame). Hvis tallet kan divideres med 5 vises en html side.
print "<html><body><script type=\"text/javascript\">";

if($tal2 >= sizeof($htmlfiler)) $tal2 = 0;
if($tal1 % 5 == 0) {
  $htmlfil = $htmlfiler[$tal2++];
  print "parent.underframe.location.href=\"gskaerm/".$htmlfil."\";";
} else {
  print "parent.underframe.location.href=\"billeder/".$file['dir']."/".$billeder[rand(0, sizeof($billeder)-1)]."\";";
}
$hastighed = $sek*1000;
print "setTimeout(\"parent.overframe.location.href='overframe.php?tal1=".++$tal1."&tal2=".$tal2."'\", ".$hastighed.");</script></body></html>";
?>
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