Gå til innhold

Skrive til fil


Gjest Slettet+432

Anbefalte innlegg

Gjest Slettet+432

Hei, jeg skal lage et script så folk bare kan spør om ting om data... Det lengste jeg kommer er dette:

 

<form>

Ditt navn: <input type="text" size="15" name="navn" value="">

Din epost: <input type="text" size="15" name="epost" value="">

Ditt spørsmål: <input type="text" size="25" name="sporsmal" value="">

<input type="Submit" value="Spør oss!">

</form>

 

Jeg skal få det til å skrive til en tekstfil. og så skal den igjen skrive ut alt som står i fila... men hvis noen gidder hjelpe meg å få til dette med mysql så blir jeg glad :) jeg vil også at det skal gå an å legge til et svar etter å ha tastet inn et passord.

 

altså at det skal se ut slik:

<a href="mailto:epost">Navn</a> den D.M.Y  |Det samme som ved siden av

                                                                    |Svar:

Spørsmål:                                                    |blablabla

blablabla                                                      |

 

Lenke til kommentar
Videoannonse
Annonse

Fil for "posting" av spørsmål:

<form method=post>
Ditt navn: <input type="text" size="15" name="navn" value="">
Din epost: <input type="text" size="15" name="epost" value="">
Ditt spørsmål: <input type="text" size="25" name="sporsmal" value="">
<input type="Submit" value="Spør oss!">
</form>

<?php
if(!empty($_POST['navn']) && !empty($_POST['epost']) && !empty($_POST['sporsmal']))
{
 $sporsmal = eregi_replace("\r\n", '%newline%', $_POST['sporsmal']);
 $fp = fopen('fil.txt', 'a+');
 fputs($fp, $_POST['navn'].'|'.$_POST['epost'].'|'.$sporsmal.$_POST['sporsmal']."\r\n");
 fclose($fp);
}
?>

 

Fil for lesing av spørsmål:

<?php
$a = file('fil.txt');
foreach($a as $temp)
{
 $b = explode('|', $temp);
 echo '<table>
<tr><td>Fra:</td><td>'.$b[0].'</td></tr>
<tr><td>E-post:</td><td>'.$b[1].'</td></tr>
<tr><td>Spørsmål:</td><td>'.$b[2].'</td></tr>
</table><br><br>';
}
?>

 

Gidder ikke sjekke om det funker, men du får prøve.

Lenke til kommentar
Gjest Slettet+432

Tusen takk!!! Men vet du hvordan man kan få sånn svar-greie?? Sånn at jeg kan svare på spørsmålene.. ?

 

EDIT: Det er noe alvorlig galt med det scriptet, hver gang jeg oppdaterer dobler antallet beskjeder!!

 

EDIT2: Har noen en mysql løsning heller? ville vært bedre...

Endret av Slettet+432
Lenke til kommentar

det er ikke en feil.

 

når du trykker refresh etter å ha postet en melding, så sender du samme posten en gang til. Sånn skal det være.

 

det kan unngås ved å trykke på en link du plasserer ut. da vil den følge linken istedet for å sende samme POST request engang til.

 

du kan også flytte hele php-taggen i fil for posting av meldinger øverst i fila istedet for nederst, og deretter legge inn

header("Location: filsomlisteroppmeldinger.php");
exit;

etter fclose i "fil for posting".

 

(legg inn riktig filnavn i location i header setningen)

Lenke til kommentar
Gjest Slettet+432

ok... hvor i denne koden:

<?php
if(!empty($_POST['navn']) && !empty($_POST['epost']) && !empty($_POST['sporsmal']))
{
$sporsmal = eregi_replace("\r\n", '%newline%', $_POST['sporsmal']);
$fp = fopen('spørsmål.txt', 'a+');
fputs($fp, $_POST['navn'].'|'.$_POST['epost'].'|'.$sporsmal.$_POST['sporsmal']."\r\n");
fclose($fp);
}
?>

 

Skal dette:

header("Location: filsomlisteroppmeldinger.php");
exit;

`

?

 

Og har noen en måte å lage et kommentarsystem på? Aller helst vil jeg bruke mysql istedenfor tekstfiler... noen som har tips til det??

Endret av Slettet+432
Lenke til kommentar
Gjest Slettet+432
Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/reboothome.com/httpdocs/index.php:11) in /home/httpd/vhosts/reboothome.com/httpdocs/include/dataproblemer/dataproblemer.php on line 17

 

header("Location: index.php?side=visdataproblemer");

 

<form method=post>

Ditt navn: <input type="text" size="15" name="navn" value="">

<br>

Din epost: <input type="text" size="15" name="epost" value="">

<br>

Problem: <textarea name="sporsmal" value=""></textarea> <br>

<input type="Submit" value="Spør oss!">

</form>

 

<?php

if(!empty($_POST['navn']) && !empty($_POST['epost']) && !empty($_POST['sporsmal']))

{

$sporsmal = eregi_replace("\r\n", '%newline%', $_POST['sporsmal']);

$fp = fopen('problemer.txt', 'a+');

fputs($fp, $_POST['navn'].'|'.$_POST['epost'].'|'.$sporsmal.$_POST['sporsmal']."\r\n");

fclose($fp);

header("Location: index.php?side=visdataproblemer");

exit;

}

?>

 

Siden: http://www.reboothome.com/index.php?side=dataproblemer

Endret av Slettet+432
Lenke til kommentar
Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/reboothome.com/httpdocs/index.php:11) in /home/httpd/vhosts/reboothome.com/httpdocs/include/dataproblemer/dataproblemer.php on line 17

 

header("Location: index.php?side=visdataproblemer");

 

<form method=post>

Ditt navn: <input type="text" size="15" name="navn" value="">

<br>

Din epost: <input type="text" size="15" name="epost" value="">

<br>

Problem: <textarea name="sporsmal" value=""></textarea> <br>

<input type="Submit" value="Spør oss!">

</form>

 

<?php

if(!empty($_POST['navn']) && !empty($_POST['epost']) && !empty($_POST['sporsmal']))

{

$sporsmal = eregi_replace("\r\n", '%newline%', $_POST['sporsmal']);

$fp = fopen('problemer.txt', 'a+');

fputs($fp, $_POST['navn'].'|'.$_POST['epost'].'|'.$sporsmal.$_POST['sporsmal']."\r\n");

fclose($fp);

header("Location: index.php?side=visdataproblemer");

exit;

}

?>

 

Siden: http://www.reboothome.com/index.php?side=dataproblemer

Den feilmeldingen der kommer når du prøver å endre header, altså header(location: osv...) etter at du har hat output på sida. Du må endre header før du skriver ut noe (echo f.eks.) Vel, har bare holdt på med php i et par dager og den feilmeldinga der kjenner jeg nå.... :)

Lenke til kommentar
Gjest Slettet+432

Nå vet jeg ikke hvem jeg skal høre på. Torbjørn sa jeg skulle ha den etter fclose, og du sier jeg skal ha den før alt. Det er vel i teorien rett, men Torbjørn kan vel mer php enn deg? ;)

Lenke til kommentar
Nå vet jeg ikke hvem jeg skal høre på. Torbjørn sa jeg skulle ha den etter fclose, og du sier jeg skal ha den før alt. Det er vel i teorien rett, men Torbjørn kan vel mer php enn deg?  ;)

 

Prøv å bytt om rekkefølgen, slik at du får programmeringsbiten først og html'en etterpå.

Det vil jeg anta ja. Jeg burde ha lagt til at den feilmeldingen i hvert fall kommer blant annet når du gjør den feilen jeg snakket om. Godt mulig den kan komme av andre ting og. Men etter hva jeg har forstått er den "header" feilen en såkalt nybegynner feil (får håpe jeg ikke fornærmet deg nå :) ).

 

Prøv å bytte om rekkefølgen, slik at du får programmeringsbiten først og html'en etterpå. Slik:

 

<?php

if(!empty($_POST['navn']) && !empty($_POST['epost']) && !empty($_POST['sporsmal']))

{

$sporsmal = eregi_replace("\r\n", '%newline%', $_POST['sporsmal']);

$fp = fopen('problemer.txt', 'a+');

fputs($fp, $_POST['navn'].'|'.$_POST['epost'].'|'.$sporsmal.$_POST['sporsmal']."\r\n");

fclose($fp);

header("Location: index.php?side=visdataproblemer");

exit;

}

?>

 

<form method=post>

Ditt navn: <input type="text" size="15" name="navn" value="">

<br>

Din epost: <input type="text" size="15" name="epost" value="">

<br>

Problem: <textarea name="sporsmal" value=""></textarea> <br>

<input type="Submit" value="Spør oss!">

</form>

Endret av fjotten
Lenke til kommentar
Gjest Slettet+432

Åja... da så... :D

 

Edit:

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/reboothome.com/httpdocs/index.php:11) in /home/httpd/vhosts/reboothome.com/httpdocs/include/dataproblemer/dataproblemer.php on line 8

 

Jeg fikk fortsatt denne feilmeldingen! Har gjort helt som dere sa!

Endret av Slettet+432
Lenke til kommentar
Åja... da så... :D

 

Edit:

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/reboothome.com/httpdocs/index.php:11) in /home/httpd/vhosts/reboothome.com/httpdocs/include/dataproblemer/dataproblemer.php on line 8

 

Jeg fikk fortsatt denne feilmeldingen! Har gjort helt som dere sa!

Hvis den kodesnutten du har vist oss er i en egen fil som blir inkludert på en annen side, vil det ikke virke siden du da har output før headerendring.

Lenke til kommentar

hvis du allerede har kjørt deg fast ved at du inkluderer alt i en index.php-fil, som allerede har spyttet ut en masse HTML før Location-header kjøres, har du først og fremst et dårlig design på dette webprosjektet som bør skrives om ved neste beleilige totalrevidering (jeg liker og å utsette ting :p)

 

reserveløsningen og latmannsløsningen, er å legge inn ob_start(); øverst i index.php fila.

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å
×
×
  • Opprett ny...