Mitä viellä säädän ja minne kohtaan, jotta saan toimimaan sen kunnolla.
online.php
<?php include("yla.html"); ?> <CENTER> <BR> <h1>Apua</h1> Jos ikkuna ei avautunut automaattisesti, paina <a href="">tästä</A><BR> Voit kysyä apua tällä ohjelmalla ruuan laitosta ja kaikesta mikä liittyy Ruokakomeroon.<BR> <BR> </CENTER> <script> window.open("onlineapu.php", "onlineapu", "width=200,height=200,"); </script> <?php include("ala.php"); ?>
onlineapu.php
<?php //Kysely ?> <CENTER> <TABLE BORDER="0" BGCOLOR="#FFFAEF"> <TD> <TR> <form action="onlinekysy.php" method="post" <B>Nimesi:</B> <INPUT type="text" name="nimi"><BR> <B>Sähköpostisi</B> <INPUT type="text" name="sposti"><BR> <input type="submit" value="Aloita"> </TR> </TABLE> </CENTER>
onlinekysy.php
<CENTER> <TABLE BORDER="1" BGCOLOR="#FFFAEF"> <TD> <TR height="160"> <BR> <?php include("teksti.txt"); header("refresh: 3"); ?> </TR> <TR height="40"> <BR> <form action="onlinekysytarkista.php" method="post"> <B>Viesti:</B> <textarea name="kysymys"> </textarea><input type="submit" value="Lähetä"> </FORM> </TR> </TD> </TABLE> </CENTER>
onlinekysytarkista.php
<?php //muodostetaan merkkijono $_POST-taulukon alkioista foreach($_POST as $nimi => $arvo) { $palaute .= $nimi.": ".$arvo."\n"; } //lähetetään palaute PHP:n mail-funktiolla $k = fopen('teksti.txt','a'); fwrite($k, $sisalto); fclose($k); //$viesti on true sähköpostin lähetyksen onnistuessa if($viesti) { //jos lähetys onnistui, käyttäjä ohjataan kiitossivulle header("Location: onlinekysy.php"); } else { //muussa tapauksessa käyttäjä ohjataan virhesivulle header("Location: onlinekysy.php"); } ?>
Sitten on teksti.txt tiedosto, joka on aivan tyhjä.
Eli mitä viellä pitäis muuttaa ja lisää tonne, että se toimis.
Niin siis miten saan ton nimen vedettyä tuolta yhdestä tonne mukaan :D
en nyt ymmärtänyt kysymystäsi.. mutta ainakin tuo headerjuttu pitäisi laittaa kai ihan alkuun :)
VIRHE!
Tän:
<?php
//Kysely
?>
<CENTER>
<TABLE BORDER="0" BGCOLOR="#FFFAEF">
<TD>
<TR>
<form action="onlinekysy.php" method="post"
<B>Nimesi:</B> <INPUT type="text" name="nimi"><BR>
<B>Sähköpostisi</B> <INPUT type="text" name="sposti"><BR>
<input type="submit" value="Aloita">
</TR>
</TABLE>
</CENTER>
Pitäisi olla näin:
<?php
//Kysely
?>
<CENTER>
<TABLE BORDER="0" BGCOLOR="#FFFAEF">
<TD>
<TR>
<form action="onlinekysy.php" method="post">
<B>Nimesi:</B> <INPUT type="text" name="nimi"><BR>
<B>Sähköpostisi</B> <INPUT type="text" name="sposti"><BR>
<input type="submit" value="Aloita">
</form>
</TR>
</TABLE>
</CENTER>
Tosta puuttu ">" JA </form>
Höh. Tän:
<?php
//Kysely
?>
voi korvata näin:
<?-- Kysely -->
Mitensiis saan tuolta onlineapu.php tiedostosta tuon nimen vedettyä tuohon onlinekysy.php :n`?
En kyllä ihan tajunnu, mutta ilmeisesti olis tarkotus siirtää nimi aluksi onlineapu.php -sivulta onlinekysy.php -sivulle ja siitä edelleen onlinekysytarkista.php -sivulle.
Tämähän onnistuu esim html:n piilokentällä:
<input type="hidden" name="nimi" value="<?php print $_POST['nimi'];?>">
Tuo siis tonne onlinekysy.php -sivun formin sisään.
edit: puolipiste unohtui ;)
Niin ja ihan noita perusjuttuja:
<TABLE> <TD> <TR> <!-- sälää --> </TR> </TABLE>
Olis ehkä parempi:
<TABLE> <TR> <TD> <!-- sälää --> </TD> </TR> </TABLE>
onlineapu.php on nykään:
<CENTER> <TABLE BORDER="0" BGCOLOR="#FFFAEF"> <TD> <TR> <form action="onlinekysy.php" method="post"> <B>Nimesi:</B> <INPUT type="text" name="nimi"><BR> <B>Sähköpostisi</B> <INPUT type="text" name="sposti"><BR> <input type="submit" value="Aloita"> </form> </TR> </TABLE> </CENTER>
onlinekysytarkista.php :ssä ja sitten onlinekysy.php:ssä on viellä jotain vikaa, mutta muissa ei pitäisi olla...
header("refresh: 3");
Tuo pitäisi tulla ennen kuin mitään tulostetaan.
Eli siirrä toi header("Refresh: 3"); ihan alkuun.
if($viesti) { //jos lähetys onnistui, käyttäjä ohjataan kiitossivulle header("Location: onlinekysy.php"); } else { //muussa tapauksessa käyttäjä ohjataan virhesivulle header("Location: onlinekysy.php"); }
Eihän tossa mailia lähetetä? Eikä edes ole olemassa muuttujaa $viesti.
Okei eli alkuun... :) (Toi yksi kohta on jo muokattu se näyttää tältä:
<?php $nimi=$_POST['nimi']; $palaute=$_POST['kysymys']; $k = fopen('teksti.txt','a'); fwrite($k, "$nimi $palaute\n"); fclose($k); //lähetetään palaute PHP:n mail-funktiolla $k = fopen('teksti.txt','a'); fwrite($k, $kysymys); fclose($k); header("Location: onlinekysy.php"); ?>
Tossa kun nimen on laittanut niin se sanoo:
Warning: Cannot modify header information - headers already sent by (output started at /home/ruokakom/public_html/teksti.txt:2) in /home/ruokakom/public_html/onlinekysy.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at /home/ruokakom/public_html/teksti.txt:2) in /home/ruokakom/public_html/onlinekysy.php on line 9
Voitan sä tehä ton siirtämisen vaikka javascriptillä?
No mites mä sen javascriptillä siirrän?
<SCRIPT LANGUAGE="JavaScript"> window.location = "mihinsiirretään.php"; </script>
ja mihin kohtaan laitan ton, jotta se on oikeassa kohdassa?
JavaScriptiä ei kannata käyttää siirron tekemiseen, sillä täysin sama onnistuu header-funktiolla ja toimii kaikilla selaimilla. Saamasi virheilmoitus johtuu siitä, että olet tulostanut sivulle jotain muuta ennen header-funktiota.
lainaus:
Voitan sä tehä ton siirtämisen vaikka javascriptillä?
/me potkaisee kenkkua tuollaisen ehdottamisesta
JavaSkriptillä ei saa tehdä mitään sivun toiminnan kannalta välttämätöntä.
Höm... Teillä ei ole yhdenmukaista päätöstä :)
onlinekysytarkista.php tiedostossa on viellä vikaa :S ja vähän on vikaa myös tossa onlinekysy.php tiedostossa... :'(
HEI! kiitti koodeista ZeBe :)
en tiennytkään että PHP:llä saa määritettyä kuinka monen sekunnin päästä sivu ladataan uudelleen :)))
Edit: tuli tässä mieleen, että voisiko headereilla lähettää POST-dataa, eli sitä mitä lomakkeet lähettävät?
Hei tota tajuaako kukaan, että mitä noissa koodeissa on viellä vikana, noitten korjattujen khotien lisäksi!
No jos vaikka kertoisit, mitä virhettä tulee - jos tulee virhettä. Ja jos ei tule virhettä, niin kerro mitä se tekee ja mitä sen pitäisi tehdä.
Ehkä sitten voimme auttaa.
lainaus:
<?-- Kysely -->
Se on <!-- eikä <?--
Se sanoo tälläset virheet:
Warning: Cannot modify header information - headers already sent by (output started at /home/ruokakom/public_html/teksti.txt:2) in /home/ruokakom/public_html/onlinekysy.php on line 10
ja sit tälläsen listan:
Warning: fopen(teksti.txt): failed to open stream: Permission denied in /home/ruokakom/public_html/onlinekysytarkista.
Warning: fwrite(): supplied argument is not a valid stream resource in /home/ruokakom/public_html/onlinekysytarkista.
Warning: fclose(): supplied argument is not a valid stream resource in /home/ruokakom/public_html/onlinekysytarkista.
Warning: fopen(teksti.txt): failed to open stream: Permission denied in /home/ruokakom/public_html/onlinekysytarkista.
Warning: fwrite(): supplied argument is not a valid stream resource in /home/ruokakom/public_html/onlinekysytarkista.
Warning: fclose(): supplied argument is not a valid stream resource in /home/ruokakom/public_html/onlinekysytarkista.
Warning: Cannot modify header information - headers already sent by (output started at /home/ruokakom/public_html/onlinekysytarkista.
No siinähän on suorat vastaukset sun ongelmiin! Lueppa noi virheilmotukset ajatuksella, niin luulis aukeavan!
edit: Eli: sanottu jo useamman kerran: header()-funkitiota ei voi käyttää sen jälkeen kun jotain on jo tulostettu ruudulle. Siirrät sen scriptin ylimmäks. Ja sit vaan tarkastat teksti.txt:n chmodit. Siis että kaikki oikeudet on kunnossa (777), tai vähempikin varmaan riittää.
jaah... no se kyllä pitäis olla niin :S
Aihe on jo aika vanha, joten et voi enää vastata siihen.