Hei. Tota tällane pikku probleema.
Eli, mulla on textarea jossa on kirjotusta kahdella rivillä. No, pitäis saada se tulostumaan toiselle sivulle alekkain, eli juuri kuten kirjoitinkin. Noh täähän ei toki ole ongelma vielä. Teen kaiken count-menetelmäl(saa toki sanoo parempii vaihtoehtoi), eli kyseinenhän tarkoittaa, että se laskee rivien määrät ja tulostaa sen mukaisesti. Käytän myös explodee hommassani. Mut siihen kirjotukseen tulee muutaki esim, aikaa, otsikkoo sun muut(ne tulee toki automaattisest ja eri paikast, mut kaik pitäs saaha yheks kokonaisuudeks. Kaikki uus tieto pitäs kuitenki saada ylimmäiseks, esim etuusin käyttäjä joka kommentoi jotain, hänen tekstinsä olisi ensimmäisenä, tämä tuottaa hankaluuksii siinä et kun laitan useamman rivin(painamalla siis entterii)
Okei, tässä vähän koodia palanpainikkeeks.
huomio.php <textarea id="f_selection" name="huom" style="width: 20em; height: 10em"></textarea> <input type="submit" value="Lähetä"> //tässä tapauksessa on tekstikenttä johon tulee tekstiä jonka nimi on huom (huomioita, hölmön nimen tarkoituksena).
up.php <?php $joku=$_POST["huom"]; $filu=fopen("huomio2.txt","w"); fputs($filu, $joku); fclose($filu); $filu = 'huomio2.txt'; $avaus = file($filu); $laskenta = count($avaus); //käy ehto kysymykset läpi ja katsoo mitä oppilas on vastannut ja että onko kysymys oikein for ($i =0; $i < $laskenta; $i++) { $text =$avaus[$i]; $text2[$i]=$text; $filu=fopen("huomio2.txt","w"); fputs($filu, $text2[$i]); fclose($filu); } //Tähän asti on jotain hölmöä yritystäni, jos joku saa mitään tolkkua $aika = date("j, n, Y"); $filename = "huomio.txt"; $filu = fopen($filename, "r"); $viestit = fgets($filu, filesize($filename)); fclose($filu);//suljetaan filu operaatio $tiedot = 'Aika: ' . $aika.":". $_POST['aihe'].":".$_POST['huom']; //Tämä värssy taas toimii moitteettomasti ja olisi muuten hyvä, ellei tuo .$_POST['huom'] tulostuisi sekä //ylös että alas otsikkoa, koska nyt kun tuolla lomakkeessa painaa entterii, se tunnistaa sen //jälkimmäisen tekstin niin kuin se olisi joku toinen käyttäjä, rivi kuitenkin yksinään jää killumaan //otsikon väärälle puolelle.
index.php $filu = 'huomio.txt'; $avaus = file($filu); $laskenta = count($avaus); //käy ehto kysymykset läpi ja katsoo mitä oppilas on vastannut ja että onko kysymys oikein for ($i = $laskenta +1; $i > 0 || $i ==0; $i--) { //Pilkotataan tuotteiden tiedot ja asetetaan ne omiin muuttujiin ?><p> <?php $rivi = explode(":", $avaus[$i]); $aikaalkio = ("$rivi[0]"); $paivaalkio = ("$rivi[1]"); $aihealkio = ("$rivi[2]"); $tekstialkio = ("$rivi[3]"); echo $aikaalkio; echo $paivaalkio; ?></p> <?php ?><p> <?php echo $aihealkio; ?></p> <?php ?><p> <?php echo $tekstialkio; ?></p> <?php echo "\n"; echo "\n"; ?></p> <?php } //viimeinen silaus, tässähän tuo huomio.txt oli se jossa kaikki teksti, niin noi aika, otsikko sun muut //on. Olen yrittänyt tuolla huomio2.txt:llä saada ainoastaan sen kirjoitetun tekstin jolloin saisin tekstin //oikein. ?>
//Eli toisinsanoen haluaisin ton kirjoitetun tekstin yhdelle riville ja "oikeat" rivit on eroteltu : jolloin voin //ne kätevästi explodel sit laittaa omille riveilleen, ja siin tapaukses erikäyttäjien tiedot olisi omilla //riveillään tuolla fyysisesti ennen varsinaista tallennusta sivuille.
//Havainnollistuksen vuoksi tässäpä vielä webbisivu mist koko roska löytyy, virallisesti. Sivut eivät //ollenkaan ole vielä valmiit joten koittakaa kestää, tiedän et ne ovat vielä sekasikiöt.
En ihan saanut viestistäsi selvää (kirjoitusvirheiden takia), mutta katsos seuraavat funktiot.
https://www.php.net/manual/en/function.nl2br.php
https://www.php.net/manual/en/function.file.php
https://www.php.net/manual/en/function.array-reverse.php
https://www.php.net/manual/en/function.file-put-contents.php
Koodia en edes jaksanut vilkaista (väritys aloitustagien takia päin puuta, ja kirjoitettu ihan siansaksalla. Jos tarkoitus on tehdä kommentointijärjestelmä, tee se näin:
<?php // kirjoita_kommentti.php if(isset($_GET["kirjoita"])) { $viesti = htmlspecialchars($_GET["viesti"]); file_put_contents("kommentit.txt", file_get_contents($viesti) . "\n$viesti"); header("Location: index.php"); } ?> <form action="?kirjoita" method="POST"> <textarea name="viesti"></textarea> <input type="submit" value="Lähetä"> </form>
<?php // index.php $kommentit = file("kommentit.txt") for($i = 0; $i < sizeof($kommentit); $i++) { echo "<p>" . $kommentit[$i] . "</p>"; } echo "<a href=\"kirjoita_kommentti.php\">Kirjoita kommentti</a>";
Pelkistetty, älä kopio, kirjoita oma, tee parempi.
Elikkäs tarkoitin sitä et ku kirjotan tohon textareaan vaikka kaks rivisen tekstin, nii toinen rivi menee niinku uudelle osiolle entterin takii.
Ja viel ku se on käänteises järjestykses eli alhaalta ylös, eli ylhäälle tulee uusin viesti.
Se toinen rivi siit tekstist menee tavallaan kuin uudeksi viestiksi, koska toi ny laskee ne rivit.
Tossahan on käytetty sitä ideaa et aluks kaik teksti mitä koko viestiin tulee, tulee yhdelle riville ja on eroteltuina kaksoispisteellä, jolloin ne voidaan explodata omille paikoilleen.
No nyt kuitenkin jos viestii kirjottaes on painettu entterii, se panee kyseisen tekstin eri riville ja näin explodaaminen siltä osin epäonnistuu.
nl2br() muuttaa rivinvaihdot <br>:ksi. Kaikki tarvittavat funktiot ovat yllä linkitettynä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.