Avatar billede syswatch Novice
01. december 2004 - 12:59 Der er 7 kommentarer og
2 løsninger

Gemme i txt filer med fortløbende nr

Hejsa.

Jeg skal have gemt nogle bruger inputs i nogle txt filer, men jeg vil gerne gemme så filerne kommer til at hedde telefonnr_1, telefonnr_2 osv...
Men hvordan laver jeg det, uden at skulle lave 1000 if(file_exists) ??

Den skulle jo gerne gå ind og kigge på hvad det "sidste" fil navn hedder og så lave en ny hvor der bare er lagt 1 til.
Avatar billede jakobdo Ekspert
01. december 2004 - 14:04 #1
Måske du kan bruge denne kode til noget:

<?php

$subject = "telefonnr_123.txt";
$nyfil = "";

if (preg_match('/telefonnr_(\\d+).txt/', $subject, $regs))
{
    $nyfil .= "telefonnr_";
    $nyfil .= $regs[1]+1;
    $nyfil .= ".txt";
}

echo $nyfil;

?>
Avatar billede jakobdo Ekspert
01. december 2004 - 15:18 #2
Måske det er slamkode, men det virker:

<?php

$dir = "txt/";
$fileArray = array();

// Open a known directory, and proceed to read its contents
if (is_dir($dir))
{
    if ($dh = opendir($dir))
    {
        while (($file = readdir($dh)) !== false)
        {
            if ($file != "." && $file != ".." && is_file($dir . $file))
            {
                $fileArray[] = $file;
            }
        }
        closedir($dh);
       
        $count = count($fileArray);
        if ($count > 0)
        {
            natsort($fileArray);
           
            $subject = end($fileArray);
            $nyfil = "";

            if (preg_match('/telefonnr_(\\d+)/', $subject, $regs))
            {
            $nyfil .= "telefonnr_";
            $nyfil .= $regs[1]+1;
            }

            echo $nyfil;
        }
    }
}

?>
Avatar billede coderdk Praktikant
01. december 2004 - 16:43 #3
Tror dette ville kunne gøre det:

$telefonnummer = "12345678";
$tal = 1;

if ( file_exists( "tal.txt" ) )
{
    $fp = fopen( "tal.txt", "r+" );
    if ( flock( $fp, LOCK_EX ) )
    {
        $tal = fread( $fp, 512 );
        $fil = "telefonnr_$tal";
        $tal++;
        ftruncate( $fp );
        fwrite( $fp, $tal );
        flock( $fp, LOCK_UN );
    }
}
else
{
    $fp = fopen( "tal.txt", "w" );
    if ( flock( $fp, LOCK_EX ) )
    {
        $fil = "telefonnr_1";
        fwrite( $fp, $tal );
        flock( $fp, LOCK_UN );
    }
    fclose( $fp );
}

$fp = fopen( $fil, "w" );
fwrite( $fp, $telefonnummer );
fclose( $fp );
Avatar billede coderdk Praktikant
01. december 2004 - 16:44 #4
ftruncate( $fp );

skulle nok være:

ftruncate( $fp, 0 );
Avatar billede syswatch Novice
02. december 2004 - 09:41 #5
Coderdk: Jeg kan ikke lige gennemskue dit script, gemmer du ikke filensnavn i en txt fil ?
Avatar billede jakobdo Ekspert
02. december 2004 - 09:50 #6
Jo, men han gemmer også det nummer han er nået til!
Hvorfor gemmer du det evt bare i en database?
Avatar billede syswatch Novice
07. december 2004 - 11:04 #7
Kan i ikke lige smide et svar så jeg kan få lukket... ?
Avatar billede jakobdo Ekspert
07. december 2004 - 11:06 #8
Svar...
Avatar billede coderdk Praktikant
07. december 2004 - 11:10 #9
yep yep :)
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