Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Viitenumeron muodostaminen

Sivun loppuun

wil [05.03.2004 16:18:26]

#

Koodipätkä tekee viitenumeron esim laskun numerosta
$viite = viitenumero("12345"); // 123453
Viitenumero muodostetaan seuraavalla tavalla:
- Tarkistettavan viitteen numerot kerrotaan oikealta vasemmalle painoarvoilla 7,3,1,7,3,1,...
- Kertotulot lasketaan yhteen ja summa vähennetään seuraavasta täydestä kymmenestä.
- Erotus on tarkiste, joka tulostetaan viitteen viimeiseksi numeroksi.
Huom. Viitenumeron sallittu enimmäispituus on 19 + 1 (tarkiste)

function viitenumero($laskunro){
	if(strlen($laskunro) > 19) return 0;
	$kertoimet = array('7','3','1','7', '3','1','7','3','1','7','3','1','7','3','1','7','3','1','7');
	$tarkiste = 0;
	$j = 0;
	$tmp = $laskunro;
	settype($tmp, "string");
	for($i=strlen($tmp)-1; $i>-1; $i--){
		$tarkiste = $tarkiste + $kertoimet[$j++] * intval(substr($tmp, $i, 1));
 	}
 	$tarkiste = ceil($tarkiste / 10) * 10 - $tarkiste;
 	$viite = "$laskunro$tarkiste";
	return $viite;

}

T.M. [05.03.2004 22:58:46]

#

Turhaa tehä uutta muuttujaa tuosta $laskunro:sta ($tmp = $laskunro;). On myös turhaa käyttää settype() funktiota sen muuttamiseksi stringiksi, pelkät lainausmerkit riittää.
myös intval() on äärettömän turha. (int)"luku" toimii myös.
2 viimeistä riviä funktion lopusta voisi muuttaa yhdeksi riviksi.
PHP tagit vois lisätä..

No huh, Olipas negatiivista palautetta :D
Älä kuitenkaan pahastu :P

leftover [06.03.2004 08:59:52]

#

Lisäksi moduloimalla i:n arvoa saataisiin selville käytetäänkö kerrointa 7, 3 vai 1 jolloin myös array on turha. Lisäksi kääntämällä merkkijonon ympäri strrev:llä, ei tarvitse käyttää substr vaan $merkkijono{$i} toimii kiltisti (jos for-loopin i=0 ja kasvaa). Mutta hyvä ja tarpeellinen, olisi säästänyt minulta tuntien työn (lähinnä viitenumeron laskemiskaavan löytämisongelma) jos tämä olisi ollut pohjana.

PS: Myös ryhmittely olisi hyvä saada mukaan, ei tarvitsisi pähkäillä missä kohden on menossa kun viite on 1948729234246 :)

ZcMander [06.03.2004 09:14:47]

#

Menit sitten kuhasta kopsaamaan?

ajv [06.03.2004 09:45:17]

#

Ihan kiva koodi, mutta useammalle varmaan ihan turha. Ellei sitten koodaa jonllekkin pankille sivuja.

OFFTOPIC:

lainaus:

Menit sitten kuhasta kopsaamaan?

Miksi heti ekana pitää syyttää kopioinnista? Et sitten vaivautunu kattoon kuka tän oli kuhaan postannu? Sama juttu tais olla tossa Juhis^:n uploadi-vinkin kanssa. ( https://www.ohjelmointiputka.net/koodivinkit/24229-php-multi-upload )

Aku2 [06.03.2004 12:13:59]

#

>Ihan kiva koodi, mutta useammalle varmaan ihan turha. Ellei sitten koodaa jonllekkin pankille sivuja.

Ihan hyvä vinkki mm. niille, jotka kehittelee esim. webbikauppaa, joka generoi viitenumeron laskuun suoraan.
Tai vaikka webbipohjaista laskutusohjelmaa.
Ei sen tarvii mikään pankin sivu olla.

T.M. [06.03.2004 15:38:21]

#

ZaLaMaNDeR = stere
Vai onko totta että täällä on kaksi yhtä tyhmää ihmistä?

makeuu [06.03.2004 18:20:09]

#

ja kerran T.M hoksas syyttää mua tuukka_91:seksi :D:D hahhahhah ja sano että oli kysyny Laaksoseltaki niin tarkistin asian.. :D:D:D

T.M. [06.03.2004 19:00:27]

#

Onpas tänään hauskaa porukkaa putkassa :)

Wizard [12.07.2004 02:39:34]

#

Viitenumero pitää vielä lajitellakin eli yhdessä ryhmässä on x numeroa ja seuraavassa ryhmässä taas x numeroa jne jne.

Ei muuta kuin hieman rustaat lisää, niin on ihan kätsä...

kukkis [09.10.2008 11:19:36]

#

Tuolla olisi yksi aiheeseen liittyvä viritys:

http://pastebin.com/f69d0ce0f


Sivun alkuun

Vastaus

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

Tietoa sivustosta