Koodin tarkoituksena on luoda uusi tekstitiedosto, jonne tallentuisi uusi foorumiaihe. Olen pitkän pähkäilyn jälkeen saanut tiedostonluonnin toimimaan oikealla nimellä -tyhjänä.
En tiedä yhtään, mikä koodissa mättää, mutta toivottavasti joku teistä tietäisi. :)
Elikkäs miten koodin saisi sellaiseksi, että myös sisältö sinne tallentuisi:
<?php $kiitosSivu = "http://ankzilla.com/f/7c8552df1a7648f5843d16e8d636d258.php"; $palautteetTallennetaan = true; $tallennaTiedostoon = "topic_name.'.txt"; // Chmodaa muotoon 766 function lisaaTiedostonLoppuun ($tiedosto, $lisattava) { ignore_user_abort(true); $fd = fopen ($tiedosto, "a"); if (flock($fd, LOCK_EX)) { fwrite($fd, $lisattava); flock($fd, LOCK_UN); } fclose($fd); ignore_user_abort(false); } $tyyppi = $_POST['Tyyppi']; // Käsittely if ($tyyppi == 'viesti') { /* Luetaan lomakkeen lähettämät kentät muuttujiin */ $nimi = strip_tags($_POST['nimi']); $topic_name = strip_tags($_POST['topic_name']); $topic_msg = strip_tags($_POST['topic_msg']); /* Otetaan ylös lähettäjän kellonaika */ $aikaLahetetty = date('d.m.Y H:i:s'); $tallennaTeksti =" <table bgcolor=\"slategray\" border=\"1px\"> <tr> <td width=\"515px\" align=\"middle\"><small><b><big>$nimi</big> - $aikaLahetetty</b></small></td> </tr> <tr height=\"1px\" bgcolor=\"white\"><td></td></tr> <tr> <td align=\"middle\"><b>$topic_name</b></td> </tr> <tr height=\"75px\" valign=\"top\" align=\"left\"> <td>$topic_msg</td> </tr> </table> <br /><br /> "; //Raxin juttu $tallennaTiedostoon = fopen($topic_name.'.txt', 'w'); fclose($tallennaTiedostoon); /* Siirtyy kiitossivulle */ header("Location: ".$kiitosSivu); } else { /* Jos kyseessä on joku muu lomake kuin tyyppiä PALAUTE. */ exit ("Virhe PHP:ssä - Ota yhteyttä Palaute -lomakkeella"); } ?>
???
Sulla on tos vaan fopen() ja fclose(), välistä puuttuu se olennainen fwrite().
Niin tuollahan on tehty funktio "LisaaTiedostonLoppuun", mutta sitä ei käytetä missään.
Siin funktios vaan avataan tiedosto a-moodis. Muistaakseni append-mode ei luo tiedostoa jos sitä ei ole, vai? Nyt kännyl jaksa tarkistaakkaan :)
Edit: muistin väärin :(
ajv kirjoitti:
Muistaakseni append-mode ei luo tiedostoa jos sitä ei ole, vai?
PHP: fopen - Manual kirjoitti:
'a' | Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.
Jatkakaa.
ajv kirjoitti:
Sulla on tos vaan fopen() ja fclose(), välistä puuttuu se olennainen fwrite().
Anteeksi että kyselen tyhmiä, mutta mutta mikä oli sen moodin kirjain joka kirjoitti ne jutut?
Tai antaisitteko vain linkin, mistä ne kaikki näkee. (En osannut Googlata oikeilla hakusanoilla)
w
Pekka Mansikka kirjoitti:
w
Kiitos.
En kovin paljoa tiedä PHP:stä, ja tämän avulla koitan sitä opetellakkin.
Kertoa joku vielä että onko seuraava skriptinpätkä mahdollinen, eli saako kahdessa koodinpätkässä olla sama moodi?
PHP:n manuaali voisi olla ihan hyödyllinen. Sieltä selviää myös, että fwrite-funktio ei ota vastaan mitään moodeja. Jos tallennaTeksti-muuttuja sisältää tallennettavan tekstin, toinen rivi menisi näin:
fwrite($tallennaTiedostoon, $tallennaTeksti);
lainaus:
saako kahdessa koodinpätkässä olla sama moodi?
Tähän kysymykseen vastaus on kyllä, mutta en tiedä miten se liittyi kyseiseen koodiin.
Andu kirjoitti:
Jos tallennaTeksti-muuttuja sisältää tallennettavan tekstin, toinen rivi menisi näin:
fwrite($tallennaTiedostoon, $tallennaTeksti);
Eikö tule muka mitään moodia?
Another question:
$tallennaTiedostoon = fopen($topic_name.'.txt', 'w');
Toi topic_name.'txt', <== Niin onko noi ' ja , -merkit oikein, että vaikuttaako ne mitenkään koodiin?
(En sitte oo tehny tätä kovin kauaa, älkää hermostuko. ;) )
ankzilla kirjoitti:
Eikö tule muka mitään moodia?
Another question:
$tallennaTiedostoon = fopen($topic_name.'.txt', 'w');
Juu-u, ei fwriteen tule moodia. Tuossa esimerkissäsi on fopen eikä fwrite.
Pilkku erottaa funktiolle annettavat parametrit. Fopen() ottaa niitä vastaan kaksi.
Heittomerkkien välinen teksti on merkkijono. Piste yhdistää kaksi merkkijonoa yhdeksi. Koska muuttujaan $topic_name on sijoitettu merkkijono, sitä käsitellään kuten muutakin merkkijonoa.
Kun sijoitat rivillä 5
$tallennaTiedostoon = "topic_name.'.txt";
, kaikki kaksinkertaisten heittomerkkien väliin laitettavat merkit muodostavat merkkijonon. Tämä ei ole oikein.
Sillä ei kuitenkaan ole vaikutusta ohjelman toimintaan, sillä ylikirjoitat muuttujan myöhemmin, jolloin sen merkkijonomerkitys katoaa.
//Raxin juttu $tallennaTiedostoon = fopen($topic_name.'.txt', 'w'); fclose($tallennaTiedostoon);
Tämän jälkeen $tallennaTiedostoon viittaa kyseiseen tiedostoon.
Koska käytössäsi on funktio
function lisaaTiedostonLoppuun ($tiedosto, $lisattava)
voit kuitenkin korvata tiedostoon kirjoituksen kutsumalla tätä funktiota:
lisaaTiedostonLoppuun($topic_name.'.txt', $tallennaTeksti);
Nyt se toimii, vaikken korjannutkaan noita ville-v:n juttuja.
Kiitos!
Miksen voi muokata viestiäni? No jaa...
Onhan sekin mahdollista, että samalla lomakkeella voi luoda vaikka kuinka paljon tiedostoja kopioimalla ja vähän muokkailemalla ton saman koodin kahteen kertaan samaan tiedostoon? Tietysti arvot muuttaisin, mutta kun tarvitsisin luoda toisen tiedoston aiheen vastauksille.
Teen siis foorumeita, jos jollekkin jäi epäselväksi.
ankzilla kirjoitti:
Miksen voi muokata viestiäni? No jaa...
Et ole kirjautunut sisään tai viestin kirjoittamisesta on kulunut liikaa aikaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.