projectnummer laten doortellen

  • Beste ICT scripters,


    Ik heb mijn bedrijfsadministratie (opdrachtgevers, projecten, uren, kilometers, printkosten etc) in een Mysql database staan.
    Nu ben ik druk bezig om hier de GUI bij te schrijven.


    Mijn projecten krijgen in de database een id mee en een project nummer (bepaal ik zelf)
    de id is uniek en vanaf daar edit dan ook de projecten.


    Echter als ik een nieuw project toevoeg wil ik dat deze automatische het volgende project nummer bepaald.
    mijn project nummers zijn als volgt opgebouwd.
    14-001 jaar-projectnummer
    14-002
    etc
    etc.


    nu kan ik met substr de 14- er vanaf halen, maar hoe zorg ik er nu voor dat php, kijkt naar het laatste project nummer en het volgende nummer dan bepaald?


    Dit wil ik namelijk om te voorkomen dat ik zelf het projectnummer moet invullen en zo dubbele nummers krijg. (stukje ontzorging van mijzelf)


    Iemand een idee, of op welke functie etc ik moet google / kijken op php.net?


    Ikzelf zit te denken aan het laatste project nummer ophalen vanuit de database,
    en met substr de eerste 3 tekens er vanaf. & php vervolgens +1 laten doen, maar is dit zo simpel als ik denk & hoe krijg ik de aanvulling tot 3 cijfers?


    Ik heb één oplossing gevonden:


    De printf toont mij nu het laatste nummer +1 (met 3 cijfers) door er zelf weer het jaartal voor te zetten (of d.m.v. datetime) heb ik het kloppend.!


    Alvast bedankt.

    Met vriendelijke groet,
    Mathijs Lormans


    Designer / Sustainability expert: Lormans Design
    Design, Engineering and Development
    Bouwkundig ontwerp, tekenwerk, advies en projectmanagement!
    3D modeling en 3D printing

    Bewerkt één keer, laatst door Tieske ().

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Sorry ik snap dit niet geheel,


    ik hoef namelijk geen subprojecten of iets te hebben.


    Ik sla mijn project nummer als str op zodat ik de jaaraanduiding met scheidingsteken - in kan voeren.
    Mijn project nummer staat dus zo in de database: 14-005 of 13-014


    Doordat ik dit als geheel in 1 veld heb staan kan ik met een autoaanvuller ook op project nummer zoeken, anders gaat dit relatief lastig/ingewikkeld worden.


    Daarnaast heeft ieder project nog een id veld in de database, maar dit is voor verdere verwerking / aanpassen etc makkelijker dan telkens met het daadwerkelijke project nummer te werken.

    Met vriendelijke groet,
    Mathijs Lormans


    Designer / Sustainability expert: Lormans Design
    Design, Engineering and Development
    Bouwkundig ontwerp, tekenwerk, advies en projectmanagement!
    3D modeling en 3D printing

  • Waar 14 staat voor 2014 en 005 voor projectnummer 5 in 2014?


    Je kan sowieso die string exploden (http://nl1.php.net/explode) op het "-" teken, en dan de 2e waarde ophogen.


    Maar ik zou persoonlijk dit niet zo in de database opslaan zoals je nu doet omdat je hele integriteit naar de knoppen gaat.
    Het staat nu niet eens in de eerste normaalvorm doordat niet elke attribuut een atomaire waarde bevat.


    Is dit misschien een oplossing?

    SQL
    SELECT CONCAT_WS('-',DATE_FORMAT(projectdatum, '%y'),project_id) AS projectnummer FROM tabel


    Als je vervolgens wil zoeken kan je het volgende doen:


    SQL
    SELECT CONCAT_WS('-',DATE_FORMAT(projectdatum, '%y'),project_id) AS projectnummer
    FROM tabel
    HAVING projectnummer = '14-1'


    Voordelen:
    Je hoeft dit vervolgens niet meer apart op te slaan in de database
    De projectnummers worden nog steeds door de autoincrement automatisch opgehoogd


    En omdat het project_id een uniekveld is zal de combinatie van datum/project_id ook altijd uniek zijn.

  • Het antwoord van DirkZz is de enigste juiste, maar toch leuk dat je dit ook kunt oplossen met een query:


  • Zoals DirkZz het zet krijgt mijn brein niet verwerkt (ben kort door de bocht hobby ICT'er :P)
    Echter wat mij daar niet aan staat is dat het niet 14-001 is en dat is wel de wijze zoals ik 'eis' dat het in de database komt.


    En dat van jou Stefan.J ook niet echt...


    Echter werkt mijn manier ook en omdat het toch voor eigen gebruik is blijf het mooi zo in mijn code staan.

    Met vriendelijke groet,
    Mathijs Lormans


    Designer / Sustainability expert: Lormans Design
    Design, Engineering and Development
    Bouwkundig ontwerp, tekenwerk, advies en projectmanagement!
    3D modeling en 3D printing

  • Als je écht die leading zeros nodig hebt, dan zou dit de truc moeten doen.


    SQL
    SELECT IF( CHAR_LENGTH( id ) >=3, CONCAT_WS( '-', DATE_FORMAT( datum, '%y' ) , ID ) , CONCAT_WS( '-', DATE_FORMAT( datum, '%y' ) , LPAD( ID, 3, '0' ) ) ) AS projectnummer
    FROM test



    Uitleg:

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!