Avatar billede anders_stigaard Nybegynder
27. januar 2006 - 11:16 Der er 9 kommentarer og
1 løsning

Skrive til fil!

Kunne kun finde PHP her, så håber det er fint!

Jeg er ved at lave så jeg kan læse og skrive til en fil i PHP..

function laes($i)
    {   
    $lines = file("./status.txt");
     
    $test = $lines[$i];
     
    return $test;
    }

Dette er lavet så jeg kan hente en bestem linje fra filen.. Men jeg har prøvet forskellige måder at skrive til filen.. Men i alle tilfælde, over skriver den bare hele filen..

Den skal kunne over skrive en bestemt linje, der står kun et enkelt tal på hver linje.

Håber nogen kan hjælpe!
Avatar billede ljm21 Praktikant
27. januar 2006 - 11:18 #1
Jeg plejer gerne at hente hele indholdet af filen, rette det der skal rettes, og så skrive det hele tilbage igen. På den måde er det fint at den overskriver indholdet.

Lars
Avatar billede anders_stigaard Nybegynder
27. januar 2006 - 11:34 #2
Jeg er meget ny i PHP.. Kan du komme bare en stump kode.. Bruge en del timer på at finde ud af ovenstående :D!
Avatar billede ljm21 Praktikant
27. januar 2006 - 11:40 #3
$fp = fopen("$filen", "w");
fputs($fp,$indhold);
fclose($fp);

Hvor $filen er den fulde sti til filen, og $indhold er indholdet til filen.
Kender du siden www.php.net? Der er dokumentation af samtlige php-funktioner. Den er simpelthen uundværlig når man koder i PHP.

Lars
Avatar billede anders_stigaard Nybegynder
27. januar 2006 - 12:52 #4
Dette er måske helt forket (det virker i hvert fald ikke :D):

function skriv($i)
    {
    $lines = file("./status.txt");
   
    $fp = fopen("$filen", "w");
   
    $test = 1;

    $lines[$i] = $test;

    fputs($fp,$lines);
   
    fclose($fp);

    }

echo skriv(0);

Jeg ville tro den skulle skrive 1 på "plads" 0! Men den "sletter" indholdet i filen, og der står nu "array".. Hvilket jeg finder endnu mere mystisk...
Avatar billede ljm21 Praktikant
27. januar 2006 - 13:19 #5
Det er fordi fputs skal have en String som input, og du giver den et array. Du kan lave dit array om til en string med funktionen join().

fputs($fp,join('',$lines));

Lars
Avatar billede cybermike Nybegynder
27. januar 2006 - 14:06 #6
mere korrekt er det nok at indsaette lineshifts dvs fputs($fp,implode("\n",$line));
Avatar billede anders_stigaard Nybegynder
30. januar 2006 - 10:18 #7
hmm!

Den skriver til filen nu! Men jeg fik nok ikke beskrevet hvad det var jeg skulle bruge til at starte med..

Problemet er at hvis vi siger der skal stå 10 tal i filen.. altså fra plads 0 til 9.. Så skal den overskrive plads 0 f.eks med et nyt tal, men der skal stadig kun være 10 pladser.. Altså skal der ikke "skubbes" noget ind i filen.. Der skal kun overskive det som står på pladsen i forvejen!!
Avatar billede ljm21 Praktikant
30. januar 2006 - 10:29 #8
function skriv($i){
  $lines = file("./status.txt");
  $test = 1;
  $lines[$i] = $test;
  $fp = fopen("./status.txt", "w"); 
  fputs($fp,implode("\n",$line));
  fclose($fp);
}

echo skriv(0);

Ovenstående bør virke efter din hensigt, men jeg har ikke testet det...

Lars
Avatar billede anders_stigaard Nybegynder
08. februar 2006 - 09:40 #9
ljm21 jeg har fået det til at virke nu.. Smid et svar hvis du vil have points :)
Avatar billede ljm21 Praktikant
08. februar 2006 - 12:05 #10
Det var rart at høre :-) Var det ovenstående der virkede?

Lars
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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