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?
// 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
Ihan mielenkiinnosta kysyn, että voiko tiedostossa oleva luku päivittyä väärin, jos sitä päivitellään useammalla samanaikaisella pyynnöllä?
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.
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); } ?>
Noi fopen, fwrite ja fclose -funktiothan voit korvata tuolla tsurigankin mainitsemalla file_put_contents-funktiolla.
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).
Aihe on jo aika vanha, joten et voi enää vastata siihen.