Avatar billede tjensen Nybegynder
12. december 2004 - 16:23 Der er 26 kommentarer og
1 løsning

Problemer med at læse fra fysiske drev.

Hey Eksperter!

Jeg har nogle problemer med følgende script, som skal åbne den nyeste undermappe og tage billederne derfra...

Fejlmeldingen lyder:
Warning: arsort() expects parameter 1 to be array, null given in /var/www/epoxy/web3/teen-clubdk/docs/overframe.php on line 19

Warning: key(): Passed variable is not an array or object in /var/www/epoxy/web3/teen-clubdk/docs/overframe.php on line 20


Her er et lille stump af min kode:

$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']);
Avatar billede riversen Nybegynder
12. december 2004 - 17:06 #1
is_dir vil vel altid være false, når du tester på et billede/fil... prøv med ! foran
Avatar billede tjensen Nybegynder
12. december 2004 - 17:12 #2
Jeg må sku indrømme jeg er rimelig lost, nogt en anden har lavet til mig nemlig.
Har lige prøvet:
while (!false !== ($file1 = readdir($handle1))) {

Men jeg syntes nu det ser meget forkert ud.. Giver ikk meget logik den test i mit hovede.
Avatar billede tjensen Nybegynder
12. december 2004 - 17:13 #3
ups..
Avatar billede riversen Nybegynder
12. december 2004 - 17:13 #4
det var is_dir du skulle sætte ! foran

$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']);

sådan
Avatar billede riversen Nybegynder
12. december 2004 - 17:15 #5
eller brug is_file istedet for is_dir, det er vel mere logisk
Avatar billede tjensen Nybegynder
12. december 2004 - 17:16 #6
Ja, sidder lige og koger.. Har bøvlet rimelig længe med det...

Det var ikk lige det.
Og ellers er det fordi der er flere fejl..
Avatar billede riversen Nybegynder
12. december 2004 - 17:18 #7
virker fint her
Avatar billede tjensen Nybegynder
12. december 2004 - 17:18 #8
hmm, tjek www.teen-club.dk/overframe.php
Tror der er noget helt galt..

Sætter lige point tallet op, og ligger hele koden ind..
Avatar billede tjensen Nybegynder
12. december 2004 - 17:19 #9
<?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_file($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.
echo "<html><body><script type=\"text/javascript\">";

if($tal2 >= sizeof($htmlfiler)) $tal2 = 0;
if($tal1 % 5 == 0) {
  $htmlfil = $htmlfiler[$tal2++];
  echo "parent.underframe.location.href='{$htmlfil}';";
} else {
  echo "parent.underframe.location.href='{$billeder[rand(0, sizeof($billeder)-1)]}';";
}
$ting = ++$tal1;
echo "setTimeout('parent.overframe.location.href='{$_SERVER['PHP_SELF']}?tal1={$ting}&tal2={$tal2}', {$hastighed});</script></body></html>";
?>
Avatar billede riversen Nybegynder
12. december 2004 - 17:29 #10
den skriver jo hvad fejlen er, så det skulle være til at rette for dig

No such file or directory
Avatar billede riversen Nybegynder
12. december 2004 - 17:30 #11
og fejlen er nok så, at du skal have en "/" bagpå dine stier
Avatar billede riversen Nybegynder
12. december 2004 - 17:32 #12
og du skal jo iøvrigt ikke sige !is_file...

enten !is_dir eller is_file
Avatar billede tjensen Nybegynder
12. december 2004 - 17:54 #13
Den skriver:
opendir(/var/www/epoxy/web3/teen-clubdk/docs/billeder/P1010004.JPG): failed to open dir: Not a directory in /var/www/epoxy/web3/teen-clubdk/docs/overframe.php on line 23

men www.teen-club.dk/billeder/P1010004.JPG eksistere.
Avatar billede riversen Nybegynder
12. december 2004 - 17:56 #14
tjah, men det er ikke et "directory", så det er jo til at forstå den brokker sig.
Avatar billede tjensen Nybegynder
12. december 2004 - 17:57 #15
Nej, det er en fejl den eksister...
Alle billederne ligger i undermapper under billeder.. P1010004.JPG har sneget sig ud sammen med et par andre. Har fjernet dem.
Avatar billede riversen Nybegynder
12. december 2004 - 17:58 #16
kan være der skal rettes tilbage til is_dir istedet for !is_dir.
Avatar billede riversen Nybegynder
12. december 2004 - 17:58 #17
den fejl den siger, giver nu fint mening uanset hvad du mener
Avatar billede tjensen Nybegynder
12. december 2004 - 17:59 #18
Nej, det er det ikke, har også fjernet dem. Men den skulle gerne åbne den nyeste mappe, og kun den nyeste og henter et random billede derfra. Og for hvert 5 opdatering åbne en html fil fra en anden mappe istedet.
Avatar billede riversen Nybegynder
12. december 2004 - 18:00 #19
"Nej, det er det ikke, har også fjernet dem" <-- hvad svarer du på her?
Avatar billede tjensen Nybegynder
12. december 2004 - 18:03 #20
Det var det med at de par billeder der havde sneget sig ikk ikke var mapper :)
Avatar billede riversen Nybegynder
12. december 2004 - 18:05 #21
alle fejl er væk nu, så hvad er problemet så?
Avatar billede tjensen Nybegynder
12. december 2004 - 18:07 #22
Det fatter jeg heller ikke. Tror compen ryger ud af vinduet snart. Grr!

overframe er et del af et frameset på siden www.teen-club.dk/gskaerm.php

Som ser således ud:
<!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>
Avatar billede riversen Nybegynder
12. december 2004 - 18:09 #23
der er en javascript fejl
Avatar billede riversen Nybegynder
12. december 2004 - 18:11 #24
nå, der er håndbold... held og lykke
Avatar billede tjensen Nybegynder
12. december 2004 - 18:16 #25
Hehe, Takker!

Tror jeg selv er ved at finde noget fejl. Mange tak... Kig lige forbi en gang igen.. Der ligger nogle points og venter på dig i hvert fald!
Avatar billede riversen Nybegynder
12. december 2004 - 18:40 #26
bare behold dem
Avatar billede tjensen Nybegynder
13. december 2004 - 19:10 #27
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