Avatar billede webcreator Nybegynder
08. november 2003 - 18:40 Der er 9 kommentarer og
1 løsning

Rename fil hvis filnavnet er brugt - fejl i scriptet

Hej.

Jeg har nedenstående script. Det bør, hvis et filnavn er i brug, sætte et tal bagved. Så hvis fil.aaa er i brug, så renames den nye fil til fil2.aaa . Men efterfølgende renames filerne ikke til fil3.aaa og fil4.aaa. Scriptet smider simpelthen bare flere 2-taller på.

fx. fil22.aaa og fil222.aaa

if (file_exists("$basedir/$kate/$file")) {
           
            // Filen renames, hvis filnavnet er i brug.
            $pos = strrpos($file, '.');
            $foerpos = substr($file, 0, $pos);
            $efterpos = substr($file, $pos + 1, strlen($file) - ($pos + 1));
            $i = 2;
           
            while (file_exists("$basedir/$kate/$file")) {
                $file = $foerpos . $i . '.' . $efterpos;
                $basedir/$kate/$file = $file;
                $i++;
            }
           
        }
Avatar billede sukos Juniormester
08. november 2003 - 18:43 #1
Jeg ville, som nu, starte med at tjekke om navnet fandtes, og hvis det gjorde, bruge fopen, tælle filer og lægge en til, for at sikre at et nyt navn blev brugt hver gang.
Avatar billede webcreator Nybegynder
08. november 2003 - 18:45 #2
Jamen den tjekke da også, om det nye filnavn eksistere. Skulle være sikkert nok. Der er bare en fejl et sted.
Avatar billede sukos Juniormester
08. november 2003 - 19:19 #3
<?php

$basedir = $_SERVER["DOCUMENT_ROOT"] ."/";
$kate = "login/";
$file = "side2.php";

if (file_exists($basedir . $kate . $file)) {

$ext = pathinfo($basedir . $kate . $file);
$name = @basename($basedir . $kate . $file, ".". $ext["extension"]);
$ialt = array();
$count = opendir($basedir . $kate);
while (false !== ($files = readdir($count))) {
$ialt[] = $files;
}
closedir($count);
echo $name . (count($ialt)-1) .".". @$ext["extension"];
}else{
echo $file;
}
?>

@ for ikke at få fejlmeldinger
Avatar billede webcreator Nybegynder
08. november 2003 - 19:23 #4
hvorfor er din bedre ? Ville egentlig gerne finde fejlen i den jeg postede :)
Avatar billede sukos Juniormester
08. november 2003 - 19:37 #5
ok :O)
Avatar billede webcreator Nybegynder
08. november 2003 - 20:08 #6
Hvorfor var din bedre ?
Avatar billede erikjacobsen Ekspert
08. november 2003 - 20:11 #7
Er det ikke tilstrækkeligt at slette linien:

$basedir/$kate/$file = $file;
Avatar billede sukos Juniormester
08. november 2003 - 20:11 #8
æh, sidder og roder med at undgå fejlmeddelser, men ellers så virker den da.
Mere det, bare.

du "tæller" antal tegn i navnet op, det gør jeg ikke
Avatar billede webcreator Nybegynder
08. november 2003 - 20:17 #9
Erik > Jo for søren. Kunne heller ikke forstå hvad den gjorde dér. Men da jeg ikke har lavet scriptet, tænkte jeg at den havde en funktion.

Mange tak. Svar :)
Avatar billede erikjacobsen Ekspert
08. november 2003 - 20:43 #10
ok
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

IT-JOB

Collectia A/S

Cyber Security Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Applikationsarkitekt til stor applikationstransformation i Forsvaret

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger sektionschef til Systemafdelingen i Hvidovre

Politiets Efterretningstjeneste

DevOps engineer til dataanalyse i PET

RackPeople

Teknisk Lead