• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Jeffrey.Hoekman 18 januari 2026 om 20:14
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

projectnummer laten doortellen

  • Tieske
  • 10 februari 2014 om 13:23
  • Tieske
    Lormans Design
    Ontvangen Reacties
    11
    Berichten
    333
    • 10 februari 2014 om 13:23
    • #1

    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:

    PHP
    Ik heb een oplossing gevonden:
    
    
    
    
    	$stmtlastnummer = $admdb->prepare("SELECT `nummer` FROM `projecten` ORDER BY `id` DESC LIMIT 1");
    	$stmtlastnummer->execute();
    
    
    	$lastnummerrow = $stmtlastnummer->fetch(PDO::FETCH_ASSOC);
    
    
    	$lastnummer_nummer = substr($lastnummerrow['nummer'], 3, 3);
    
    
    printf("%03d",$lastnummer_nummer+1)
    Toon Meer


    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 (10 februari 2014 om 13:36).

  • DirkZz
    Intermediate
    Ontvangen Reacties
    29
    Berichten
    213
    • 10 februari 2014 om 14:22
    • #2

    De beste manier lijkt me om de projecten anders op te slaan in de database.

    Je krijgt dan iets van:

    Project
    project_id
    Naam
    Etc

    Subproject
    subproject_id
    project_id
    Naam
    Etc

    En als je echt leading zero's in je sub-ids wil hebben, dan zou je hier naar kunnen kijken maar ik zou me eerst wel bedenken of je dit echt wil/nodig hebt.\

    https://dev.mysql.com/doc/refman/5.5…attributes.html

  • Tieske
    Lormans Design
    Ontvangen Reacties
    11
    Berichten
    333
    • 10 februari 2014 om 14:27
    • #3

    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

  • DirkZz
    Intermediate
    Ontvangen Reacties
    29
    Berichten
    213
    • 10 februari 2014 om 14:32
    • #4

    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.

    Bewerkt 7 keer, laatst door DirkZz (10 februari 2014 om 15:23).

  • bramieboy100
    Intermediate
    Berichten
    433
    • 10 februari 2014 om 15:53
    • #5

    Gebruik de functie intval van php om er een int van te maken.

    LOL

  • Stefan.J
    Master
    Ontvangen Reacties
    9
    Berichten
    2.358
    • 10 februari 2014 om 19:21
    • #6

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

    Code
    mysql> CREATE TABLE projects ( projectNumber CHAR(7) PRIMARY KEY );
    Query OK, 0 rows affected (0.01 sec)
    
    
    mysql> INSERT INTO projects VALUES ('14-001'), ('14-002'), ('14-003'), ('13-001'), ('13-002'), ('12-001');
    Query OK, 6 rows affected (0.00 sec)
    Records: 6  Duplicates: 0  Warnings: 0
    
    
    mysql> SELECT CONCAT(SUBSTRING(projectNumber, 1, 2), '-', LPAD(SUBSTRING(projectNumber, 4, 3) + 1, 3, '0')) FROM projects WHERE SUBSTRING(projectNumber, 1, 2) = 14 ORDER BY projectNumber DESC LIMIT 1;
    +-----------------------------------------------------------------------------------------------+
    | CONCAT(SUBSTRING(projectNumber, 1, 2), '-', LPAD(SUBSTRING(projectNumber, 4, 3) + 1, 3, '0')) |
    +-----------------------------------------------------------------------------------------------+
    | 14-004                                                                                        |
    +-----------------------------------------------------------------------------------------------+
    Toon Meer
  • Tieske
    Lormans Design
    Ontvangen Reacties
    11
    Berichten
    333
    • 10 februari 2014 om 19:32
    • #7

    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

  • DirkZz
    Intermediate
    Ontvangen Reacties
    29
    Berichten
    213
    • 10 februari 2014 om 19:58
    • #8

    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!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 2 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design