Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Luvun lisääminen ja vähentäminen yhdellä

Pallo [03.02.2008 00:30:12]

#

Sivullani on kaksi linkkiä, lisää ja vähennä.
Kuinka olisi järkevintä toteuttaa systeemi, joka katsoisi ensin,
mikä luku luku.txt tiedostossa on, ja esim. lisää linkkiä painamalla
skripti kirjoittaisi tiedoston luvun päälle seuraavan luvun (luku+1.
Vähennä linkkiä painamalla taas toisinpäin.
Eli kuinka tämmöinen on yksinkertaisinta toteuttaa?

tsuriga [03.02.2008 00:39:58]

#

// osoiterivillä esim. sivu.php?suunta=1 tai sivu.php?suunta=-1
if ( asetettu( suunta ) ):
    luku = lue_tiedosto( 'luku.txt' )
    kirjoita_tiedosto( 'luku.txt', luku + suunta )
endif;

https://www.php.net/isset
https://www.php.net/file_get_contents
https://www.php.net/file_put_contents

kayttaja-2499 [03.02.2008 02:50:24]

#

Ihan mielenkiinnosta kysyn, että voiko tiedostossa oleva luku päivittyä väärin, jos sitä päivitellään useammalla samanaikaisella pyynnöllä?

Sami [03.02.2008 03:05:28]

#

No voihan sen ajatella mitä käy:

Olkoon tiedostossa alussa luku 17 ja kaksi yrittää kasvattaa sitä yhtä aikaa.

Kävijä A lukee tiedostosta arvon 17.
Kävijä A kasvattaa arvoaan yhdellä, arvo on nyt 18.
Kävijä B lukee tiedostosta arvon 17.
Kävijä A tulostaa tiedostoon arvon 18.
Kävijä B kasvattaa arvoaan yhdellä, arvo on nyt 18.
Kävijä B tulostaa tiedostoon arvon 18.

Lopullinen arvo tiedostossa on siis 18, eli ei se nyt ihan oikein mennyt.

Pallo [03.02.2008 14:21:05]

#

Kiitoksia, sain toimimaan.
Jos jotain kiinnostaa niin tässä valmis skripti:

<?php

$add = $_GET['suunta'];
if ($add == "plus") {
   $numero = file_get_contents("luku.txt");
   $haha = $numero + 1;
   $fp = fopen("luku.txt", w);
fwrite($fp, $haha);
fclose($fp);
}
?>

Olga [03.02.2008 18:30:33]

#

Noi fopen, fwrite ja fclose -funktiothan voit korvata tuolla tsurigankin mainitsemalla file_put_contents-funktiolla.

tsuriga [03.02.2008 23:20:08]

#

Tuo Pallon yllämainittu ei kata luvun muuttamisen kuin toiseen suuntaan, tässä PHP-versio pseudostani:

<?php
$filename = 'luku.txt';

$figure = file_get_contents( $filename );
if ( isset( $_GET[ 'v' ] ) ):
    $value = 0;

    switch ( $_GET[ 'v' ] ):
        case 1:
        case -1:
            $value = $_GET[ 'v' ];
    endswitch;

    if ( $value !== 0 ):
        file_put_contents( $filename, $figure += $value );
    endif;
endif;

?>
<p>Luku: <?php echo $figure; ?></p>
<p>
 <a href="<?php echo $_SERVER[ 'SCRIPT_NAME' ]; ?>?v=1">Nosta</a>
  -
 <a href="<?php echo $_SERVER[ 'SCRIPT_NAME' ]; ?>?v=-1">Laske</a>
</p>

En kylläkään itse juurikaan koskaan samalla muuta arvoa kun käytän sitä parametrina (tuo += koodissa).

Vastaus

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

Tietoa sivustosta