Kai aš pradėjau programuoti tiek programinio kodo logiką, tiek atvaizdavimą dėjau į vieną vietą. Tai tikrai yra blogai, nes skaitomumas stipriai sumažėja. Šiektiek paaugus pradėjau naudoti paprastą šablonų sistemą phemplate. Viskas gerai, kol neprireikia šiek tiek paprastos logikos. Tada prade naudoti įvairiausius apgaulės būdus, kurie tikrai nėra patogūs. Žinoma galima pasirinkti šablonų sistemą kuri turi savyje logikos, kad ir smarty. Bet visuomet susiduriama su tokių šablonų trūkumais, nes atsiranda tikrinimo variantai, kurių pati sistema nepalaiko. Tada pagalvoji, kad geriausia šablonų sistema yra pati programavimo kalba. Tereikia atskirti failais logiką bei atvaizdavimą ir štai mes turime galingą šablonų sistemą. Bet vis dėl to jei esate pririštas prie smarty galima pasidžiaugti, kad galima kurti papildomas galimybes pačiam.
Visai neseniai man reikėjo susirasti paprastą sprendimą php komandai in_array. Smarty to nepalaiko. Pasinaudojus “insert” galimybę sukuriamas naujas pluginas.
function smarty_insert_code_in_array($params, &$smarty)
{
$bResult = false;
if (isset($params['value']) && isset($params['array']) && is_array($params['array']))
{
if (in_array($params['value'], $params['array'])) {
$bResult = true;
}
}
if (!isset($params['var'])) {
$outvar = "rez_inarray";
}
else {
$outvar = $params['var'];
}
$smarty->assign($outvar, $bResult);
}
Šį failą įrašome tarkim čia smarty/plugins/insert.code_in_array.php
O panaudoti gan paprasta:
{insert name="code_in_array" array=$manomasyvas value=$ieskomareiksme var="atsakymas"}
ir turėsime mes kintamąjį $atsakymas kurį jau galėsime panaudoti.
Kai aš pradėjau programuoti tiek programinio kodo logiką, tiek atvaizdavimą dėjau į vieną vietą. Tai tikrai yra blogai, nes skaitomumas stipriai sumažėja. Šiektiek paaugus pradėjau naudoti paprastą šablonų sistemą phemplate. Viskas gerai, kol neprireikia šiek tiek paprastos logikos. Tada prade naudoti įvairiausius apgaulės būdus, kurie tikrai nėra patogūs. Žinoma galima pasirinkti šablonų sistemą kuri turi savyje logikos, kad ir smarty. Bet visuomet susiduriama su tokių šablonų trūkumais, nes atsiranda tikrinimo variantai, kurių pati sistema nepalaiko. Tada pagalvoji, kad geriausia šablonų sistema yra pati programavimo kalba. Tereikia atskirti failais logiką bei atvaizdavimą ir štai mes turime galingą šablonų sistemą. Bet vis dėl to jei esate pririštas prie smarty galima pasidžiaugti, kad galima kurti papildomas galimybes pačiam.
Visai neseniai man reikėjo susirasti paprastą sprendimą php komandai in_array. Smarty to nepalaiko. Pasinaudojus "insert" galimybę
Reikia patikrinti asmens kodo teisingumą? Manau šis dalykas jums pravers. Skanaus.
Algoritmas lietuviško asmens kodo (nuo 65 puslapio).
PHP, JavaScript versija pateikti nuo manęs, kiti buvo parodyti kaip komenarai senojoje blogo versijoje.
PHP
PHP - Copy Code
1 <?
2 /**
3 * Tikrina ar asmens kodas
4 *
5 * @param string $s
6 * @return bool
7 */
8
9 function ar_asmens_kodas($s) {
10 if (!is_numeric($s) || strlen($s)!=11) {
11 return false;
12 }
13 $d=0; $e=0; $b=1; $c=3;
14 for ($i=0;$i<10;$i++) {
15 $a=$s[$i];
16 $d=$d+($b*$a);
17 $e=$e+($c*$a);
18 $b++; if ($b==10) $b=1;
19 $c++; if ($c==10) $c=1;
20 }
21 $d=$d % 11;
22 $e=$e % 11;
23 if ($d==10) {
24 $i = ($e == 10) ? 0 : $e;
25 } else {
26 $i = $d;
27 }
28 return ($s[10]==$i) ? true : false;
29 }
30
31 /**
32 * Butinai reikia paduotu stringa siam scriptui atveju, pvz
33 * ar_asmens_kodas('38011254123');
34 */
35 ?>
Javscript
Javascript – Copy Code
1 function tikrinti_akoda(kodas) {
2 var i,a,b,c,d,e;
3 var s = new String(kodas);
4 d=0;
5 e=0;
6 b=1;
7 c=3;
8 for (i=0;i<10;i++) {
9 a=s.charAt(i);
10 d=d+(b*a);
11 e=e+(c*a);
12 b=b+1;
13 if (b==10)
14 b=1;
15 c=c+1;
16 if (c==10)
17 c=1;
18 }
19 d=d % 11;
20 e=e % 11;
21 if (d==10) {
22 if (e==10)
23 i=0;
24 else
25 i=e;
26 } else
27 i=d;
28 if (s.charAt(10)==i)
29 return true;
30 else
31 return false;
32 }
Perl
http://search.cpan.org/~kudarasp/Asmens-Kodas-0.02/lib/Asmens/Kodas.pm
MS SQL
Copy Code
1 CREATE PROCEDURE asmensKodoTikrinimasSP
2 ( @AsmensKodas bigint
3 )
4 AS
5 BEGIN
6 DECLARE @L INTEGER,
7 @M1 INTEGER,
8 @M2 INTEGER,
9 @M3 INTEGER,
10 @M4 INTEGER,
11 @D1 INTEGER,
12 @D2 INTEGER,
13 @R1 INTEGER,
14 @R2 INTEGER,
15 @R3 INTEGER,
16 @K INTEGER,
17 @ATS BIT
18
19 IF @AsmensKodas > 10000000000
20 BEGIN
21 IF @AsmensKodas < 69999999999
22 BEGIN
23 SET @L = @AsmensKodas / 10000000000
24 SET @AsmensKodas = @AsmensKodas - (10000000000 * @L)
25 SET @M1 = @AsmensKodas / 1000000000
26 SET @AsmensKodas = @AsmensKodas % 1000000000
27 SET @M2 = @AsmensKodas / 100000000
28 SET @AsmensKodas = @AsmensKodas % 100000000
29 SET @M3 = @AsmensKodas / 10000000
30 SET @AsmensKodas = @AsmensKodas % 10000000
31 SET @M4 = @AsmensKodas / 1000000
32 SET @AsmensKodas = @AsmensKodas % 1000000
33 SET @D1 = @AsmensKodas / 100000
34 SET @AsmensKodas = @AsmensKodas % 100000
35 SET @D2 = @AsmensKodas / 10000
36 SET @AsmensKodas = @AsmensKodas % 10000
37 SET @R1 = @AsmensKodas / 1000
38 SET @AsmensKodas = @AsmensKodas % 1000
39 SET @R2 = @AsmensKodas / 100
40 SET @AsmensKodas = @AsmensKodas % 100
41 SET @R3 = @AsmensKodas / 10
42 SET @AsmensKodas = @AsmensKodas % 10
43 SET @K = @AsmensKodas
44
45 DECLARE @Suma INTEGER, @Liekana INTEGER
46 SET @Suma = @L * 1 + @M1 * 2 + @M2 * 3 + @M3 * 4 + @M4 * 5 +
47 @D1 * 6 + @D2 * 7 + @R1 * 8 + @R2 * 9 + @R3 * 1
48 SET @Liekana = @Suma % 11
49 IF @Liekana <> 10
50 BEGIN
51 IF @Liekana = @K
52 SET @ATS = 1
53 ELSE
54 SET @ATS = 0
55 END
56 ELSE
57 BEGIN
58 SET @Suma = @L * 3 + @M1 * 4 + @M2 * 5 + @M3 * 6 + @M4 * 7 +
59 @D1 * 8 + @D2 * 9 + @R1 * 1 + @R2 * 2 + @R3 * 3
60 SET @Liekana = @Suma % 11
61 IF @Liekana <> 10
62 BEGIN
63 IF @Liekana = @K
64 SET @ATS = 1
65 ELSE
66 SET @ATS = 0
67 END
68 ELSE
69 BEGIN
70 SET @Liekana = 0
71 IF @Liekana = @K
72 SET @ATS = 1
73 ELSE
74 SET @ATS = 0
75 END
76 END
77 END
78 ELSE
79 SET @ATS = 0
80 END
81 ELSE
82 SET @ATS = 0
83
84 SELECT @ATS
Kita
Na daugiau :) Dos versija
Reikia patikrinti asmens kodo teisingumą? Manau šis dalykas jums pravers. Skanaus.
Algoritmas lietuviško asmens kodo (nuo 65 puslapio).
PHP, JavaScript versija pateikti nuo manęs, kiti buvo parodyti kaip komenarai senojoje blogo versijoje.
PHP
PHP - Copy Code
1 <?
2 /**
3 * Tikrina ar asmens kodas
4 *
5 * @param string $s
6 * @return bool
7 */
8
9 function ar_asmens_kodas($s) {
10 if (!is_numeric($s) || strlen($s)!=11) {
11 return false;
12 }
13 $d=0; $e=0; $b=1; $c=3;
14 for ($i=0;$i<10;$i++) {
15 $a=$s[$i];
16 $d=$d+($b*$a);
17 $e=$e+($c*$a);
18 $b++; if ($b==10) $b=1;
19 $c++; if ($c==10) $c=1;
20 }
21 $d=$d % 11;
22 $e=$e % 11;
23 if ($d==10) {
24 $i = ($e == 10) ? 0 : $e;
25 } else {
26 $i = $d;
27 }
28 return ($s[10]==$i) ? true : false;
29 }
30
31 /**
32 * Butinai reikia paduotu stringa siam scriptui atveju, pvz
33