Avatar billede Mathias- Nybegynder
09. november 2011 - 04:02 Der er 26 kommentarer og
1 løsning

simpelt html/php

Jeg har:

<body>
<form method="POST" action="write.php">
<input type="text" name="name" size="19"><br>
<br>
<input type="submit" value="Submit" name="submit">

og

<?
$name = $_POST['name'];
$name2 = $_POST['name2'];
$fh = fopen("file.txt", "a");
fwrite($fh, $name, $name2);
echo "File written";
?>

Jeg kunne godt tænke mig at det blev skrevet om, så:
den overskriver i stedet for at tilføje tekst i file.txt, altså gemmer en ny fil oveni.

Jeg har forsøgt at sætte flere forme ind, men jeg kan ikke få teksten fra flere forme til at indgå i file.txt, kun teksten fra form 1 - hvordan gør jeg det?

Er det muligt at den laver linjeskift i txt-filen?

Så kunne jeg også godt tænke mig at html-siden ikke bliver viderestillet til php-siden, når man klikker på knappen, men at knappen, nærmere virker som en opdater knap..

100 point, da der er flere spørgsmål
Avatar billede Mathias- Nybegynder
09. november 2011 - 04:05 #1
EDiT: det første script ser sådan ud:

<HTML>
<BODY>
<form method="POST" action="write.php">
<input type="text" name="name" size="19"><br>
<br>
<input type="submit" value="Submit" name="submit">
</form>
</body>
</html>
09. november 2011 - 06:56 #2
I dette spørgsmål synes du at gentage nogle af de ting du spurgte om i dit foregående spørgsmål.  Jeg henviser til mit indlæg til det spørgsmål. 

Så spørger du hvordan man i txt filen får den nye tekst til at overskrive den bestående tekst i stedet for at blive tilføjet til den bestående tekst.  Det får du ved at bruge "w" i stedet for "a".  Se for eksempel http://php.net/manual/en/function.fopen.php

Og så vil du have at formen skal kalde den samme side i stedet for at kalde write.php.  Så skal du erstatte action="write.php" med action="".  Så er det formentlig meningen, at koden til at lave txt fil først skal bruges, når formen er submittet.  Det bliver så noget som:

<?php
if($_POST['submit'])
{
    $name = $_POST['name'];
    $name2 = $_POST['name2'];
    $fh = fopen("file.txt", "a");
    fwrite($fh, $name, $name2);
    echo "File written";
}
?>
<form method="POST" action="">
<input type="text" name="name" size="19"><br>
<br>
<input type="submit" value="Submit" name="submit">
</form>
Avatar billede olebole Juniormester
09. november 2011 - 12:45 #3
<ole>

Den tager vi lige én gang til  =)

Giv aldrig formelementer navne som 'name' eller 'submit'. Det resulterer før eller siden problemer.

I stedet for at bruge en knap til at tjekke, om formen er sendt, kan det godt betale sig at medsende et hidden field.

Og til sidst skal PHP-koden lige gøres anvendelig sammen med HTML-koden:


<?php
if(!empty($_POST) && isset($_POST['context']) && $_POST['context']=='write_file') {
    $name = $_POST['navn'];
    $name2 = $_POST['navn2'];
    $fh = fopen('file.txt', 'w');
    fwrite($fh, $name."\r\n".$name2);
    fclose($fh);
    echo 'File written';
}
?>
<form method="POST" action="">
<input name="context" value="write_file" type="hidden">
<input type="text" name="navn" size="19"><br>
<input type="text" name="navn2" size="19"><br>
<br>
<input type="submit" value="Submit">
</form>


/mvh
</bole>
Avatar billede Mathias- Nybegynder
09. november 2011 - 13:04 #4
Altså jeg vil  have at formen skal kalde den samme side, uden at slette de data man allerede har indtastet, så det mere bliver en opdataringsknap.

Desuden har jeg stadig problemer med at tilføje flere bokse, hvad skal php siden hedde?

<?
$name = $_POST['name'];
$fh = fopen("file.txt", "a");
fwrite($fh, $name);
echo "File written";
?>


Sådanher virker den med én boks.
Avatar billede olebole Juniormester
09. november 2011 - 13:25 #5
En form, der submittes, reloader altid dokumentet. PHP virker kun på serveren og kan ikke gøre noget ved et dokument, der ligger i browseren. Derfor skal dokumentet en tur forbi serveren, hvis PHP skal skrive i din fil.

Vil du lave en opdatering, hvor browseren taler med serveren i baggrunden, skal du bruge Ajax - men der er du meget langtfra endnu. Du skal først have lært en hel del HTML, JavaScript, DOM, CSS og PHP.

Jeg misforstod spørgsmålet, så jeg troede, du ville overskrive dokumentet. Hvis der skal tilføjes bruger du bare dette i stedet:


<?php
if(!empty($_POST) && isset($_POST['context']) && $_POST['context']=='write_file') {
    $name = $_POST['navn'];
    $name2 = $_POST['navn2'];
    $fh = fopen('file.txt', 'a');
    fwrite($fh, $name.' og '.$name2."\r\n");
    fclose($fh);
    echo 'File written';
}
?>

Avatar billede Mathias- Nybegynder
09. november 2011 - 13:31 #6
jeg tror der er gået noget galt allerede i det første jeg skrev, har nemlig kun kunne finde ud af at tilføje et navn til txt filen. Altså når jeg prøver med mere end et $name=$_POST['navn']; så går det galt
Avatar billede olebole Juniormester
09. november 2011 - 13:41 #7
Spilder du min tid - eller prøver du de koder, jeg skriver til dig?
Avatar billede Mathias- Nybegynder
09. november 2011 - 13:44 #8
Ole, jeg prøver dem skam - har prøvet dem op til flere gange, men når jeg så klikker på submit, danner den ikke txt filen (jeg har ændret 'file.txt' til "file.txt")

Jeg værtsætter virkelig din tid, men det driller mig nu lidt det her..
Avatar billede olebole Juniormester
09. november 2011 - 13:48 #9
Det virker helt upåklageligt. Hvad gør du? Ligger PHP-dokumentet på en lokal server, eller?
Avatar billede olebole Juniormester
09. november 2011 - 13:49 #10
Får du fejlmeddelelser - og i så fald, hvad siger de(n) så?

Bruger du også min HTML-kode? Ellers fungerer det naturligvis ikke
Avatar billede Mathias- Nybegynder
09. november 2011 - 13:56 #11
I php får jeg denne:
"Dynamically-related files cannot be discovered because there is no site definition for this document"

Jeg uploader det til http://www.kostberegner.dk/skole/index.html
filen skulle være her: http://www.kostberegner.dk/skole/file.txt
Avatar billede Mathias- Nybegynder
09. november 2011 - 13:57 #12
Jeg bruger one.com som webhotel
Avatar billede olebole Juniormester
09. november 2011 - 14:01 #13
Nej, det er ikke en PHP-fejl. Det er noget DreamWeaver-snask. Gå udenom DW og upload med et alm. FTP-program
Avatar billede Mathias- Nybegynder
09. november 2011 - 14:07 #14
Jeg gemmer filen og uploader med filezilla.

Den gemmer stadig ikke filen..
Hvis jeg skriver:
<HTML>
<BODY>
<form method="POST" action="write.php">
<input type="text" name="name" size="19"><br>
<br>
<input type="submit" value="Submit" name="submit">
</form>
</body>
</html>

<?
$name = $_POST['name'];
$fh = fopen("file.txt", "a");
fwrite($fh, $name);
echo "File written";
?>

så vil den gerne gemme filen. men her har jeg kun én boks
Avatar billede olebole Juniormester
09. november 2011 - 14:16 #15
Jeg ved ikke, hvad du laver, men koden, jeg skrev, gør præcis, hvad du efterspørger. Prøv at copy/paste denne kode ind i et dokument - og test så:


<?php
if(!empty($_POST) && isset($_POST['context']) && $_POST['context']=='write_file') {
    $name = $_POST['navn'];
    $name2 = $_POST['navn2'];
    $fh = fopen('file.txt', 'a');
    fwrite($fh, $name.' og '.$name2."\r\n");
    fclose($fh);
    echo 'File written';
}
?>
<form method="POST" action="">
<input name="context" value="write_file" type="hidden">
<input type="text" name="navn" size="19"><br>
<input type="text" name="navn2" size="19"><br>
<br>
<input type="submit" value="Submit">
</form>

Avatar billede olebole Juniormester
09. november 2011 - 14:21 #16
Koden i det dokument, du linker til ovenfor, ser sådan ud:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

</body>

<form method="POST" action="">
<input name="context" value="write_file" type="hidden">
<input type="text" name="navn" size="19"><br>
<input type="text" name="navn2" size="19"><br>
<br>
<input type="submit" value="Submit">
</form>

</body>
</html>



</body>
</html>


- men det har jo ikke noget med et HTML-dokument at gøre.

Prøv denne kode i stedet:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>

<?php
if(!empty($_POST) && isset($_POST['context']) && $_POST['context']=='write_file') {
    $name = $_POST['navn'];
    $name2 = $_POST['navn2'];
    $fh = fopen('file.txt', 'a');
    fwrite($fh, $name.' og '.$name2."\r\n");
    fclose($fh);
    echo 'File written';
}
?>
<form method="POST" action="">
<div>
<input name="context" value="write_file" type="hidden">
<input type="text" name="navn" size="19"><br>
<input type="text" name="navn2" size="19"><br>
<br>
<input type="submit" value="Submit">
</div>
</form>

</body>
</html>

Avatar billede olebole Juniormester
09. november 2011 - 14:23 #17
- og jeg prøver lige igen, så URL'en i DTD'en kommer med:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>

<?php
if(!empty($_POST) && isset($_POST['context']) && $_POST['context']=='write_file') {
    $name = $_POST['navn'];
    $name2 = $_POST['navn2'];
    $fh = fopen('file.txt', 'a');
    fwrite($fh, $name.' og '.$name2."\r\n");
    fclose($fh);
    echo 'File written';
}
?>
<form method="POST" action="">
<div>
<input name="context" value="write_file" type="hidden">
<input type="text" name="navn" size="19"><br>
<input type="text" name="navn2" size="19"><br>
<br>
<input type="submit" value="Submit">
</div>
</form>

</body>
</html>
Avatar billede Mathias- Nybegynder
09. november 2011 - 14:53 #18
Det lader ikke til at virke, hvad skal jeg kalde filnavne ?
Avatar billede olebole Juniormester
09. november 2011 - 15:10 #19
Du må kalde dem, hvad du vil. Hvis koden i #14 virker, virker den kode, jeg har skrevet, med højglansforkromet statsgaranti også.

Du laver en eller flere fejl, som jeg ikke kan se herfra. Jeg kan ikke hjælpe dig videre
Avatar billede Mathias- Nybegynder
09. november 2011 - 15:20 #20
den sidste du skrev skal den forstås som én fil? isåfald er den så filnavn ".html" ?
Avatar billede Mathias- Nybegynder
09. november 2011 - 15:28 #21
Nu sker der noget! Jeg var ikke klar over at der også SKULLE ligge en fil.txt i mappen, jeg troede, at den selv generede denne fil :D
Avatar billede Mathias- Nybegynder
09. november 2011 - 15:32 #22
Det var satens.. det lod lige til at virke, men nu fungerer det ikke længere....
Avatar billede olebole Juniormester
09. november 2011 - 15:42 #23
Et PHP-dokument må naturligvis ikke have 'html' som extension - fuldstændig ligesom en Word- eller Photoshop-fil ikke må.

Scriptet opretter en fil, dersom den ikke allerede eksisterer. Den skal med andre ord ikke eksistere på forhånd. Muligvis kører one.com med open_basedir restriktioner - og så skal filen eksistere. Det er dog ikke normen hos seriøse udbydere
Avatar billede Mathias- Nybegynder
09. november 2011 - 22:42 #24
tak jeg har fået det til at virke nu, men hvordan gør jeg sådan at den ikke sletter det som står i felterne, men stadig gemmer.

Jeg kunne godt tænke mig 10 felter.
Når man klikker på submit, skulle det, som står i disse 10 felter meget gerne blive stående. Og så skal de felter som er fyldte selvfølgelig ikke gemmes igen når man klikker på submit.

eks. jeg udfylder 5 felter klikker submit, udfylder nu de resterende felter og klikker submit.

smid desuden et svar ;)
Avatar billede olebole Juniormester
09. november 2011 - 23:20 #25
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)

Du kan skrive værdierne ind på denne måde:


<input type="text" name="navn" value="<?php print $_POST['navn'] ?>" size="19"><br>


- men at sørge for, de ikke bliver skrevet i filen igen, kræver lidt mere kode. Det orker jeg ikke at sidde og skrive lige nu  =)
Avatar billede Mathias- Nybegynder
10. november 2011 - 15:50 #26
Lækkert Ole! Tak for hjælpen, den værtsætter jeg virkelig!
Avatar billede olebole Juniormester
10. november 2011 - 16:58 #27
Selvtak  =)
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