Ahoj
Mam takovy mens problem. Potreboval bych nejak vyresit toto...
Mam id zakazky ve tvaru 200500001... prvni ctyri cisla je rok a ja bych potreboval jakmile nastane dalsi rok tak aby to bylo zase 200600001
Nejak mi neleze do hlavy jak na to... moc by mi pomohla vase pomoc.
jo a to id by se pridavalo... takze 200500156 dalsi a dalsi rok by to skocilo na 200600001
to je tak těžký si zjistit aktuální rok?
no to sice ne, ale ja potrebuju, ze jakmile naskoci dalsi rok tak aby se to do databaze zapisovalo zase od jednicky a ne aby to pokracovalo dal.
Slo by to takhle?
if(substr($a["id_zakazky"], 0, 4) < date("Y")) {
$id_zakazky = date("Y") . "0001";
} else {
$id_zakazky = $a["id_zakazky"] + 1;
}
jo, to by slo... podle posledni zakazky to kontrolovat
Jo, asi by to šlo, ale občas dojde k chybě - to když vytvoří dva uživatelé novou zakázku současně: oba si přečtou číslo poslední zakázky a oba přičtou jedničku. Ten co bude o chvilku rychlejší, tak projde. Tomu druhému se z databáze vrátí chybové hlášení o neunikátním klíči. Jestli tohle nevadí, tak by to šlo použít.
Noo, kdyby byl index integer (jako že asi je) tak na něj nastavit autoincrement. Pak se dají použít LAST_INSERT_ID() (to je SQL fce ne PHP), která ti vrátí poslední vložené id. Pak podle roku se zařídit tak, že nastavím počítadlo autoincrementu na hodnotu začínající dalším rokem a jedničkou. Pak se udělá insert a s vysokou pravděpodobností, hraničící s jistotou dostaneš to, co potřebuješ..