Gå til innhold

Script til å redigere en .txt fil


Anbefalte innlegg

Videoannonse
Annonse
altså eg vil ha et script som kan skrive ting. og slette ting i en txt fil.  trenger ikkje å være så profisjonelt at det trengs admin innlogging ol.

 

 

noen som har peilig på et enkelit lite script?

5738000[/snapback]

 

 

Du kan lage et slikt for å legge inn tekst i en tekstfil:

 

<?php

/*
* Hvis knappen "send" er trykket på
if(isset($_POST['send'])){
// Innholdet i textarea hentes ut
$content = strip_tags(trim($_POST['innhold']));	
/*
* Åpner en strøm til en fil (her min_fil.txt) i mode
* w+, som åpner en fil for skriving. Hvis filen ikke finnes 
* opprettes den
*/
$filePointer = fopen('min_fil.txt', 'w+');

// passende feilmelding ved IO-feil
if(!$filePointer) print ("Det gikk ikke så bra å åpne filen");
// Skriver innhold til filen
fwrite($filePointer, $content) or die("Feil under skriving");
// Lukker strømmen og skriver ut bekreftelse til brukeren
fclose($filePointer);
print("Filen er lagret");
}else{
/*
* Send er ikke trykket på
* Sjekker om min_fil.txt finnes fra før, og hvis den gjør forsøk
* å lese innholdet
*/
if(file_exists('min_fil.txt'){
 $filePointer = fopen('min_fil.txt', 'r');
 if(!$filePointer) print("IO-feil, sorry");
// skriver ut HTML-skjema
print <<<HTML
 <form method="post" action="">
HTML;
 // Itererer over filen
 while(!feof($filePointer)){
 	$content .= fgets($filePointer);
 }
// Skriver ut innholdet fra filen i et textarea
print <<<HTML
 <textarea name="innhold" cols="30" rows="20" value="$content"></textarea><br />
 <input type="submit" name="send" value="Skriv fil">
 </form>
HTML;

}else{
/*
* Hvis filen ikke finnes skriv ut et helt vanlig skjema
*/
print <<<HTML
 <form method="post" action="">
 <textarea name="innhold" cols="30" rows="20" value="$content"></textarea><br />
 <input type="submit" name="send" value="Skriv fil">
 </form>
HTML;
}
}
?>

 

Jeg har ikke fått testet dette på en server, men prinsippet er iallfall noe slikt du skal ha. Mulig jeg har noen skrivefeil (type manglende parantes, semikolon osv etc mm) men disse skal være enkle å oppdage under parsing.

 

Viktig:

Linjeskift rett etter <<<HTML

og etter HTML;

må det overhode IKKE stå noe. Da klager php-parser

Lenke til kommentar
den funket nok ikkje. kommer ingenting opp på siden, altså blank side.

5740321[/snapback]

 

Som hun sa var det noen små feil i programmet..

 

<?php


// Hvis knappen "send" er trykket på
if(isset($_POST['send'])){
// Innholdet i textarea hentes ut
$content = strip_tags(trim($_POST['innhold']));
/*
* Åpner en strøm til en fil (her min_fil.txt) i mode
* w+, som åpner en fil for skriving. Hvis filen ikke finnes
* opprettes den
*/
$filePointer = fopen('min_fil.txt', 'w+');

// passende feilmelding ved IO-feil
if(!$filePointer) print ("Det gikk ikke så bra å åpne filen");
// Skriver innhold til filen
fwrite($filePointer, $content) or die("Feil under skriving");
// Lukker strømmen og skriver ut bekreftelse til brukeren
fclose($filePointer);
print("Filen er lagret");
}else{
/*
* Send er ikke trykket på
* Sjekker om min_fil.txt finnes fra før, og hvis den gjør forsøk
* å lese innholdet
*/
if(file_exists('min_fil.txt')){
$filePointer = fopen('min_fil.txt', 'r');
if(!$filePointer) print("IO-feil, sorry");
// skriver ut HTML-skjema
print <<<HTML
<form method="post" action="">
HTML;
// Itererer over filen
while(!feof($filePointer)){
 $content .= fgets($filePointer);
}
// Skriver ut innholdet fra filen i et textarea
print <<<HTML
<textarea name="innhold" cols="30" rows="20">$content</textarea><br />
<input type="submit" name="send" value="Skriv fil">
</form>
HTML;

}else{
/*
* Hvis filen ikke finnes skriv ut et helt vanlig skjema
*/
print <<<HTML
<form method="post" action="">
<textarea name="innhold" cols="30" rows="20" value="$content"></textarea><br />
<input type="submit" name="send" value="Skriv fil">
</form>
HTML;
}
}
?>

 

Har rettet litt på noen feil i programmet til CruellaDeVille, nå vil det virke..

 

EDIT: fikset bare en liten feil til i programmet

Endret av trondes
Lenke til kommentar
en bitteliten ting til eg kunne ønske meg, er når eg trykker "enter" i tekst området for å skifte linje, skjer ikkje dette i min_fil.txt filen...

 

hmm.. det skjer nå, men ønsker du at det ikke skal skje ?

 

Hvordan henter du ut tekstfilen for å vise den ?

Lenke til kommentar
det skjer ikkje nå nei.

 

Hva mener du med hvordan eg henter filen?

 

Jo, del lagrer linje skift i filen, men problemet er bare at webbrowserne ikke er for nøyd med valige linjeskift. De krever <br> for at de skal lage nye linjer.

 

Du må kjøre feks nl2br() som konvertere "\n" ( linje skift) til "<br>", dvs at der du vil at innholdtet skal vises på siden din skriver du inn:

 

<?php

print nl2br(file_get_contents( "min_fil.txt"));
?>

Lenke til kommentar
Hva forandrer jeg hvis jeg vil at det som skrives inn i textarea skal bli lagt til på slutten av filen isteden for å overskrive den?

5741742[/snapback]

 

da setter du mode i fopen($filepointer, <mode>) til 'a' eller

'a+'... + betyr at hvis filen ikke finnes, opprett den. 'a' setter peker inn på slutten av filen istedet for i begynnelsen (slik 'w' og 'w+' gjør)

Lenke til kommentar
det skjer ikkje nå nei.

 

Hva mener du med hvordan eg henter filen?

 

Jo, del lagrer linje skift i filen, men problemet er bare at webbrowserne ikke er for nøyd med valige linjeskift. De krever <br> for at de skal lage nye linjer.

 

Du må kjøre feks nl2br() som konvertere "\n" ( linje skift) til "<br>", dvs at der du vil at innholdtet skal vises på siden din skriver du inn:

 

<?php

print nl2br(file_get_contents( "min_fil.txt"));
?>

5741285[/snapback]

den fungerte, takk skal du ha =)

Lenke til kommentar
'a+'... + betyr at hvis filen ikke finnes, opprett den. 'a' setter peker inn på slutten av filen istedet for i begynnelsen (slik 'w' og 'w+' gjør)

5742144[/snapback]

 

Vel... Ikke helt riktig. "a+" åpner filen for både lesing og skriving. "a" åpner filen kun for skriving. Både "a+" og "a" oppretter filen dersom den ikke finnes.

 

'a'  Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

 

EDIT: Dette gjelder forsåvidt også "w" og "w+". + tegnet betyr at filen åpnes for både lesing og skriving. Uten pluss tegnet vil den kun åpne filen for skriving. Filen vil bli opprettet dersom den ikke finnes både med og uten + tegn

Endret av kakkle
Lenke til kommentar
det skjer ikkje nå nei.

 

Hva mener du med hvordan eg henter filen?

 

Jo, del lagrer linje skift i filen, men problemet er bare at webbrowserne ikke er for nøyd med valige linjeskift. De krever <br> for at de skal lage nye linjer.

 

Du må kjøre feks nl2br() som konvertere "\n" ( linje skift) til "<br>", dvs at der du vil at innholdtet skal vises på siden din skriver du inn:

 

<?php

print nl2br(file_get_contents( "min_fil.txt"));
?>

5741285[/snapback]

Oh.. nice, denne koden har jeg lett etter lenge! :thumbup:

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...