On varmasti jollain tavalla jo selitelty että miten se tapahtuu. Mutta en ole siltikään saanut toimimaan sitä! Olen vasta aloittelija "alalla".
Elikkäs, tarkoitus on tehdä sivuille "uutiset" kohta, johon lisään asioita silloin tällöin. Olen yrittänyt koodailla helppoa semmoisen palstan ylläpito ohjelmaa. Täältä olen repinyt vaikka mitä vinkkejä, en ole saanut sitä toimimaan.
Nyt minulla on työkalu jolla lisään uutisen .txt tiedostoon. Yksi uutinen on yksi rivi. Tahtoisin siihen perään esim. linkin jota painamalla se tietty rivi häipyy sivuilta ja .txt tiedostosta. En tarvitse mitään muokkaa nappeja. Pelkästään poisto. Nyt minulla on siinä linkki jolla PITÄISI pystyä poistamaan rivin, mutta sehän sitten tyhjentää koko .txt tiedoston!
Oisko heittää vinkkiä? Ja nyt en kaipaa mitään naljailua et "miks ei vaa tee sitä noin?!", olen alottelija. Jos joku voisi vain ystävällisesti kertoa miten ton saisin helpoiten tehtyä.
Luet koko tiedoston taulukkoon ja kirjoitat kaiken takaisin paitsi poistettavan rivin.
ok. eli olen alottelija. meni ohi.
Tässäpä esimerkki:
$tiedosto = file("tiedosto.txt"); //luetaan tiedosto $tiedosto2 = fopen("tiedosto.txt", "w"); //kirjoitettava tiedosto, käytetään samaa tiedostoa, ja käytetään "w" parametriä, joka tyhjentää tiedoston $poistettava = 4; //poistetaan rivi neljä, jos sellainen on for ($i = 0; $i < count($tiedosto); $i++) //käydään kaikki rivit läpi { if($i != $poistettava) //jos ei olla menossa samassa rivissä kuin mikä poistetaan, kirjoitetaan se takaisin tiedostoon fwrite($tiedosto2, $tiedosto[$i]); } //suljetaan tiedosto fclose($tiedosto2);
kiitoksia!
Nyt ei tyhjene enään koko .txt tiedosto. Mutta.... kuinka minun pitäisi nuo laitella?
eli siis nyt minulla on lisää.php, millä laitan uuden jutun, sitten on nayta.php missä nuo jutut näkyy ja jokaisen jutun perässä on poista linkki. ja kun painaa sitä poista linkkiä, ajaa ohjelma poista.php:en jossa on tuo em. koodin pätkä.
eli jos on juttuja vaikka 14 siinä näkyvillä, ja painan jutun nro 7 kohdalla poista, niin miten sen nimenomaisen jutun saan pois?
PHP-opas, osa 4. ja kohta "Tietojen käsittely skriptissä".
ei uppoo.. ei toimi.
eli. miten saan tuon poiston nyt toimimaan siitä linkistä mikä on sen poistettavan jutun perässä? miten tuo yllä oleva rivin poisto koodin pätkä pitäisi laittaa....?
nim: epätoivo
Välität sillä linkillä sen poistettavan rivin indexin ja sijoitat sen tuohon $poistettava -muuttujaan.
Tässä myös toinen esimerkki.
Jos tuo esimerkki olisi vaikka poista.phpn niin nyt sun pitäisi joka uutisen perään lisätä linkki esim poista.php&rivi=xx, missä tietenkin xx on sen uutisen rivinumero tiedostossa. ja vielä kun muistat että ensimmäinen rivi on 0.
Ilmottele jos et saa toimimaan.
<?php $rivinro=$_GET["rivi"]; //hakee rivinumeron url:ista $tiedosto="tiedosto.txt"; $alkuper=file($tiedosto); //luetaan alkuperäinen tiedosto riveittäin taulukkoon $tuleva=fopen("temp","w"); //luodaan ja avataan temp tiedosto $i=0; //alustetaan laskuri //jostain syystä olen tottunut käyttämään foreachia forin sijaan. Eli tässä käydään tiedoston jokainen rivi yksitellen läpi. foreach ($alkuper as $rivi){ if ($i<>$rivinro) fwrite($tuleva,$rivi); //jos laskuri ja annettu rivinro eivät ole samoja kirjoitetaan vanha rivi temp tiedostoon. $i++;//kasvatetaan laskuria yhdellä. } fclose($tuleva); //suljetaan temp tiedosto unlink($tiedosto);//poistetaan alkuperäien tiedosto rename("temp",$tiedosto); //nimetaan temp tiedosto uudelleen saman nimiseksi kuin alkuperäinen. ?>
Jotenki tästä ketjusta tulee ihan mieleen The Spider of Doom: http://www.thedailywtf.com/forums/65974/
juu, ei ala vieläkää aukeemaa miten ton pitäs toimia, vaikka muuten on kyllä vienyt eteenpäin koko settiä.
http://lucidity.kapsi.fi/camelus/admin/laheta.php
nyt näyttää tuo uutisten näyttö tältä, samassa pitäisi olla se uutisten poisto. eli näytä.php:
<?php //luetaan viestit taulukkoon $viestit = file("viestit.txt"); //käännetään taulukko, jolloin uusimmat viestit tulevat ylimmiksi $viestit = array_reverse($viestit); //viestien määrä on suoraan taulukon rivien määrä $viestimaara = count($viestit); //käydään jokainen viesti läpi for ($i = 0; $i < $viestimaara; $i++) { //$viestit[$i] on merkkijono, joka sisältää viestin $i tiedot //pystyviivoilla erotettuna; jaetaan viestit $tiedot-taulukkoon $tiedot = explode("|", $viestit[$i], 3); //erotellaan tiedot omiin muuttujiinsa $nimi = $tiedot[0]; $aika = $tiedot[1]; $viesti = $tiedot[2]; //tulostetaan viesti echo " ". date("d.m.Y", $aika) . " <b>$nimi</b><br>"; echo "<br>$viesti <a href=poista.php> [Poista]</a><hr>"; } ?>
ja sitten jotenkin pitäisi saada tuo muutettua siten että sieltä lähtee vaikka kolmas rivi pois kun tuota poista.php linkkiä painaa. eli sitä en oikein hoksaa että miten tuonne poista.php :hen saa laitettua sen rivin "muutoksen" laitettua. poista.php jossa on toi numero tuolla vielä 3...
<?php $tiedosto = file("viestit.txt"); //luetaan tiedosto $tiedosto2 = fopen("viestit.txt", "w"); //kirjoitettava tiedosto, käytetään samaa tiedostoa, ja käytetään "w" parametriä, joka tyhjentää tiedoston $poistettava = 3; //poistetaan rivi neljä, jos sellainen on for ($i = 0; $i < count($tiedosto); $i++) //käydään kaikki rivit läpi { if($i != $poistettava) //jos ei olla menossa samassa rivissä kuin mikä poistetaan, kirjoitetaan se takaisin tiedostoon fwrite($tiedosto2, $tiedosto[$i]); } //suljetaan tiedosto fclose($tiedosto2); header("Location: nayta.php"); ?>
ja tämänhän olen ottanut tuolta ylempää...
oisko jollain vinkkiä miten tuon saisi toimimaan siten kun pitää?
muuta näytä.php:sta poistokohta seuraavaksi
echo "<br>".$viesti."<a href=\"poista.php&rivi=".($viestimaara-$i-1)."\"> [Poista]</a><hr>";
ja sitten poista.php:sta
$poistettava = $_GET['rivi'];
no nyt ollaan askeleen lähempänä totuutta.. mut errorin heittää:
The requested URL /camelus/admin/poista.php&rivi=3 was not found on this server.
eli ilmeisesti tossa poistettavan rivin määrityksessä jotain pientä vielä on..
anteeks
korvaappas tuo & kysymysmerkillä
echo "<br>".$viesti."<a href=\"poista.php?rivi=".($viestimaara-$i-1)."\"> [Poista]</a><hr>";
no niin. ei tullu erroria mut se poistaa aina ensimmäisen rivin.. näin lähellä en oo vielä ollukkaa toimivaa koodia :)
mut mikähän tossa on..
edit:
KOMENTO TAKAS! tää toimii!! huhhuh... kiitos kumarrus!!
Aihe on jo aika vanha, joten et voi enää vastata siihen.