Avatar billede mxs Nybegynder
27. marts 2004 - 17:01 Der er 9 kommentarer og
1 løsning

Åben mappe, udskriv filer i kolonner på 3, men det virker ikke.

Hey jeg har denne kode som skal åbne mappe og udksrive alle filer i den. Det er let nok, men jeg vil gerne have at den skal udskrive 3 filer og så springe en række ned osv. Jeg har prøvet og den åbner også mappen og udskriver kolonner af 3, MEN jeg får ikke filnavnene med den udskriver bare 1.

Her er koden:

<?php

$dir = "C:\Documents and Settings\M x S\Skrivebord\Mobilen\Billeder/";
$i = 1;

if(($aaben = opendir($dir)) !== false) {

print("<table border=1><tr>");

    while(($file = readdir($aaben) !==false) and ($i <= "23")) {

        if($file !=='.' && $file !== '..' && $file !== 'Thumbs.db' && is_dir($dir)){

            print("<td><a href=\"$dir$file\">$file</a></td>");



        }//if løkken lukkes

                if($i =="3"){
                    print("</tr><tr>");
                    $i = 0;
                }
                $i++;

    }//while løkken lukkes

    closedir($aaben);


print("</tr></table>");
}//if løkken som tjekker om der er en dir, lukkes



?>

Der er 23 filer i min mappe.

Nogen der kan se hvad der er galt for jeg kan ikke :(
Avatar billede mxs Nybegynder
27. marts 2004 - 17:02 #1
Kan det måske være noget med mine if løkker?
Avatar billede jpvj Nybegynder
27. marts 2004 - 17:06 #2
while(($file = readdir($aaben) !==false) and ($i <= "23")) {

Bør nok rettes til:

while(($file = readdir($aaben) !==false) and ($i <= 23)) {
Avatar billede jpvj Nybegynder
27. marts 2004 - 17:06 #3
og      if($i =="3"){
til
    if($i ==3){

Ikke at det har så meget at sige tror jeg, men det er pænere programmering.
Avatar billede mxs Nybegynder
27. marts 2004 - 17:07 #4
:) Har selv fundet du af det. Det var en ) der var placeret forkert.
Avatar billede mxs Nybegynder
27. marts 2004 - 17:08 #5
Jeg rettede linjen

while(($file = readdir($aaben) !==false) and ($i <= "23"))

til

while(($file = readdir($aaben)) !==false and ($i <= "23"))
Avatar billede jpvj Nybegynder
27. marts 2004 - 17:09 #6
Det var her ikke?

  while(($file = readdir($aaben) !==false) and ($i <= "23")) {

rettes til

  while((($file = readdir($aaben)) !==false) and ($i <= "23")) {

Din i<23 er nok ligegyldig...
Avatar billede jpvj Nybegynder
27. marts 2004 - 17:09 #7
He-he... det var det så :-)

Bare snup points selv - du fandt jo selv fejlen først.
Avatar billede mxs Nybegynder
27. marts 2004 - 17:11 #8
:) Men nu vil jeg spørge dig jpjv. Hvad er forkellen på $i == 23 og $i == "23" ? Altså læser man det $i == 23 som int og $i == "23" som string?
Avatar billede jpvj Nybegynder
27. marts 2004 - 17:15 #9
Nu er jeg ikke php ekspert, men jeg vil gætte på, at PHP laver typecasting automastisk, dvs. den "autokonverterer" tallet 23 til "23" når det sammenlignes med en streng og modsat.

Skal man være meget kritisk, så er det spild af CPU tid, men i dit tilfælde er det nok meget ligegyldigt for afviklingen. Men derfor kan man jo godt kode pænt alligevel :-)
Avatar billede mxs Nybegynder
27. marts 2004 - 17:16 #10
Jeg vil gerne have en så optimal kode som mulig:D Så tak for hjælp champ!
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