Gå til innhold

fopen mode write i starten av filer


Anbefalte innlegg

Har laget meg en liten gjestebok i php og alt ser ut til å funke, men jeg har ETT problem. Jeg bruker fopen($filename, "a") for å åpne fila for skriving, men da havner nye poster hele tiden nederst. Hvordan kan jeg få nye poster til å skrives først i fila uten at jeg mister eldre poster? Tror jeg har prøvd alle modusene.

Lenke til kommentar
Videoannonse
Annonse

prøv r+..

'r+' Open for reading and writing; place the file pointer at the beginning of the file.

eller w+ (dersom scriptet skal opprette filen om den ikke finnes..)

'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist' date=' attempt to create it.

 

http://no.php.net/manual/en/function.fopen.php

 

hvis ikke det funker vet ikke jeg.. :huh:

Lenke til kommentar
prøv r+..
'r+' Open for reading and writing; place the file pointer at the beginning of the file.

eller w+ (dersom scriptet skal opprette filen om den ikke finnes..)

'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist' date=' attempt to create it.

 

http://no.php.net/manual/en/function.fopen.php

 

hvis ikke det funker vet ikke jeg.. :huh:

Har prøvd r+, men det den sletter fortsatt starten av dokumentet (uten at jeg skjønner helt hvordan den skjønner hvor mye den skal fjerne)

 

w+ sletter alt tidligere innhold

Endret av bosannes
Lenke til kommentar
<?php
$filename = 'gjester.txt'; // angir hvor listene skal lagres
$handle = fopen($filename, "w+"); // apner fila i variabelen $handle
$navn = strip_tags($_POST['navn']); // navn fra formen lagres i $navn. strip_tags sorger for a fjerne eventuell kode
$epost = strip_tags($_POST['epost']); // epost fra formen lagres i $epost. strip_tags sorger for a fjerne eventuell kode
$melding = nl2br(strip_tags($_POST['melding'])); // melding fra formen lagres i $melding. strip_tags sorger for a fjerne eventuell kode og nl2br lager <br> der brukeren har trykket enter (new line)
$navnf = "<div class=\"newsstory\" style=\"border: 1px #c00 solid; padding: 5px;\"><a href=\"mailto:$epost\" alt=\"Send en mail til $navn\">$navn</a><br>"; // Gjor navnet om til en hyperlink til e-post adressen og anngir et nytt html linjeskift
$meldingf = "$melding \n </div> \n ";
fwrite($handle, $navnf);
fwrite($handle, $epostf);
fwrite($handle, $meldingf);
fclose($handle)
?>

Lenke til kommentar

Jeg valgte løsningen med å skrive alt på nytt, så nå ser koden slik ut:

<?php

$filename = 'gjester.txt'; // angir hvor listene skal lagres

$handle = fopen($filename, "w+"); // apner fila i variabelen $handle

$les = fread($handle, filesize($filename));

$navn = strip_tags($_POST['navn']); // navn fra formen lagres i $navn. strip_tags sorger for a fjerne eventuell kode

$epost = strip_tags($_POST['epost']); // epost fra formen lagres i $epost. strip_tags sorger for a fjerne eventuell kode

$melding = nl2br(strip_tags($_POST['melding'])); // melding fra formen lagres i $melding. strip_tags sorger for a fjerne eventuell kode og nl2br lager <br> der brukeren har trykket enter (new line)

$navnf = "<div class=\"newsstory\" style=\"border: 1px #c00 solid; padding: 5px;\"><a href=\"mailto:$epost\" alt=\"Send en mail til $navn\">$navn</a><br>"; // Gjor navnet om til en hyperlink til e-post adressen og anngir et nytt html linjeskift

$meldingf = "$melding \n </div> \n ";

fwrite($handle, $navnf);

fwrite($handle, $epostf);

fwrite($handle, $meldingf);

fwrite($handle, $les);

fclose($handle)

?>

Får denne meldingen til tross for at gjester.txt ikke er tom :\

Warning: fread(): Length parameter must be greater than 0. in X:\X\X\X\gjest\write.php on line 7

Endret av bosannes
Lenke til kommentar

Gjorde like greit slik:

<?php
$filename = 'gjester.txt'; // angir hvor listene skal lagres
$handle = fopen($filename, "rb"); // apner fila i variabelen $handle
$les = fread($handle, filesize($filename)); // Laster filas innhold i $les
fclose($handle);
$handle = fopen($filename, "wb"); // apner fila i variabelen $handle
$navn = strip_tags($_POST['navn']); // navn fra formen lagres i $navn. strip_tags sorger for a fjerne eventuell kode
osv........

Tar fortsatt imot forslag på hvordan det egentlig skal gjøres

 

PS: Poster jeg mer nå, så kommer satan og tar meg. Detta var post 665 :cry:

Endret av bosannes
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...