• 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

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • 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

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

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

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

Facturatie

  • Frenzo.Brouwer
  • 17 januari 2016 om 02:31
  • Frenzo.Brouwer
    Web Developer
    Ontvangen Reacties
    35
    Berichten
    535
    • 17 januari 2016 om 02:31
    • #1

    Hallo leden,

    Deze zaterdag avond heb ik weer eens na een lange periode aan mijn eigen project gewerkt. Waarbij ik op een nieuwe functie vast loop.
    Momenteel ben ik bezig met het ontwikkelen van een facturatie module binnen in mijn systeem.

    Dat ziet er momenteel als volgt uit:

    Hier over heb ik 3 vragen!

    Vraag 1:
    Ik zie soms in website's een "Meer velden" button die de zelfde tabel rij kopieert en plakt als het ware. Weet iemand hoe je zo iets noemt? Of waar ik z'n scriptje kan verkrijgen?

    Vraag 2:
    Hoe sla ik dit op in mijn database? Ik krijg te maken met meerdere aantal velden. Die ik in een proces moet verwerken?!?!? Helpppp..

    En mijn laatste vraag:
    Hoe converteer ik uiteindelijk de gehele ingevoerde actie tot een PDF bestand?

    Mijn grootste vraag is vraag 2 omdat daar ook het verwerk proces gaande is en dit ook goed opgeslagen moet worden? Ik heb zelf wat lopen klooien met JSON maar ik ben er niet echt bepaald op vooruit gekomen.

    Ik zou het echt heel erg waarderen als iemand mij hierbij kan helpen!
    Mocht iemand dit zelf willen programmeren voor mij? Hoor ik graag een normaal bedrag om dit werk uit te besteden.

    Alvast bedankt!!!

    :thumbup:

    Eigenaar van:
    Online Marketing & Webdesign Bureau - https://marketingmetrics.nl/
    Gaming Plaform - https://onetwogaming.nl/
    Banditi - https://banditi.nl/
    Criminas - https://criminas.nl/

  • P.Yntema
    Intermediate
    Ontvangen Reacties
    7
    Berichten
    185
    • 17 januari 2016 om 10:59
    • #2

    Even wat opgezocht en dan heb je al vrij snel wat oplossingen. Ik weet natuurlijk niet in hoeverre jij thuis bent in PHP en Javascript, maar dit zijn wat manieren:

    Vraag 1. http://stackoverflow.com/questions/1485…mically-to-form
    Vraag 2. http://%c2%a0http//www.phptuts.nl/view/27/5/
    Vraag 3. http://stackoverflow.com/questions/4666…f-file-with-php

    Bezig met een nieuw project: overhoorprogramma. Laat weten wat je ervan denkt. :)

  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 17 januari 2016 om 11:53
    • #3

    Ik heb het als eens gedaan zoals je wilt bij vraag 1 en 2. Ik zal eens kijken waar de code ligt en je die eens geven.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 17 januari 2016 om 19:44
    • #4

    Formulier-elementen (in HTML) ondersteunen array-constructies door rechte haken toe te voegen aan een veldnaam:

    HTML
    <input type="text" name="regel[]" />


    Dit soort velden kun je knippen en plakken met JavaScript (waarschijnlijk bedoelde je dat of jQuery in plaats van JSON, ik zie niet helemaal hoe JSON hier bij past?).

    Als je vervolgens een regel opslaat en daarna weer wilt bewerken in eenzelfde soort dynamisch formulier zou je kunnen overwegen om een referentie (het volgnummer / het auto-increment veld) mee te geven aan dit veld:

    HTML
    <input type="text" name="regel[41]" value="eerder ingevoerde waarde" />

    Wel zul je iets moeten verzinnen om het onderscheid te maken tussen bestaande regels en nieuwe regels.

    Wat je ook nog zou kunnen doen (en wellicht stukken makkelijker is) is het volgende: deze regels zijn gekoppeld aan een overkoepelend iets (een factuur, een order, whatever). Wanneer je al deze data update doe je het volgende bij verwerking van het formulier:

    • je verwijdert alle bestaande items die gekoppeld zijn aan de factuur, en
    • je voegt ze opnieuw toe

    Dus je gebruikt deze als een koppeltabel tussen je orderregels en je orders, je hoeft dan geen moeilijke inspecties te doen maar kiepert gewoon alles weg en voegt alles (en mogelijk meer) opnieuw toe.

    Dit alles zou wel in één ondeelbare actie moeten. Dit kun je doen met database-transacties. Je moet er dan wel voor zorgen dat de ENGINE die je tabellen gebruiken deze bewerkingen ondersteunen.

    In zijn algemeenheid is het ook wel handig dat als je een grote administratief-achtige database hebt dat deze echt relationeel is opgezet. Tabellen hebben dan echt onderlinge verbanden en relaties middels foreign keys.

    Indien deze database(tabellen) niet de InnoDB engine hebben, zou ik daar eerst eens mee aan de slag gaan.

    De database vormt het fundament van je applicatie. Als deze niet goed is, hoef je ook niet veel van je applicatie te verwachten.

    EDIT: over PDF: dit lijkt mij echt een aparte zijstraat en die zou ik gewoon apart behandelen. Je zou bij het ontwerp van dit ding wel in je achterhoofd kunnen houden dat dit op ening moment ook in PDF-vorm gebruikt moet worden. Daarbij is het volgens mij ook (bij facturatie dan) belangrijk dat op het moment dat je hier een PDF van maakt en deze naar een klant stuurt dat de bijbehorende data niet meer gewijzigd kan/mag worden.

  • Frenzo.Brouwer
    Web Developer
    Ontvangen Reacties
    35
    Berichten
    535
    • 18 januari 2016 om 02:27
    • #5

    @P.Yntema,
    Dit is niet presies wat ik bedoelde met vraag 2.

    @Aaron,
    Ik ben benieuwd wat je hebt liggen!

    @FangorN,
    Thanks voor deze nuttige informatie, ik heb dit kunnen uit testen op een multiple select.

    Momenteel ben ik wachtende op Aaron. En er heeft zich een programmeur gemeld die dit voor een leuk tarief kan realiseren. Moet nog de details door nemen. Dus hopen dat het lukt!

    Eigenaar van:
    Online Marketing & Webdesign Bureau - https://marketingmetrics.nl/
    Gaming Plaform - https://onetwogaming.nl/
    Banditi - https://banditi.nl/
    Criminas - https://criminas.nl/

  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 18 januari 2016 om 21:03
    • #6

    Zo, na lang zoeken heb ik het gevonden!

    Standaard staat er 1 lijn, omdat je dit minimum nodig hebt....

    Code
    <form method="POST">
         <div id="dynamicInput">
         <p><input class="text medium"  type="text" value="" name="item1_name"/><input class="text prijs"  type="text" value="0,000" name="item1_price"/><input class="text aantal" type="text" value="" name="item1_qty"/></p>
    
    
         </div>
         <input type="button" class="button yellow" value="extra lijn" onClick="addInput('dynamicInput');">
    </form>
    <input type="submit" class="button" value="Toevoegen" /></form>


    De javascript code is:

    Code
    <script type="text/javascript">
    var counter = 1;
    var limit = 20;
    function addInput(divName){
         if (counter == limit)  {
              alert("maximaal aantal lijnen bereikt.  (" + counter + ") lijnen");
         }
         else {
              var newdiv = document.createElement('div');
              newdiv.innerHTML = "<p><input class='text medium'  type='text' value='' name='item"+ (counter + 1) +"_name'/><input class='text prijs'  type='text' value='0,000' name='item"+ (counter + 1) +"_price'/><input class='text aantal' type='text' value='' name='item"+ (counter + 1) +"_qty'/></p>";
              document.getElementById(divName).appendChild(newdiv);
              counter++;
         }
    }
    </script>
    Toon Meer

    zoals je in de in de code kunt aflezen, zie je dat ik er maximaal 20 kan invoeren.
    die code kan je uiteraard nog aanpassen als je het zo niet wilt. ik doe maximaal 20 lijnen omdat mijn factuur dan vol staat. (omzetten naar pdf). veel succes met de code!

  • ThomasBlom
    Student
    Ontvangen Reacties
    19
    Berichten
    137
    • 18 januari 2016 om 21:46
    • #7
    Citaat van Aaron

    Zo, na lang zoeken heb ik het gevonden!

    Standaard staat er 1 lijn, omdat je dit minimum nodig hebt....

    Code
    <form method="POST">
         <div id="dynamicInput">
         <p><input class="text medium"  type="text" value="" name="item1_name"/><input class="text prijs"  type="text" value="0,000" name="item1_price"/><input class="text aantal" type="text" value="" name="item1_qty"/></p>
    
    
         </div>
         <input type="button" class="button yellow" value="extra lijn" onClick="addInput('dynamicInput');">
    </form>
    <input type="submit" class="button" value="Toevoegen" /></form>

    De javascript code is:

    Code
    <script type="text/javascript">
    var counter = 1;
    var limit = 20;
    function addInput(divName){
         if (counter == limit)  {
              alert("maximaal aantal lijnen bereikt.  (" + counter + ") lijnen");
         }
         else {
              var newdiv = document.createElement('div');
              newdiv.innerHTML = "<p><input class='text medium'  type='text' value='' name='item"+ (counter + 1) +"_name'/><input class='text prijs'  type='text' value='0,000' name='item"+ (counter + 1) +"_price'/><input class='text aantal' type='text' value='' name='item"+ (counter + 1) +"_qty'/></p>";
              document.getElementById(divName).appendChild(newdiv);
              counter++;
         }
    }
    </script>
    Toon Meer

    zoals je in de in de code kunt aflezen, zie je dat ik er maximaal 20 kan invoeren.
    die code kan je uiteraard nog aanpassen als je het zo niet wilt. ik doe maximaal 20 lijnen omdat mijn factuur dan vol staat. (omzetten naar pdf). veel succes met de code!


    Dit is niet efficiënt. Zoals @FangorN al vermeldde, ondersteunen forms array structuur.
    Dit maakt het uitlezen van de data vele malen eenvoudiger.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 18 januari 2016 om 23:57
    • #8
    Citaat van Frenzo.Brouwer

    En er heeft zich een programmeur gemeld die dit voor een leuk tarief kan realiseren.

    Als hierbij geen InnoDB en/of transacties worden gebruikt zou ik het over laten maken ;).

  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 19 januari 2016 om 21:15
    • #9
    Citaat van ThomasBlom

    Dit is niet efficiënt. Zoals @FangorN al vermeldde, ondersteunen forms array structuur.
    Dit maakt het uitlezen van de data vele malen eenvoudiger.

    kan je eventueel een voorbeeld geven voor de ts? Het mijne is uit de oude doos en is inderdaad verouderd. Maar werkt wel nog steeds.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 19 januari 2016 om 23:04
    • #10
    PHP
    <?php
    header('Content-Type: text/html; charset=UTF-8');
    
    
    error_reporting(E_ALL);
    ini_set('display_errors', 'stdout');
    
    
    function escape($in) {
        return htmlentities($in, ENT_QUOTES, 'UTF-8');
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>uurtje factuurtje</title>
    <!-- je kunt natuurlijk ook je eigen variant rollen in native JavaScript -->
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
    <style type="text/css">
    body            { font-family: sans-serif; font-size: 10pt; }
    div.item        { margin: 5px; }
    div.item input  { width: 250px; }
    pre             { font-size: 10pt; }
    </style>
    </head>
    
    
    <body>
    <?php
    /*
    Normaal zou dit in aparte acties opgenomen moeten worden
    maar omdat dit een voorbeeld betreft maar even zo...
    */
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        ?><pre><?php echo escape(print_r($_POST, true)) ?></pre><?php
    } else {
    ?>
    <form action="<?php echo escape($_SERVER['PHP_SELF']) ?>" method="post" accept-charset="UTF-8">
    <div id="items">
        <!-- hier komen je items #YOLO -->
    </div>
    <button type="button" id="addline">regel toevoegen</button>
    <button type="submit">opslaan</button>
    </form>
    <script type="text/javascript">
    //<![CDATA[
    $().ready(function() {
        $('button#addline').click(function(e) {
            e.preventDefault();
            $('div#items').append(
                '<div class="item">\
                    <input type="text" name="item[]" autocomplete="off" \/>\
                    <button type="button" class="remove"> - <\/button>\
                    <button type="button" class="add"> + <\/button>\
                <\/div>'
            );
        });
        $('div#items').on('click', 'button.remove', function(e) {
            if (confirm('delete?')) {
                $(this).parent().remove();
            }
        });
        $('div#items').on('click', 'button.add', function(e) {
            $(this).parent().after(
                '<div class="item">\
                    <input type="text" name="item[]" autocomplete="off" \/>\
                    <button type="button" class="remove"> - <\/button>\
                    <button type="button" class="add"> + <\/button>\
                <\/div>'
            );
        });
    });
    //]]>
    </script>
    <?php
    } // end REQUEST_METHOD check
    ?>
    </body>
    </html>
    Toon Meer

    Je kunt dit natuurlijk nog uitbreiden met meer toeters en bellen als je dat leuk vindt.

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
  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