anoniem Geplaatst: 22 augustus 2002 Delen Geplaatst: 22 augustus 2002 Ik wil dat gebruikers elk een uniek nummer krijgen dat bestaat uit het jaar en een nummer. Dus bijvoorbeeld 2002123 Dit lukt mij met de volgende code: [code:1:052a81f02a]$date=date("Y"); $id=mysql_insert_id(); $nummer="$date$id"; [/code:1:052a81f02a] Ik heb nu echter 1 probleem. De bedoeling is dat $id weer bij nul begint als het jaartal verandert. Dus na jaarwisseling krijg ik niet 2003124 maar 20030 Hoe ik dat voor mekaar krijgen? Quote Link naar reactie
anoniem Geplaatst: 22 augustus 2002 Auteur Delen Geplaatst: 22 augustus 2002 gewoon geen auto_increment gebruiken maar zelf je numering bepalen zoals je ook al doet met het jaartal? evt. kan je met een tabel werken waarin alle mogelijke nummers staan en daar de juiste waarde uit opvragen. Als je dan deze tabel locked kan iig niet iemand tegelijkertijd hetzelfde nummer opvragen. Dus bijvoorbeeld zoiets (syntax-foutjes voorbehouden, mysql kennis is een beetje roestig): [code:1:81baf1212f] LOCK TABLES numbers WRITE SELECT MIN(nr) FROM numbers WHERE year < year(now()) UPDATE numbers SET year=year(now()) WHERE nr = [selected_nr] UNLOCK TABLES [/code:1:81baf1212f] waarbij je uitgaat van een tabel met een x aantal nummers met daarbij een jaartal, bijv.: [code:1:81baf1212f] TABLE numbers nr int year int DEFAULT '0' [/code:1:81baf1212f] Quote Link naar reactie
anoniem Geplaatst: 22 augustus 2002 Auteur Delen Geplaatst: 22 augustus 2002 [quote:9cb93ff167="Annie"]SELECT MIN(nr) FROM numbers WHERE year < year(now())[/quote:9cb93ff167]Ik ben benieuwd waarom je hier een MIN(nr) zou willen doen? Als je je tabel als volgt zou laten opbouwen: [code:1:9cb93ff167]+------+----+ | 2002 | 30 | | 2003 | 59 | | 2004 | 12 | +------+----+[/code:1:9cb93ff167]En dan steeds het getal met 1 verhoogt. Dan ben je met alleen een [code:1:9cb93ff167]$query = "SELECT nummer FROM tabel WHERE jaar=" . date("Y");[/code:1:9cb93ff167]al klaar :) Quote Link naar reactie
anoniem Geplaatst: 22 augustus 2002 Auteur Delen Geplaatst: 22 augustus 2002 [quote:d6dd36a52c="Piro"][quote:d6dd36a52c="Annie"]SELECT MIN(nr) FROM numbers WHERE year < year(now())[/quote:d6dd36a52c]Ik ben benieuwd waarom je hier een MIN(nr) zou willen doen?[/quote:d6dd36a52c]omdat ik voor een andere insteek heb gekozen, namelijk een vaste set waarden waar doorheen gerouleerd wordt. [quote:d6dd36a52c="Piro"] Als je je tabel als volgt zou laten opbouwen: [code:1:d6dd36a52c]+------+----+ | 2002 | 30 | | 2003 | 59 | | 2004 | 12 | +------+----+[/code:1:d6dd36a52c]En dan steeds het getal met 1 verhoogt. Dan ben je met alleen een [code:1:d6dd36a52c]$query = "SELECT nummer FROM tabel WHERE jaar=" . date("Y");[/code:1:d6dd36a52c]al klaar :)[/quote:d6dd36a52c]Dat is inderdaad ook een optie. Alleen zul je natuurlijk naast de select ook een "update +1" query uit moeten voeren en na afloop van je jaar een insert voor het nieuwe jaar moeten doen (maar even uit m'n hoofd kan dat waarschijnlijk ook met een enkele REPLACE INTO). Er leiden dus meerdere wegen naar Rome. Quote Link naar reactie
anoniem Geplaatst: 24 augustus 2002 Auteur Delen Geplaatst: 24 augustus 2002 Zo kan het als je twee velden in je tabel hebt. Maar ik wil het nummer in 1 veld in een tabel. [code:1:23eb6d88b0] +-------+ | 20021 | | 20022 | | ... . | | 20031 | +-------+ [/code:1:23eb6d88b0] Is het niet mogelijk om in de PHP je mysql_insertid te 'resetten' als er een nieuw jaar is begonnen? Quote Link naar reactie
anoniem Geplaatst: 25 augustus 2002 Auteur Delen Geplaatst: 25 augustus 2002 [quote:a89a290140="George W. Bush"]Zo kan het als je twee velden in je tabel hebt. [/quote:a89a290140]Nee hoor, da's nergens voor nodig. Je kan een tweede tabel maken die je gebruikt voor het "genereren" van je unieke nummering. Het resetten van de auto_increment is overigens bij mijn weten niet mogelijk (behalve dan door het droppen van de tabel). Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen