Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Niksin / Vitsin arpoja

olliol [15.07.2004 21:23:53]

#

Tämä koodi siis arpoo kansion, katsoo monta niksi tiedostoa siellä on ja arpoo niistä vielä yhden ja laittaa näytille. Samalla se lisää sen myös päivän niksi tiedostoon ja päivämäärän tiedostoon, jonka perusteella se tietää onko sivuilla käyty jo tänään. Jos on se ottaa niksin suoraan tiedostosta.

Ei tästä varmaan kokeneille hyötyä ole, eikä pakosti koko koodi ole parhaiten ohjelmoitu, mutta juuri tämmöistä koodivinkkiä itse etsin aloittaessani PHP:tä. Kyllä aloittelijat tästä jotain irti saa.

<html>
<head>
    <title>Päivän niksi</title>
</head>

<body bgcolor="#FFFF66">

    <b>Päivän niksi:</b><br>

    <?php

    //7.7.2004
    //Kun sivu ladataan, se ottaa paivanniksi.txt tiedostosta paivanniksin, jos pmaara.txt tiedoston paivamaara on
    //sama, kun nykyinen. Jos päivämäärät eivät täsmää se arpoo uuden niksin ja lisää sen paivanniksi.txt tiedostoon
    //ja muutta pmaara.txt tiedostoon oikean päivämäärän.


    $pniksi = "pmaara.txt"; //Tiedosto, jossa on viimeisimmän päivän niksin päivämäärä.
    $avattava = fopen( $pniksi, "r") or die("Tiedoston avaus ei onnistu!");

    while ( ! feof( $avattava ))

    {
        $pmaara = fgets( $avattava, 1024 );//Otetaan yksi rivi tekstiä (päivämäärä).


    }



    $tanaan = date("j/n/Y", time());

    if ($tanaan == $pmaara) // Jos tiedoston päivämäärä on sama, kuin nykyinen. (Päivän niksi on ladattu tänään).

    {
        $pniksi = "paivanniksi.txt";
        $avattava = fopen( $pniksi, "r") or die("Tiedoston avaus ei onnistu!");

        while ( ! feof( $avattava )) //Otetaan aina yksi rivi kerralla, kunen tiedosto loppuu.

        {
        $niksi = fgets( $avattava, 1024 ); //Otetaan yksi rivi.
        print "$niksi"; // Tulostetaan tiedostossa ollut niksi.
        }
    }



    if ($tanaan != $pmaara) //Jos nykyinen päivämäärä ja tiedostossa oleva ei täsmää (sivuilla ei ole käyty tänään).
    {


         $arvo = rand(1, 6); // Arvotaan kansio

         if ($arvo ==1)
        {
            $kansio = "koti";
        }

        if ($arvo ==2)
        {
            $kansio = "muut";
        }

        if ($arvo ==3)
        {
            $kansio = "era";
        }

        if ($arvo ==4)
        {
            $kansio = "liikenne";
        }

        if ($arvo ==5)
        {
            $kansio = "tietokoneet";
        }

        if ($arvo ==6)
        {
            $kansio = "ihmissuhteet";
        }



        for ( $niksilu = 1; $niksilu<100; $niksilu++ ) //Tarkastetaan monta niksiä kansiossa on.
        {

            if ( ! file_exists("arkisto/$kansio/niksi$niksilu".".txt") )

            {
                break; //Kun tiedostoa ei löydy lopetetaan silmukka.
            }
        }


        $niksilu = $niksilu -1; //Kerta silmukka kiertää liian pitkään se antaa yhden niksin liikaa. Se vähennetään.


        $monesko = rand(1, $niksilu); //Arvotaan kansioissa olevista nikseistä yksi (vain niksin perässä oleva numero).

        $lisattava = "arkisto/$kansio/niksi$monesko".".txt"; //Niksin polku joka arvottiin.

                $avattava = fopen( $lisattava, "r") or die("Tiedoston avaus ei onnistu!");

        while ( ! feof( $avattava ))

        {
            $paivanniksi = fgets( $avattava, 1024 ); //Otetaan avattavasta tiedostosta yksi rivi.
            print "$paivanniksi"; //Kirjoitetaan se rivi näytille.
            $paivanite ="$paivanite$paivanniksi"; //Lisätään se lopuksi paivanite muuttujaan, jotta saadaan koko
                                                  //niksi yhteen muuttujaan.
        }


        $avattava = "pmaara.txt"; //Päivämäärä tiedosto.
        $niksita = fopen( "$avattava", "w");
        fwrite ( $niksita, "$tanaan"); //Kirjoitetaan nykyinen päivämäärä tiedostoon.
        fclose ( $niksita); // Suljetaan tiedosto.


        $avattava = "paivanniksi.txt"; //Päivän niksin tiedosto.
        $niksita = fopen( "$avattava", "w");
        fwrite ( $niksita, "$paivanite"); //Kirjoitetaan päivän niksi tiedostoon.
        fclose ( $niksita); //Suljetaan tiedosto.

    }

    ?>

</body>
</html>

olliol [15.07.2004 21:24:42]

#

Kommenttia, kommenttia... Haukut otetaan vastaan...

tsuriga [16.07.2004 02:13:46]

#

Parannusehdotuksia:
-HTML voi jättää pois
-Sisentelyt oudot. Vähä turhan tilavan näkönen.
-Muuttujien ympärille ei hipsuja.
-Jos ehtolauseen jälkeen on vain yksi rivi siihen ei tartte {}-merkkejä
-$pniksi ja $avattava (jälkimmäinen lopussa) on sama, voisi käyttää yhtä muuttujaa
-$niksilu = $niksilu -1 hoituu näinkin: $niksilu-=1;
-if ($tanaan != $pmaara) voi korvata elsellä
-kansion arvonnan voi tiivistää kahteen riviin (tai jopa yhteen).
Kaksi riviä:

$kansiot=array('koti','muut','era','liikenne','tietokoneet','ihmissuhteet');
$kansio=$kansiot[rand(0,count($kansiot)-1)];

One-liner (testieni mukaan tämä on nopeampi jos $kansiot-taulua ei käytetä useasti):

$kansio=trim(substr('koti        muut        era         liikenne    tietokoneet ihmissuhteet',rand(0,5)*12,12));

Vastaus

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

Tietoa sivustosta