Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: caesar 25. 08. 2013, 18:27:43
-
Zdravim borci,
potreboval by som v php spravit funkciu, ktora bude kazdy mesiac resetovat cislo objednavky.
konkretne mam cislo objednavky v tomto formate 1310800001
13 - rok
1 - pevne, nemenne cislo
08 - mesiac
00001 - cislo objednavky
kod, ktory sa o toto vsetko stara je tu:
$db = JFactory::getDBO();
$q= 'SELECT order_number FROM #__virtuemart_orders order by created_on desc LIMIT 1';
$db->setQuery($q);
$order_num = $db->loadResult();
$datum = StrFTime("%y", Time()).'1'.StrFTime("%m", Time());
if (strpos ($order_num, $datum) === false){
$order_num = 0;
}
$order_num = $order_num+1;
if (strlen($order_num)==1){
$order_num = $datum.'0000'.$order_num;
}
else if (strlen($order_num)==2){
$order_num = $datum.'000'.$order_num;
}
else if (strlen($order_num)==3){
$order_num = $datum.'00'.$order_num;
}
else if (strlen($order_num)==4){
$order_num = $datum.'0'.$order_num;
}
else if (strlen($order_num)==5){
$order_num = $datum.$order_num;
}
return $order_num;
}
ako premyslam, tak premyslam, ale neviem prist na to, aby sa mi $order_num na zaciatku mesiaca vynuloval. pokusal som sa to spravit cez "funkciu" prveho dna v mesiaci, ale toto by mi neriesilo situaciu, keby objednavka dosla nie 1 den, ale napr. 2.
vie mi niekto s tymto prosim pomoct?
-
Prvni rada - formatuj to pomoci sprintf nebo neceho podobneho v PHP. Usetris si pulku radku, co tam ted mas...
-
napisu to "cloveci" reci(neznam presnou strukturu a taky at si trochu potrenujes :) ):
SELECT count(order_id) from orders where month(created) = :aktualni_mesic AND year(created) = :aktualni_rok
a k tomu pak prictes jednicku.
-
Kosmetické vylepšení:
SELECT (count(order_id) +1) from orders where month(created) = :aktualni_mesic AND year(created) = :aktualni_rok
-
SELECT count(order_id) from orders where month(created) = :aktualni_mesic AND year(created) = :aktualni_rok
count na tyto ucely zasadne nepuzivat - co kdyz je nejaky zaznam pozdeji odstranen apod. max je odolnejsi a nakonec i prehlednejsi. Dale je pri zalozeni logiky na existujicich datech potreba spravne zamykani, to uz je asle trochu nad ramec dotazu.