Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Lisäys tiedoston alkuun

Sivun loppuun

TETRIS [08.07.2003 19:33:11]

#

Osaisitteko auttaa kun mulla on seuraavanlainen koodi :

<form method="post" action="lisaa.php">
Sivun URL : <input type="text" name="url" size="50" value="http://" style="background-color: #FFFFFF; font-family: Verdana; color: #000000; font-size: 8pt; border: 1 solid #000000"><br>
Sivun nimi : <input type="text" name="nimi" size="31" value="" style="background-color: #FFFFFF; font-family: Verdana; color: #000000; font-size: 8pt; border: 1 solid #000000"><br>
Sivun kuvaus : <input type="text" name="kuvaus" size="45" value="" style="background-color: #FFFFFF; font-family: Verdana; color: #000000; font-size: 8pt; border: 1 solid #000000"><br>
<input type="submit" value="Lisää" style="background-color: #FFFFFF; font-family: Verdana; color: #000000; font-size: 8pt; border: 1 solid #000000">
</form>
<?php
if (isset($url))
{
$tiedosto = "linkit.txt";
$fp = fopen($tiedosto, 'a+');
$data = "${_POST["url"]}|${_POST["nimi"]}|${_POST["kuvaus"]}\n";
fwrite ($fp, $data);
print "Linkki lisätty.<br>\n";
}
?>

ja toi tartteis sitten saada tehtyä niin että se lisää ton linkin tiedoston alkuun eikä loppuun niiku se nyt tekee. Löysin ohjelmointiputkasta kyllä samaa aihetta käsittelevän jutun mutta en onnistunut solveltamaan sitä tähän sopivaksi.

samii [08.07.2003 19:46:30]

#

Itsekin samaa mietiskelin tuossa vähän aikaa sitten ja päätin tulostaa viimeisen rivin ensiksi..
eli tiedot kirjoittuu tiedostoon

Rivi1
Rivi2
Rivi3
mutta tulostuu

Rivi3
Rivi2
Rivi1
<?php
$fp = file("linkit.txt");
$fp = array_reverse($fp);
foreach( $fp as $linkit )
{
print "$linkit";
}
?>
Ja tuo sinne sivulle missä haluat linkkisi tulostaa.
Jos tuosta nyt mitään apua oli..

trinit [09.07.2003 17:26:52]

#

Ottakaa ensin tiedoston sisältö taulukkoon muistiin file() funktiolla, avaatte tiedoston "w" muotoon jolloin se tyhjenee samalla, kirjoitatte ensin uuden rivin tiedostoon ja sen jälkeen vanhat tiedot taulukosta sen rivin perään.

Ikäänkuin tähän tapaan:

<?php
    if (isset($url))
    {
        $tiedosto = "linkit.txt";
        $oldfile = file($tiedosto);
        $data = "${_POST["url"]}|${_POST["nimi"]}|${_POST["kuvaus"]}\n";

        $fp = fopen($tiedosto, "w");
            fwrite ($fp, $data);
            for ($i = 0; $i < count($oldfile); $i++)
            {
                fwrite($fp, $oldfile[$i]);
            }
        fclose($fp);

        echo "Linkki lisätty.<br>\n";
    }
?>

odys [09.07.2003 17:58:54]

#

Tuo trinitin esimerkki on aika hidas..

<?php
    $tiedosto = "linkit.txt";
    $olddata = file($tiedosto);
    $newdata = "${_POST["url"]}|${_POST["nimi"]}|${_POST["kuvaus"]}\n";

    $fp = fopen($tiedosto), "w") or die("Ei voitu avata tiedostoa!");
    fwrite ($fp, $newdata);
    fwrite ($fp, implode("", $olddata));
    fclose($fp);
    echo "Linkki lisätty.<br>\n";
?>

Näin säästytään turhan for loopin käyttämiseltä ja saadaa skripti nopeammaksi. :) (Eron huomaa suurissa tiedostoissa)

samii [09.07.2003 22:24:55]

#

No hmm. Asiaa sivuten miten olis järkevin poistaa joku rivi ja/tai muokata jotain riviä. Siis, että kaikille ei tulostu ne muokkaa / poista kohdat vaan olisi esimerkiksi vaikka admin.php sivu josta ylläpitäjä voi sitten niitä poistella tai niihin vastata..? Ja miten silloin kannattaa tulostus hoitaa? Oon selaillut ja testaillut ja sain jonkun jopa toimimaan, mutta se oli semmoinen missä lomakekenttään kirjoitettiin rivi mikä poistetaan, joten ei siitä sen enempää. :D

odys [10.07.2003 01:58:28]

#

Laita se admin tiedosto htaccessilla suojatuksi (Jos et osaa lue putkan opas)

Sitten yhen rivin poisto ois helpointa esim:

<?php
   $data = file("tiedosto.txt");

   // Poistetaan rivinumero 30
   unset($data[29]);

   // Muutetaan rivinumero 50
   $data[49] = "Muutettu teksti";
?>

Sitten tietysti tallennat taas datan tiedostoon takaisin..
Rivi 1 = 0
Rivi 2 = 1 jne..

NiKC [10.07.2003 09:41:59]

#

Nopeampaa on tehdä lisäys aina tiedoston loppuun ja hoitaa tulostus käänteisesti. Tosin jos lisäyksiä on harvoin ja tiedosto ei ole kovin suuri on melko sama miten toimii. Kuitenkin koko tiedoston uudelleenkirjoitus ei ole suositeltavaa jos tiedonmäärä on suuri. (mho)

samii [10.07.2003 11:29:40]

#

Juu htaccessin osaan kyllä. Ja siis tuon koodin minkä(jope) näytit niin osaan :P Mutta siis niinku vaikka käyttäjille rivit näkyisivät tällä tavalla:

samii | email | www | 10.7.2003
moimoi

juu ja tuon saan kyllä. Mutta sitten admin osassa viestit näkyisi vaikka:

samii | email | www | 10.7.2003 | poista |
moimoi

Niin, että miten tuo olisi järkevintä toteuttaa? Niin kuin sanoin niin oon saanut poistettua rivejä kirjoittamalla lomakekenttään rivin numero ja painamalla submittia. Mutta tuo ei ole järkevä tapa kun pitää laskea rivit.. Ja tuota mitä sanoin niin en ole ainakaan vielä itse hiffannut.. Toivottavasti ymmärsitte :D


Sivun alkuun

Vastaus

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

Tietoa sivustosta