Autor Zpráva
Tomasekkk
Profil *
Ahoj, mohl bych se zeptat, jak by bylo vhodné řešit generování čísel objednávek dle určitého roku? Chtěl bych v letošním roce generovat čísla objednávek takto:

RR050000X - tak tedy např. 110500001,110500002,...

v roce 2012 by to vypadalo takto 120500001 ... Tyto hodnoty bych rád zapisoval do MySQL, nevím jak to nejlépe vyřešit. Pokud bych zapisal do mysql do prvni objednavky 110500001 a pak při dalších objednávkách jen přičítal 1, fungovalo by to, bohužel v roce 2012 by se stále přičítalo k číslu 1105... máte nějaký tip jak to nejlépe řešit? Např. zapsat si do mysql do další tabulky aktuální rok a do dalšího sloupečku přidávat aktuální číslo objednávky a potom v roce 2012 ověřit jen podle date() zda-li není jiný rok než je zapsán v databázi a vytvořit jej? Nebo existuje přímo nějaký příkaz, abych toto mohl řešit přímo při zápisu (INSERT) přes mysql_query()? Děkuji za každou radu
TomasJ
Profil
Tomasekkk:
Ano jeden tip by byl.
if($Conn = mysql_connect("Host","User","Password"))
{
mysql_select_db("Database");
$sql = mysql_query("SELECT * FROM objednavky");
$rows = mysql_num_rows($sql)-1;
for($i=0;$row=mysql_fetch_array($sql);$i++)
{
if($i<$rows){continue;}
else{$lastRow = $row['kod'];break;}
}
mysql_close($Conn);
}
$Kod = Date("y").050000;
$lastChar = $lastRow[strlen($lastRow)-1];
$Kod.=$lastChar+1;
Tomasekkk
Profil *
Mockrát děkuji za názorný příklad, který jsem ani nečekal, asi jej taktéž použiju. A já to dělal tak složitě :-) Děkuju
meris
Profil
[#1] Tomasekkk
Nejsem si jist co přesně chceš?
Jak se mají objednávky číslovat? Mají s každým rokem začínat od jedné, třeba takto 110500001, 110500002, 110500003...a další rok 120500001, 120500002, 120500003...

Nebo mají pokračovat 110500001, 110500002,...,110500037, a další rok 120500038, 120500039, 120500040...

A další věc je, zda má mít kód objednávky stejný počet znaků, nebo májí být vždy zadány čtyři znaky mezi RR05xxxx.(číslo objednávky) a ty čtyři znaky mají jiný význam?

Řešení popsané zde: [#2] TomasJ nebude generovat unikátní kódy objednávek, v případě, že objednávek bude více než deset ročně.
$Kod = Date("y")."050000";  // chápu li správně, že zde je spojení dvou řetězců, měl by být obalen úvozovkami
$lastChar = $lastRow[strlen($lastRow)-1];
$Kod.=$lastChar+1;

Bude se generovat:
110500001
110500002
110500003
110500004
110500005
110500006
110500007
110500008
110500009
1105000010
110500001
Tomasekkk
Profil *
No zatím jsem to pořešil jak jsem měl, prostě mám v databázi zapsaný rok a poslední číslo objednávky, když je dle date("Y") jiný rok, tak mi vytvoří nový záznam s novým rokem a číslem 1, pak jen přes script generuju čísla objednávek. :-) Tak jsem to používal vždycky, myslím si, že to bude asi nejvhodnější ... I tak děkuju ...

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: