Forumi
Home Pravila i pomoć Članovi Kalendar Današnji postovi


Povratak   PC Ekspert Forum > Računala > Software > Web dizajn, programiranje i ostalo
Ime
Lozinka

Odgovori
 
Uređivanje
Staro 21.08.2014., 13:27   #1
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
Reset auto incrementa na novu godinu (PHP MYSLQ)

Pozdrav,

slazem neku jednostavnu aplikaciju koja bi mi bila od pomoći ali sam naletio na mali problem. Zanima me na koji način napraviti da se broj neki resetira na novu godinu. Recimo ako tablica racun izgleda ovako:

Code:
racun  (innodb)
ID(AI i PK)    BROJ_RACUNA        GODINA
1                      1               2014
2                      2               2014
---
3                       1              2015
Znači, ID je samo sistemski id i to je primarni ključ. Pravi broj računa bi trebao biti u stupcu broj racuna i onda bi echo u phpu samo izgledao tipa
Code:
<?php echo $broj_racuna . "/" . $godina
ugrubo...tek toliko da se kuzi sta bi trebalo izac van.

E sad ne znam kako napraviti da se broj racuna resetira na novu godinu... mislio sam slozit MysQL scheduel statement al ne znam dal postoji alternativa. Hvala
__________________
FX6300+, Radeon R7 260X 2GB, RAM: 16Gb
Mane je offline   Reply With Quote
Staro 21.08.2014., 13:52   #2
ShebY
Premium
Moj komp
 
ShebY's Avatar
 
Datum registracije: Sep 2007
Lokacija: Velika / Osijek
Postovi: 1,442
$godina 
jeli ta varijabla zadana negdje ili?
Ako je imaš negdje zadanu ručno, usporedi samo date('o').
Ako je različito update varijeble i pošalješ SQL za reset AI.-->
PHP kod:
$godina 
jeli ta varijabla zadana negdje ili?
Ako je imaš negdje zadanu ručno, usporedi samo date('o').
Ako je različito update varijeble i pošalješ SQL za reset AI.
__________________

ShebY je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Staro 21.08.2014., 14:49   #3
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
pozdrav,

ovo sto sam ja napravio ECHO u primjeru to je zapravo ECHO iz baze znaci bilo bi to

Code:
echo row['godina'] . "/" . row[broj_racuna]
zato sam rekao otprilike,

a u stupac godina bi se popunjavao iz varijable neke koja bi echoala trenutnu godinu... tako da taj dio nije problem.

Samo je problem to da se auto increment resetira na novu godinu, a varijabla sa godinom ce bit 2015 100% .. jer ide direktan output trenutne godine.

Mozda sam malo pojasnio sto zelim, nadam se
__________________
FX6300+, Radeon R7 260X 2GB, RAM: 16Gb
Mane je offline   Reply With Quote
Staro 21.08.2014., 15:07   #4
ShebY
Premium
Moj komp
 
ShebY's Avatar
 
Datum registracije: Sep 2007
Lokacija: Velika / Osijek
Postovi: 1,442
Jedino što meni pada napamet je povalčenje zadnjeg unosa iz baze i onda uspoređivanje sa date(), drugo neznam i sam sam dosta nov u ovome.
__________________

ShebY je offline   Reply With Quote
Staro 21.08.2014., 15:35   #5
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
Hmmmm prvo nisam skuzio sta mislis... al sad mi je pala ideja na pamet, ne znam ako je to isto to što i ti kažeš

Znači ovako kod unosa u bazu napravit ću prvo uzimanje godine zadnjeg reda, zatim ako se ta godina razlikuje od trenutne godine (što znači da je godina promjenjena) prije samog unosa u bazu tada će se napraviti reset auto increment polja (samo ne znam dal to moze bit neko odredjeno polje). i to bi moglo bit to mozda, u glavi sad ne znam kako u praksi
__________________
FX6300+, Radeon R7 260X 2GB, RAM: 16Gb
Mane je offline   Reply With Quote
Staro 21.08.2014., 16:54   #6
ShebY
Premium
Moj komp
 
ShebY's Avatar
 
Datum registracije: Sep 2007
Lokacija: Velika / Osijek
Postovi: 1,442
Tako nešto, samo prije unosa uzmi zadnji red iz baze i obavi reset.
E sad sami reset je poseban problem koliko sam ja malo googlao innodb se nemože resetirati AI, već se samo truncate-a taj stupac i ponovo napravi što IMO nema smisla. MOžda nova tablica za svaku godinu?
__________________

ShebY je offline   Reply With Quote
Staro 21.08.2014., 19:42   #7
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
Hmm ili da tablica bude myissam xD ... ajde bas cu vidit ako sta mogu smuckat... ako uspijem javim tu, pa mozda nekome bude trebalo. hvala
__________________
FX6300+, Radeon R7 260X 2GB, RAM: 16Gb
Mane je offline   Reply With Quote
Staro 22.08.2014., 07:59   #8
Kruno M
Premium
Moj komp
 
Kruno M's Avatar
 
Datum registracije: Nov 2004
Lokacija: VKCI
Postovi: 1,221
A da ubaciš u tablicu još jedno polje "Slijed" pa njega mijenjaš s obzirom na uvjete datuma i godine. Programski sam sve određuješ a ne da MySQL sam to drađuje.
__________________
Pošteni trgovci: 1 2 3 4 5 6 7 8 9 10 11 12
Kruno M je offline   Reply With Quote
Staro 22.08.2014., 13:09   #9
Mane
Registered User
 
Datum registracije: Oct 2010
Lokacija: Rijeka
Postovi: 48
Evo prijatelj uskočio u pomoć, kako jednostavna solucija a na netu ne možeš nać to.


jedan upit koji sve napravi zapravo.
uvjet je da su broj_racuna, godina i user_id unique grupa, index znaci.

Code:
"select ifnull(max(broj_racuna),0)+1 as broj 
from racuni where godina = {$godina} and user_id = {$idusers};";
onda u app prije samog unsa se napravi taj upit, i njegov AS broj ide sad u broj sljedećeg računa... kada se varijabla godina promijena, to vise nije unique i kreće od 1 ponovno.. prejednostavan, ali jako pametno napravljen upit.
__________________
FX6300+, Radeon R7 260X 2GB, RAM: 16Gb
Mane je offline   Reply With Quote
Oglasni prostor
Oglas
 
Oglas
Odgovori



Pravila postanja
Vi ne možete otvarati nove teme
Vi ne možete pisati odgovore
Vi ne možete uploadati priloge
Vi ne možete uređivati svoje poruke

BB code je Uključeno
Smajlići su Uključeno
[IMG] kod je Uključeno
HTML je Isključeno

Idi na