Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: caesar 25. 08. 2013, 18:27:43

Název: PHP: reset čísla každý měsíc
Přispěvatel: 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:
Kód: [Vybrat]
$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?
Název: Re:php - reset cisla kazdy mesiac
Přispěvatel: Nebylo zadáno 25. 08. 2013, 18:42:10
Prvni rada - formatuj to pomoci sprintf nebo neceho podobneho v PHP. Usetris si pulku radku, co tam ted mas...
Název: Re:php - reset cisla kazdy mesiac
Přispěvatel: to_je_jedno 25. 08. 2013, 19:06:03
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.
Název: Re:PHP: reset čísla každý měsíc
Přispěvatel: lejtkin 26. 08. 2013, 10:49:51
Kosmetické vylepšení:

SELECT (count(order_id) +1) from orders where month(created) = :aktualni_mesic AND year(created) = :aktualni_rok
Název: Re:php - reset cisla kazdy mesiac
Přispěvatel: vrtak 26. 08. 2013, 15:46:37
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.