bosannes Skrevet 20. april 2005 Del Skrevet 20. april 2005 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
toss Skrevet 20. april 2005 Del Skrevet 20. april 2005 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.. Lenke til kommentar
Gilbert Skrevet 20. april 2005 Del Skrevet 20. april 2005 I verste fall får du laste inn hele filen og lagre nytt innhold i den (nytt innhold = ny linje + gammelt innhold) Lenke til kommentar
bosannes Skrevet 20. april 2005 Forfatter Del Skrevet 20. april 2005 (endret) 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.. 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 20. april 2005 av bosannes Lenke til kommentar
bosannes Skrevet 20. april 2005 Forfatter Del Skrevet 20. april 2005 I verste fall får du laste inn hele filen og lagre nytt innhold i den (nytt innhold = ny linje + gammelt innhold) Håpet å unngå det :\ Lenke til kommentar
Gilbert Skrevet 20. april 2005 Del Skrevet 20. april 2005 (endret) **dobbel - dumme dumme trådløse nettverk!** Endret 20. april 2005 av fjartan Lenke til kommentar
dabear Skrevet 20. april 2005 Del Skrevet 20. april 2005 (endret) hva med å lagre alt som et serlized() array i ei tekstfil? da unserializer du + array_reverse, og vips har du det nyeste først. *kanskje ikke noe bedre løysing *, må jo fortsatt åpne fila,slette den, og skrive nyy innhodl til den Endret 20. april 2005 av dabear Lenke til kommentar
bosannes Skrevet 20. april 2005 Forfatter Del Skrevet 20. april 2005 <?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
bosannes Skrevet 22. april 2005 Forfatter Del Skrevet 22. april 2005 (endret) 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 23. april 2005 av bosannes Lenke til kommentar
bosannes Skrevet 22. april 2005 Forfatter Del Skrevet 22. april 2005 (endret) 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 Endret 22. april 2005 av bosannes Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå