Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Php-rivit

Sivun loppuun

TVdata [25.05.2012 21:47:06]

#

Miten saataisiin lisättyä tekstiä kuuden rivin päähän tiedoston lopusta phpssä?

Heikki [25.05.2012 21:50:24]

#

Jos nyt operaatiota ei tarvitse tehdä tuhansia kertoja sekunnissa/tiedosto ei ole todella suuri, yksinkertaisin tapa on
1. Lue tiedoston rivit taulukkoon (php:n file()-funktio) a
2. Luo uusi taulukko b ja kopioi siihen taulukon a kaikki paitsi kuusi viimeistä riviä
3. Lisää haluamasi data taulukon b loppuun
4. Lisää loput taulukon a alkiot (rivit) taulukon b loppuun
5. Ylikirjoita tiedoston sisältö taulukon b sisällöllä

Metabolix [25.05.2012 21:50:46]

#

Lue rivit taulukoksi, lisää teksti oikeaan väliin, ja lopuksi tallenna rivit. Mitä kohtaa näistä et osaa, ja miten olet yrittänyt? Kysymyksestäsi ei myöskään käy selvästi ilmi, haluatko lisätä joillekin kuudelle riville tekstiä tiedoston lopusta, lisätä tekstiä kuudenneksi viimeiselle riville vai lisätä kokonaan uuden rivin seitsemänneksi viimeiseksi (eli niin, että sen jälkeen on vielä kuusi vanhaa riviä).

TVdata [25.05.2012 22:10:09]

#

Haluan lisätä kokonaan uuden rivin.

Metabolix [25.05.2012 22:20:53]

#

// Luetaan rivit.
$rivit = file("tiedosto.txt", FILE_IGNORE_NEW_LINES);

// Korvataan kuuden päässä lopusta nolla aiempaa riviä yhdellä uudella rivillä.
array_splice($rivit, -6, 0, array("Uusi rivi!"));

// Tallennetaan rivit.
file_put_contents("tiedosto.txt", implode("\n", $rivit). "\n");

TVdata [28.05.2012 18:06:03]

#

(Mod. yhdisti keskustelut.)

Mikä on ongelmana tässä skriptissä?
http://koululappu.zxq.net/peli.html

EDIT:
http://koululappu.zxq.net/peli.php

<?php

$teksti = $_POST["teksti"];
// Luetaan rivit.
$rivit = file("peli.html", FILE_IGNORE_NEW_LINES);

// Korvataan kuuden päässä lopusta nolla aiempaa riviä yhdellä uudella rivillä.
array_splice($rivit, -22, 0, array($foorumi));

// Tallennetaan rivit.
file_put_contents("peli.html", implode("\n", $rivit). "\n");
?>

samip [28.05.2012 18:28:21]

#

$foorumia ei ainakaan ole määritelty

makumaku [28.05.2012 18:38:18]

#

Eikö olisi ollut parempi kysyä ja jatkaa asiaa alkuperäisessä ketjussa, jossa tämän koodivinkit sait. (Mod. korjasi tämän.) Nyt olet esim vaihtanut koodiin lukuja, mutta et ole vaivautunut muuttamaan kommentteja koodia vastaaviksi.

-tossu- [28.05.2012 18:41:38]

#

En tiedä, mitä ihmettä yrität saada tehtyä, mutta HTML-tiedoston editointi PHP:llä ihmeellisellä purkkakoodilla sekä maagiset luvut kuten -22 eivät ole hyvästä. Vähän ajan kuluttua kenelläkään ei ole mitään käsitystä, mitä tuo koodi tekee.

Jos et voi jostain syystä pitää useasti muuttuvia tietoja tietokannassa, pidä ne edes järkevässä tietorakenteessa PHP:n puolella ja käytä serialize- sekä unserialize -funktioita.

TVdata [28.05.2012 19:00:08]

#

No parasta sitten laitta hanskat tiskiin ja kysyä miten tehdä kommenttisivu?

Metabolix [28.05.2012 20:09:39]

#

Joko tietokannan avulla kuten PHP-oppaassa tai tiedostoilla kuten koodivinkissä.

TVdata [29.05.2012 16:44:54]

#

Tosi mahtava koodi! http://koululappu.zxq.net/vieraskirja.html
Ja kauniskin on.

jukkah [29.05.2012 16:59:37]

#

TVdata kirjoitti:

Tosi mahtava koodi! http://koululappu.zxq.net/vieraskirja.html
Ja kauniskin on.

Jos koodi olisi vieraskirja.php nimisessä tiedostossa, koodi saattaisi näyttää vielä kauniimmalta. :)

TVdata [29.05.2012 18:29:07]

#

http://koululappu.zxq.net/vieraskirja.php?
Kokeilkaa.

The Alchemist [29.05.2012 19:23:51]

#

Kai näet, että sivulla puskee noticea?

jukkah [29.05.2012 19:30:10]

#

vieraskirja.php kirjoitti:

Warning: ini_set() has been disabled for security reasons in /www/zxq.net/k/o/u/koululappu/htdocs/vieraskirja.php on line 3

Warning: ini_set() has been disabled for security reasons in /www/zxq.net/k/o/u/koululappu/htdocs/vieraskirja.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /www/zxq.net/k/o/u/koululappu/htdocs/vieraskirja.php:3) in /www/zxq.net/k/o/u/koululappu/htdocs/vieraskirja.php on line 5

Jos rautalangasta väännetään, niin ensimmäinnen ja toinen virheilmoitus tarkoittavat, ettei sinulla ole oikeutta käyttää ini_set-funktiota.

Kolmas virhe kertoo, että otsaketta ei voida lähettää sisällön lähettämisen jälkeen. (Kaksi ensimmäistä virheilmoitusta on se sisältö, joka on lähtenyt.)

Poistamalla rivit 2 ja 3, jotka alkavat ini_set..., kaikki kolme virhettä poistuvat.

TVdata [30.05.2012 15:05:28]

#

Miten laitan koodin sinne peli.html:ään?

Metabolix [30.05.2012 15:06:47]

#

Et voi laittaa PHP-koodia HTML-tiedostoon.

TVdata [30.05.2012 15:24:48]

#

No, miten minä saan sen "vieraskirjan" sinne?

Lebe80 [30.05.2012 15:52:01]

#

vaihdat peli.html -tiedoston peli.php -tiedostoksi.

Tai jos se ei ole mahdollista, ymppäät vieraskirjan vanhanaikaisesti iframella, tai uuden aikaisesti ja hieman hankalammin ajaxilla.

TVdata [31.05.2012 17:52:26]

#

Nyt viestin lähetyksen jälkeen näkyy tämä.

Warning: Cannot modify header information - headers already sent by (output started at /www/zxq.net/k/o/u/koululappu/htdocs/peli.php:7) in /www/zxq.net/k/o/u/koululappu/htdocs/peli.php on line 123
OK!

Grez [31.05.2012 18:12:46]

#

Hmm, viimeisen 5 vuoden aikana putkassa on kysytty mistä tuo "Warning: Cannot modify header information - headers already sent" vasta 30 kertaa. Ilmeisesti osa, joille ko. onglema on tullut vastaan ovat osanneet käyttää hakua, muutenhan kyselyitä olisi vielä enemmän.

Eli siinä on käynyt juuri niinkuin virheilmoituksessa lukee, olet kirjoittanut selimen suuntaan jotain (rivillä 7), josta syystä otsikkotiedot on jo lähetetty eikä niitä voi lähettää uudelleen.

Harmi että Mureakuhan FAQ on rikki, muuten olisin voinut linkittää sinne.

Metabolix [31.05.2012 20:05:25]

#

Et voi laittaa yhtä kokonaista sivua toisen kokonaisen sivun keskelle ja odottaa, että kaikki toimii oikein.

Asiaa auttaisi aika paljon, jos opettelisit edes alkeet HTML:stä (esim. miltä näyttää kokonainen nettisivu) ja PHP-ohjelmoinnista (esim. miten HTML:ää tulostetaan ja missä lomakkeet kuuluu käsitellä).


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta