Autor Zpráva
muflik
Profil *
Dobrý den, mám nsledující problém, pokuď vypisuji náhodné číslo přes echo tak vše funguje správně, ale pokuď ho začnu ukládat do mysql databáze tak je téměř vždy rovno 2147483647.

<?php
...
srand((double)microtime()*1000000);
$rand = rand(1000000000,9999999999);
$sql = "INSERT INTO test (variabilniSymbol)
                VALUES ($rand)";
        
        //echo $sql;
        mysql_query($sql) or die("`.´");
        echo "its ok";
?>


Prosim nevite kde by mohla byt chyba ? (na localhostu s vlastnim apache a mysql to funguje spravne ale na netu to nefunguje :( Děkuji.
Alphard
Profil
Hádám, že sloupec variabilniSymbol je typu int a přestřelil jste jeho hodnotu, větší číslo tam neuložíte, použijte třeba bigint. Pozor u finančnictví, další zrady mohou čekat u desetinných čísel, není to žádná sranda.
DoubleThink
Profil *
Za prvé srand není k ničemu dobrý. Za druhé, velikost náhodného čísla je omezená, viz getrandmax.
AM_
Profil
Je opravdu moudré, aby variabilní symbol byl náhodné číslo? pokud máš hodně zákazníků, není zas tak malá pravděpodobnost, že se ta čísla někdy sejdou. Vhodnější by bylo jako VS dávat třeba auto_increment klíč.
muflik
Profil *
Dobrý den, opravdu pomohla změna typu na bigint děkuji, srand je asi zastaralá funkce a tudíž jsem ji smazal a zdá se, že to funguje stejně :)
AM_: zákazníci jsou hodně specificky cílená skupina a větší počet se neplánuje, ale s tim auto incrementem je to dobrý nápad a při dalším projektu to nejspíš zkusím, ale ještě bych měl otázku, v účetnictví se zrovna nevyznám a myslím že i kdyby se VS občas vygeneroval stejný, tak by to asi nevadilo? Vlastně v návrhu ani nepočítám, že bych ho generoval do faktury. Pokuď by se vygeneroval stejný VS například u dvou objednávek zasebou, tak se zákazník rozezná podle jména a částky nákupu. Ale možná je nějaká povinnost uvádět faktury s nezaměnitelným VSymbolem, nevím.
AM_
Profil
muflik:
Spíš jde o to proč brát na komára dělo, když plácačka stojí méně a trefí se vždycky. Pokud si objednávky identifikujete podle něčeho jiného, tak to v praxi nevadí, nicméně unikátní identifikace by měla být právě variabilní symbol, a nevidím rozumný důvod generovat ho náhodně, když už máme k dispozici unikátní a navíc mnohem jednodušší číslo.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: