Viime kerralla pyysin foorumia, mutta kun ei sitä tullut, aloitin tekemään sitä itse. Nyt vain tarvitsisin sellaista palvelusta yksinkertaisesta koodista, joka kirjoittaisi aina jotakin tekstitiedostoon edellisen viestin päälle. Tarkoitan siis, että täälläkin on selkeästi tehty niin. Tekstitiedosto on avattu ja siellä on lukenut esimerkiksi uusin vastaus viestiin. Miten saan tämmöisen koodin? voisiko joku vain kertoa, miten saa fwritellä (tai jollain muulla) kirjoitettua tekstitiedostoon edllisen tekstin päälle.
siis haluut vanhan tiedoston nollille ja sitte uuden päälle?
Poista eka vanha tiedosto unlink($tiedosto); (olikohan toi funktio) ja sitte kirjotat normaalisti fwrite();llä
Hmm... nyt tuli jokin vika. Tulee vain teksti:
Parse error: parse error in c:\apache\htdocs\nimi.php on line 7
eli errori tuli.
lainaus:
Nyt vain tarvitsisin sellaista palvelusta yksinkertaisesta koodista, joka kirjoittaisi aina jotakin tekstitiedostoon edellisen viestin päälle. Tarkoitan siis, että täälläkin on selkeästi tehty niin. Tekstitiedosto on avattu ja siellä on lukenut esimerkiksi uusin vastaus viestiin.
Tarkoitat ilmeisesti viestien kirjoittamista niin, että uusin viesti on ylimpänä eikä kirjaimellisesti "päälle" kirjoitusta?
Oho, tulipa tuolle viestille ulkonäköä
lainaus:
Hmm... nyt tuli jokin vika. Tulee vain teksti:
Parse error: parse error in c:\apache\htdocs\nimi.php on line 7
eli errori tuli.
Jos haluat apua, niin kannataisi myös laittaa hieman koodia näkyville.
Katso muita threadejä joihin Laaksonen on näköjään jo kirjoittanut vastauksen.
lainaus:
Viime kerralla pyysin foorumia, mutta kun ei sitä tullut, aloitin tekemään sitä itse.
No niin, niin sitä pitää :) Itse tekemällä oppii parhaiten.
lainaus:
Nyt vain tarvitsisin sellaista palvelusta yksinkertaisesta koodista, joka kirjoittaisi aina jotakin tekstitiedostoon edellisen viestin päälle.
Tarkoittanet että vastaus johonkin viestiin kirjoitettaisiin samaan tiedostoon jossa alkuperäinenkin viesti on? Ja se vastaus kirjoitettaisiin ennen alkuperäistä viestiä?
Onnistuu esimerkiksi niin, että luet tiedoston ensin muistiin ja sen jälkeen avaat saman tiedoston fopen() funktiolla "w" -muotoon. Tämän jälkeen kirjoitat uuden vastauksen fwrite:lla tähän tiedostoon + muistissa oleva teksti.
Ja vinkkinä omaan kokeiluun: tarvitset näitä; fopen, fwrite, file, count ja for
Toinen tapa on kirjoittaa uusi vastaus johonkin väliaikaiseen tiedostoon ja siihen perään vanhat viestit. Sen jälkeen poistat alkuperäisen viestitiedoston ja muutat väliaikaisen tiedoston tiedostonimen samaksi kuin äsken poistit.
Ja vinkki tähänkin: fopen, fwrite, unlink, rename ja for
En väitä että nämä olisivat parhaimmat tavat tehdä tuo, mutta itse olen niitä käyttänyt.
Luen tiedostonimen muistiin? No nyt en kyllä ymmärtänyt.
Ei tarkoita ihan, että omaan muistiin..., Tallennat vanhat viestit muuttujaan, esim. näin:
$vanhat=file("viestit.txt");
no nyt en kyllä pysy mukana. Yritän siis saada kiinni koodista, joka kirjoittaa esimerkiksi uusimman vastauksen, tai vastaajan nimen (jos nimeä kysytään). Antaisitteko suorana koodina? Kiitos.
$vanhat=file("vkirja.txt"); $filu=fopen("vkirja.txt","w") or die ("Tiedoston avaus epäonnistui"); $viesti = stripslashes($viesti); $uusirivi='<table bgcolor="white" width=650><tr><td width=580><b><font face=/"Arial/"><h5>Nimi:'.strip_tags($nimi).'</h5></font></td><td width=70><font face=/"arial/"><h6>pvm:'.date('d.m.Y H:i').'</h6></font></b></td></tr> <tr><td><b><font face=/"arial/"><h5>Osoite:'.strip_tags($osoite).'</h5></b></font></td><td></td></tr> <tr><td><table><tr><td><font face=/"arial/" color=/"#000055/"><h5><b>Email:</h5></td><td><a href=/"mailto:'.strip_tags($email).'/"><h5>'.strip_tags($email).'</h5></b></font></td></tr></table></td><td></td></tr> <tr><td><table><tr><td><font face=/"arial/" color=/"#000055/"><h5><b>Kotisivu:</h5></font></td><td><font face=/"arial/"><h5><a href=\"http://'.strip_tags($urlosoite).'\" target=_blank>'.strip_tags($urlosoite).'</a></h5></b></font></td></tr></table></td><td></td></tr> <tr><td><font face=/"arial/" color=/"#000055/"><h5>'.strip_tags($viesti).'</h5></font></td><td></td></tr></table><br>'; fputs($filu,$uusirivi) or die ("Tiedostovirhe"); for ($i=0;$i<count($vanhat);$i++) { fwrite($filu,$d[$i]); } fclose($filu); }
Tästä voit alkaa miettimään. Siinä nämä muuttujat ($nimi), jotka on strip_tagsien perässä, viittaavat formin name-määreeseen. Jos ei aukene, jatka kyselyä.
Parse error: parse error in c:\apache\htdocs\vkirja.php on line 16
Tuollaista sanoo
Mitä tuolla rivillä 16 mahtaa lukea? En tiä, mutta ahaa..
fwrite($filu,$d[$i]);
Tuo kuuluu olla näin:
fwrite($filu,$vanhat[$i]);
Sorry
Tosin tuo virhe ilmoittaisi erilaisen virheilmoituksen kuin toi parse error. Siis sittenkin: mitä rivillä 16 lukee? Voisitko laittaa koodia pätkän?
Aihe on jo aika vanha, joten et voi enää vastata siihen.