Avatar billede jeppe81 Nybegynder
21. september 2004 - 11:15 Der er 25 kommentarer og
1 løsning

oprette en fil med bruger valgt fil navn

jeg skal have lavet en textbox hvor en bruger skal kunne skrive hvad hans fil skal hedde og så når han opretter den skal den automatisk gemmes som det fil navn han har valgt + endelsen .cfg
Avatar billede jeppe81 Nybegynder
21. september 2004 - 11:16 #1
Det jeg har prøvet selv ser således ud, men det virker så heller ikke :/

<form method=post action="<? echo $_server["PHP_SELF"];?>">
Skriv hvad filen skal hede her:<textarea name="navn"></textarea><br>
<input type="submit" name="s2" value="opret fil">
</form>

<?
$endelse = ".cfg";
$name = navn;
if(isset($_POST["tekst"])) {
    $fil = fopen($name. "" .$endelse, "a+");
    fwrite($fil, nl2br($_POST["tekst"]));
    fclose($fil);
}
?>
<form method=post action="<? echo $_SERVER["PHP_SELF"];?>">
Skriv her: <textarea name="tekst" rows="10" cols="20"></textarea><br>
<input type="submit" name="s1" value="Skriv til fil.">
</form>
<br>
<?
$filnavn =$name. "" .$endelse;
echo $filnavn;
include($name. "" .$endelse);
?>
Avatar billede sukos Juniormester
21. september 2004 - 11:19 #2
Noget a'la'

$navn = $_POST["filnavn"];
$sti = $_SERVER["DOCUMENT_ROOT"] ."/dir/";
$fil = $sti . $navn .".cfg";

if(!is_file($fil)) {

$fp = fopen($fil, 'w+');
if ($fp) {
fputs($fp, "");
fclose($fp);
chmod($fil, 0777);
    }
}
clearstatcache();
Avatar billede sukos Juniormester
21. september 2004 - 11:21 #3
Hvor har du navnet fra?
Avatar billede sukos Juniormester
21. september 2004 - 11:22 #4
Og det her:
$name = navn;
skal jo være
$name = "navn";
Avatar billede jeppe81 Nybegynder
21. september 2004 - 11:29 #5
den giver mig denne fejl
Warning: fopen("c:/apache/htdocs/dir/.cfg", "w+") - No such file or directory in c:\apache\htdocs\skriv2.php on line 26

men det kan også være at det er mig der har lavet noget forkert, så kan du ikke skrive hele koden til at oprette den med?

det jeg prøvede med er dette:

<form method=post action="<? echo $_server["PHP_SELF"];?>">
skriv fil navn her:<textarea name="filnavn"></textarea>
<input type="submit" value="opret fil">
</form>

<?
$navn = $_POST["filnavn"];
$sti = $_SERVER["DOCUMENT_ROOT"] ."/dir/";
$fil = $sti . $navn .".cfg";

if(!is_file($fil)) {

$fp = fopen($fil, 'w+');
if ($fp) {
fputs($fp, "");
fclose($fp);
chmod($fil, 0777);
    }
}
clearstatcache();
?>
Avatar billede jeppe81 Nybegynder
21. september 2004 - 11:30 #6
sry fik ikke lige beskrevet det ordentligt, men det skal skrives ind via en tekstbox
Avatar billede sukos Juniormester
21. september 2004 - 11:44 #7
<html><head><title>opret fil</title>
</head>
<body>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
Filnavn:<br>
<input type="text" name="filnavn"><br>
Filindhold:<br>
<textarea name="indhold" cols="32" rows="8"></textarea><br>
<input type="submit" value="Opret fil">
</form>

<?php
if(isset($_POST["filnavn"])) {

if(trim($_POST["filnavn"]) == "") {
echo"<b>Skriv et filnavn!!!</b>";
exit();
}

$navn = $_POST["filnavn"];

$sti = $_SERVER["DOCUMENT_ROOT"] ."/images/";

if(!is_dir($sti)) {
echo"<b>Angivet dir findes IKKE!!!</b>";
exit();
}

$fil = $sti . $navn .".cfg";

$fp = fopen($fil, 'a+');
if ($fp) {
fputs($fp, nl2br(stripslashes($_POST["indhold"])));
fclose($fp);
chmod($fil, 0777);
echo"<b>Fil er oprettet!</b><p>";
include($fil);
    }
clearstatcache();

}

?></body></html>
Avatar billede sukos Juniormester
21. september 2004 - 11:46 #8
Men der skal lige laves noget tjek på hvad filen kommer til at hedde.
Ikke alle tegn er jo brugbare til filnavn, og vil kunne gi' problemer
Avatar billede jeppe81 Nybegynder
21. september 2004 - 11:52 #9
ja det skal jeg nok selv finde ud af men den siger: det angivne dir findes ikke og den skal bare gemme det i roden
Avatar billede sukos Juniormester
21. september 2004 - 11:55 #10
$sti = $_SERVER["DOCUMENT_ROOT"] ."/";
Avatar billede jeppe81 Nybegynder
21. september 2004 - 11:59 #11
mange tak for hjælpen :) send et svar hvis du vil have point
Avatar billede sukos Juniormester
21. september 2004 - 12:06 #12
johh, tak! :O)
Og selvom det ikke altid er nødvendigt (p.g.a. serveropsætning), foretrækker jeg altid at definere den fulde sti, når der arbejdes med filer og dirs.
Så undgår man problemer på servere med et "strammere setup"
Avatar billede jeppe81 Nybegynder
21. september 2004 - 12:14 #13
har lige et spørgsmål til hvis det er ok, hvis jeg vil have at der skal være noget fast tekst omkring det der skal skrive ind i filen f.eks hvis jeg skriver i tekst feltet X og jeg vil have der står bind "X" hvad skal jeg så gøre?
Avatar billede jeppe81 Nybegynder
21. september 2004 - 12:15 #14
skriv lige et svar igen tror ikke jeg kan give dig point når jeg har kommenteret?
Avatar billede sukos Juniormester
21. september 2004 - 12:18 #15
?
Er ikke lige helt med.
Hvis du vil ha' noget fast, kan du definere det inden du skriver til filen

$fil = $sti . $navn .".cfg";
$text = "Fast tekst";
$text .= nl2br(stripslashes($_POST["indhold"]));

og så

fputs($fp, $text);
Avatar billede jeppe81 Nybegynder
21. september 2004 - 12:18 #16
sådan fattede det ikke lige helt :P, men hvis du får lyst til at svare må du godt :)
Avatar billede sukos Juniormester
21. september 2004 - 12:20 #17
Du skal markere mit navn og klikke på accepter
Avatar billede sukos Juniormester
21. september 2004 - 12:26 #18
Fik du styr på det med det faste?
Og tak for point!
Avatar billede jeppe81 Nybegynder
21. september 2004 - 12:42 #19
tak :)
Avatar billede jeppe81 Nybegynder
21. september 2004 - 12:43 #20
ja altsaa sådan lidt, men jeg prøver mig frem nu.
Avatar billede jeppe81 Nybegynder
21. september 2004 - 12:53 #21
har lige et spørgsmål til... hvis jeg skal skrive noget efter det jeg har skrevet i tekst feltet altsaa f.eks fast tekst x "og så noget her" hvordan skal jeg så skrive det?
Avatar billede sukos Juniormester
21. september 2004 - 12:55 #22
$fil = $sti . $navn .".cfg";
$text = "Fast tekst";
$text .= nl2br(stripslashes($_POST["indhold"]));
$text .= "Afsluttende tekst";
Avatar billede jeppe81 Nybegynder
21. september 2004 - 14:10 #23
jeg har et spørgsmå mere, du kan godt få flere point hvis du gerne vil :), nå men til mit spørgsmål, hvordan gør jeg, hvis jeg gerne vil sørge for at den næste side man kommer ind på der vil den gemme i den samme fil som den første hvor jeg valgte det. altsaa hvordan sender jeg det vidrere så at man ikke skal vælge fil igen?
Avatar billede sukos Juniormester
21. september 2004 - 14:47 #24
hmm, enten med cookies eller sessions
Og ellers, kan du jo godt bruge $_POST, men hvis brugeren klikker opdater, vil der jo blive skrevet til filen igen.

Et simpelt eks. på brug af sessions:

side1.php
<a href="side2.php?var=minvar">side 2</a>

side2.php
<?php
session_start();

if(isset($_GET["var"])) {
$_SESSION["valgte"] = $_GET["var"];
}else{
$_SESSION["valgte"] = "Ingen var valgt";
}

echo $_SESSION["valgte"];

?>
Avatar billede jeppe81 Nybegynder
21. september 2004 - 16:30 #25
det skal skrive i 2 forskellige php filer ik? og skal de skrives helt uden html?
Avatar billede jeppe81 Nybegynder
21. september 2004 - 17:09 #26
og hvis det er en variabel der skal sættes ind skal det så bare gøres med

<a href="side2.php?var=$minvar">side 2</a>

?
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