Avatar billede hammerhead Nybegynder
20. juni 2003 - 19:50 Der er 16 kommentarer og
1 løsning

At skrive til en fil

Hej.

Jeg har lavet så at man kan komme med en kommentar på en side, se eks. her: http://www.flykending.dk/fakta/hornet/hornet.php Vælg kommentar.

Delen med kommentar er lagt på siden med include, selve filen ligger her: http://www.flykending.dk/fakta/hornet/skrivtilfil.php

Jeg skriver til en txt fil som så vises i en iframe på siden i filen http://www.flykending.dk/fakta/hornet/kommentar.php

Problemet er hvis man opdaterer siden så laver den et linieskift på kommentarsiden samtidigt laver den en horisontal scrollbar ved lange indlæg. Jeg har forsøgt at lave en tabel på kommentar.php og så include txt filen heri, men det virker ikke.

Puu, det var en lang forklaring - håber der er nogen der kan hjælpe. Jeg er ikke så god til php :-)
Kan jeg "formatere" nedenstående så det bliver opstillet pænt.

<?
$file = "write.txt";
$fp = fopen ("$file","a");

fputs($fp, "$var1 <br>\n $var2 <p>\n");
fclose($fp);
?>

Eller skal jeg prøve noget helt andet?
Avatar billede ahv Nybegynder
20. juni 2003 - 19:54 #1
<?
$file = "write.txt";
$fp = fopen ("$file","a");

fputs($fp, "$var1 <br>\n $var2 <p>\n");
fclose($fp);
header("Location: hornet.php"); // Vi redirecter til siden, for at undgå der kan trykkes opdater også den indsætter igen
?>

Den med de lange indlæg skal jeg lige finde frem :o)
Avatar billede ahv Nybegynder
20. juni 2003 - 19:56 #2
På en celle kan du indsætte ->
style="word-wrap: break-word; width: 500px;"

Hvor width så er bredden på cellen, dette virker dog kun i IE.
Avatar billede hammerhead Nybegynder
20. juni 2003 - 20:05 #3
Hej ahv

I formularen siger jeg <form method=post action=hornet.php#kommentar>

skal det fjernes hvis jeg bruger header("Location: hornet.php"); eller influerer det ikke på hinanden?
Avatar billede ahv Nybegynder
20. juni 2003 - 20:13 #4
Det skal ikke væk, den header gør at den hopper fra hornet.php -> hornet.php på denne måde glemmer php hvad man har indtastet, derfor skal headeren også være efter du har indsat.
Avatar billede ahv Nybegynder
20. juni 2003 - 20:14 #5
Aaah grunden til den bliver mindre er at du ingen if har på 2 sekunder så skal du se.
Avatar billede ahv Nybegynder
20. juni 2003 - 20:16 #6
<?
if (isset($_POST['Til')) {
$file = "write.txt";
$fp = fopen ("$file","a");

fputs($fp, "$var1 <br>\n $var2 <p>\n");
fclose($fp);
header("Location: hornet.php"); // Vi redirecter til siden, for at undgå der kan trykkes opdater også den indsætter igen
}
?>

Sådan skal det se ud der hvor du indsætter.
Avatar billede hammerhead Nybegynder
20. juni 2003 - 20:27 #7
Hej.

Måtte rette til dette:

($_POST['Til'])
Avatar billede ahv Nybegynder
20. juni 2003 - 20:28 #8
Isset er nu den mest korrekte, men ok, virker det nu?
Avatar billede hammerhead Nybegynder
20. juni 2003 - 20:29 #9
får denne fejl

Warning: Cannot add header information - headers already sent by (output started at \hornet.php:6) in \skrivtilfil.php on line 34
Avatar billede hammerhead Nybegynder
20. juni 2003 - 20:31 #10
Isset bruger jeg stadig, der var smuttet et ] i dit forslag
Avatar billede ahv Nybegynder
20. juni 2003 - 20:31 #11
Det er fordi der er output til browseren først ->

<?
if (isset($_POST['Til')) {
$file = "write.txt";
$fp = fopen ("$file","a");

fputs($fp, "$var1 <br>\n $var2 <p>\n");
fclose($fp);
header("Location: hornet.php"); // Vi redirecter til siden, for at undgå der kan trykkes opdater også den indsætter igen
}
?>

Skal stå i toppen af filen, der må intet HTML være før den, så sæt det i toppen.
Avatar billede ahv Nybegynder
20. juni 2003 - 20:32 #12
hammerhead -> Det var der også, undskyld, men som sagt du skal flytte de linier jeg lige postede op i toppen af din side.
Avatar billede hammerhead Nybegynder
20. juni 2003 - 20:40 #13
Nu er fejlen rykket op på siden. Her er hele skrivtilfil.php

<?
if (isset($_POST['Til'])) {
$file = "write.txt";
$fp = fopen ("$file","a");

fputs($fp, "$var1 <br>\n $var2 <p>\n");
fclose($fp);
header("Location: hornet.php");
}
?>
<html>
<head>
      <title>Skriv kommentar</title>
</head>
<body>
<form method=post action=hornet.php#kommentar>
<table border="1" width="100%" bordercolor="#FFFFFF" cellspacing="1">
<tr>
<td width="50%">
<font face="Verdana" size="1">Dit
navn:<br><input type="text" name="var1" size="20"><br>
<br>Kommentar:<br></font><textarea rows="8" name="var2" cols="36"></textarea>
<p><br>
<input type="submit" name="Til" value="Tilføj">&nbsp;
<input type="reset" name="Reset" value="Nulstil">

</p>
<p>&nbsp;</td>
<td width="50%" valign="top" align="left">
<iframe name="kommentar" src="kommentar.php" width="350" height="250"></iframe>
</td>
</tr>
</table>
</form>
</font>
</body>
</html>
Avatar billede ahv Nybegynder
20. juni 2003 - 20:43 #14
Så må vi droppe den header, en løsning med javascript ville kunne løse det, men det er overkille så lige nu blot ->

<?
if (isset($_POST['Til'])) {
$file = "write.txt";
$fp = fopen ("$file","a");

fputs($fp, "$var1 <br>\n $var2 <p>\n");
fclose($fp);
}
?>

Så er problemet med dine blanke linier løst.
Det med at den for vandret scroll skrev jeg i starten lave en tabel hvor du indsætter den style, så burde det virker i IE hvertfald.
Avatar billede hammerhead Nybegynder
20. juni 2003 - 20:51 #15
Det ser ud til at virke, smukt.
Mange tak for hjælpen. Point er på vej
Avatar billede ahv Nybegynder
20. juni 2003 - 20:58 #16
Det var så lidt.
Avatar billede martinbk Nybegynder
20. juni 2003 - 23:51 #17
ved godt det er en noget rescource krævende, og også omfattende løsning men det evige problem omkring headers kan oftes løses via en output buffer.
ta et kig på følgende funktioner :)
ob_start();
ob_get_contents();
ob_end_flush();
ob_end_clean();
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