PHP.ee
 php.ee   linuxator.com   whee 
07.02.12 / 23:20
  Artiklid
  » Algajaile
  » Andmebaasid
  » Varia
  » Graafika
  » Advanced
Logi sisse:
< nimi
< pass
Unustasid passi?
Kas eelistad võimalusel PHP koodi objektorienteeritult kirjutada?
 Jah, see teeb töö lihtsamaks
 Jah, see on lihtsalt lahe
 Nii ja naa, ei tunne erilist võitu
 Ei, mõttetu ajakulu
 Ei oska objektorienteeritult progeda
Tulemused
Liitu listiga!
Telli PHP uudiskiri
Nimi:
Email
Tekstikaunterit lahkamas
Kilukarp

Kõigepealt algväärtustab mõned muutujad - neid läheb hiljem vaja.

Kaunteri failinimi
NB! tühi fail õigusega sinna kirjutada peab juba tehtud olema

$failinimi = "counter.txt";

Stringi pikkus - seda läheb vaja faili kirjutamisel

$string_len = 14;

Kaunteri algväärtus - kui muud ei leita, läheb see käiku

$my_counter = 1;

Avab faili lugemiseks ja kirjutamiseks - "r+"
Kui faili avamine õnnestub, saab $fp nullist suurema väärtuse

$fp = fopen( $failinimi, 'r+');

Kontrollib faili avamist, ühtlasi proovib faili lukustada

if ( $fp!=0 && flock($fp,2)) {

Kui siit jätkab, siis eelnevad tegevused õnnestusid
Viib failist lugemise pointeri lõpust stringi pikkuse jagu tagasi.

$kala = fseek( $fp, -$string_len, SEEK_END);
if ( $kala == -1 ) {

Kui $kala sai väärtuseks -1, siis ei olnud failis midagi ja tegevus jätkub siit
Annab kaunteri reale väärtuse YYYYmmdd:00001
YYYY - aasta 4 kohaline number
mm - kuu 2 kohaline number
dd - päeva 2 kohaline number

$my_string = date( 'Ymd').":00001";

Kirjutab saadud stringi faili ja lõpetab

fwrite( $fp, $my_string, $string_len);
} else {

Kui $kala sai väärtuseks midagi muud kui -1, siis tegevus jätkub siit
Loeb failist rea

$my_string = fread( $fp, $string_len );

Teeb rea pooleks - eraldajaks on koolon ":"

$my_array = explode( ':', $my_string);

Võrdleb saadud esimest poolt tänase kuupäevaga

if ( $my_array[0] == date( 'Ymd')) {

Kui on sama, siis tegevus jätkub siit
Liidab 2-le poolele ühe juurde

$my_array[1] += 1;

Et kaunterit ka hiljem kasutada saaks, paneb tulemuse muutujasse

$my_counter = $my_array[1];

Teeb valmis faili kirjutamiseks mõeldud stringi
NB! teine pool on arvestatud 5-e kohalise numbrina

$my_string = $my_array[0].':'.sprintf('%05d', $my_array[1]);

Viib failist lugemise pointeri lõpust stringi pikkuse jagu tagasi, kirjutab saadud stringi faili ja lõpetab

$kala = fseek( $fp, -$string_len, SEEK_END);
$kala = fwrite( $fp, $my_string, $string_len);
} else {

Kui eelnevalt pooleks jagatud string ei olnud sama kui tänane kuupäev, siis tegevus jätkub siit
Tekitab uue rea, pannes kokku kuupäeva ja lisades numbri 1

$my_string = "\n".date( 'Ymd').":00001";

Viib failist lugemise pointeri lõpp, kirjutab saadud stringi faili ja lõpetab
NB! string on ühe märgi jagu suurem, sest alguses on reavahetus

$kala = fseek( $fp, 0, SEEK_END);
$kala = fwrite( $fp, $my_string, $string_len+ 1);
}
}

Kui faili avamine eelnevalt õnnestus, siis jõutakse kunagi ka siia.
Sulgeb faili ja lõpetab

fclose($fp);
}

Kasutab ära saadud tulemust

echo "Sa oled täna juba $my_counter külastaja";

"njah aga kuda tööle panen"

Nagu ikka php-faili võib selle lisada igasse teise faili, näiteks algusesse.
Näiteks annad sellele nime mycounter.inc ja koodis kasutad

include_once('mycounter.inc');


---8<---8<---8<---

PHP kood:


 
<?php
//Kaunteri failinimi
$failinimi "counter.txt";
// Stringi pikkus - seda läheb vaja faili kirjutamisel
$string_len 14;
// Kaunteri algväärtus - kui muud ei leita, läheb see käiku
$my_counter 1;
$fp fopen$failinimi'r+');
if ( 
$fp!=&& flock($fp,2)) {
$kala fseek$fp, -$string_lenSEEK_END);
if ( 
$kala == -) {
$my_string date'Ymd').":00001";
fwrite$fp$my_string$string_len);
} else {
$my_string fread$fp$string_len );
$my_array explode':'$my_string);
if ( 
$my_array[0] == date'Ymd')) {
$my_array[1] += 1;
$my_counter $my_array[1];
$my_string $my_array[0].':'.sprintf('%05d'$my_array[1]);
$kala fseek$fp, -$string_lenSEEK_END);
$kala fwrite$fp$my_string$string_len);
} else {
$my_string "\n".date'Ymd').":00001";
$kala fseek$fp0SEEK_END); 
$kala fwrite$fp$my_string$string_len1);

}
fclose($fp);
}
// see viska hiljem välja:
echo "Sa oled täna juba $my_counter külastaja";
// teises failis kasuta:
//        include_once('mycounter.inc');
?>



Artikli kommentaarid

O