• 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)!

    Syntax 30 december 2025 om 22:29
  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [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

  • 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
  • 302 Nieuwe Domeinnamen November 2025

    shiga 1 december 2025 om 13:07

While loop

  • Aaron
  • 31 maart 2019 om 20:02
  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 31 maart 2019 om 20:02
    • #1

    Hallo allemaal,

    Ik ben op zoek naar een manier om in mijn while loop een string met een nummer te kunnen maken.
    Zodat ik meerdere string items kan maken.
    $string1
    $string2
    ...

    Waarna ik later de data kan toevoegen. Wie kan mij opweg helpen om met een while loop dit te kunnen maken?

  • Guest, wil je besparen op je domeinnamen? (ad)
  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 31 maart 2019 om 23:58
    • #2

    Dit zou je kunnen doen met een variabele naam met behulp van een dubbele string ($$):

    PHP
    $i = 1;
    while (whatever) {
        $varName = 'string'.$i++; // post increment
        $$varName = 'something'; // let op de dubbele $
    }

    Maar hier kleven wel wat een aantal nadelen aan, zo "vervuil" je de huidige scope met een heleboel (soortgelijke) variabele( name)n. Daarbij programmeer je mogelijk informatie in de naam van de variabele (hard coding). Wat voor betekenis hebben deze 1, 2 et cetera?

    Zou het niet gewoon veel beter zijn om bijvoorbeeld één array te maken? Met dit volgnummer in de index ofzo? Wat voor bestaansrecht hebben al deze losse variabelen?

    Het kan dus wel, alleen zou ik deze aanpak niet aanraden. Je kunt beter investeren in een wat elegantere datastructuur. Hier zijn arrays bij uitstek voor geschikt.

    Bewerkt 2 keer, laatst door FangorN (1 april 2019 om 00:08).

  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 1 april 2019 om 09:00
    • #3
    Citaat van FangorN

    Dit zou je kunnen doen met een variabele naam met behulp van een dubbele string ($$):

    PHP
    $i = 1;
    while (whatever) {
        $varName = 'string'.$i++; // post increment
        $$varName = 'something'; // let op de dubbele $
    }

    Maar hier kleven wel wat een aantal nadelen aan, zo "vervuil" je de huidige scope met een heleboel (soortgelijke) variabele( name)n. Daarbij programmeer je mogelijk informatie in de naam van de variabele (hard coding). Wat voor betekenis hebben deze 1, 2 et cetera?

    Zou het niet gewoon veel beter zijn om bijvoorbeeld één array te maken? Met dit volgnummer in de index ofzo? Wat voor bestaansrecht hebben al deze losse variabelen?

    Het kan dus wel, alleen zou ik deze aanpak niet aanraden. Je kunt beter investeren in een wat elegantere datastructuur. Hier zijn arrays bij uitstek voor geschikt.

    Fangorn,

    In heb een post formulier waar de volgende waardes in staan:
    item1 qty1 price1

    Dit kan vermeerderd worden door een javascript. Onbeperkt aantal lijnen.
    Er is een counter bij de javascript die de aantal lijnen telt en via het post form meegaat.

    Zo kan ik via de while loop alles lezen en beveiligen.

    Of is er hiervoor een betere oplossing?

  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 1 april 2019 om 09:59
    • #4

    Misschien kan je beter zoiets gebruiken. Dat is ervoor gemaakt.

    Met vriendelijke groet,

    Dees

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 1 april 2019 om 15:07
    • #5

    Zoals @D.Oomens al min of meer aangeeft: formulierelementen in HTML kennen ook array-structuren. Dit bereik je door een paar rechte haken achter de naam toe te voegen.

    Als elk item een id, hoeveelheid, prijs et cetera kent dan maak je voor elk van deze elementen een apart array:

    HTML
    <input type="text" name="item[]" value="<id hier>">
    <input type="text" name="quantity[]" value="">


    Prijs is afleidbaar, en weet je zelf al, die hoef je dus niet eerst in een formulier te stoppen, en er vervolgens weer uit te halen. Je zou wel een readonly prijs(tekst) op kunnen nemen in het formulier, zodat de invuller kan zien wat alles (totaal) kost.

    Bij de verwerking van het formulier (nadat je deze hebt gevalideerd uiteraard) itereer je over het item (sub)array, en gebruik je hierbij de index om de andere bijbehorende data te verzamelen, bijvoorbeeld zoiets:

    PHP
    // aanname: data is gevalideerd en is niet leeg
    foreach ($_POST['item'] as $index => $id) {
        $quantity = $_POST['quantity'][$index];
        // etc.
    }


    EDIT: je zou zelfs kunnen volstaan met het enkel doorgeven van een quantity, waarbij de key het item id is:

    HTML
    <input type="text" name="quantity[<item id hier>]" value="...">


    En dan wordt de loop:

    PHP
    // aanname: data is gevalideerd en is niet leeg
    foreach ($_POST['quantity'] as $productId => $quantity) {
        // etc.
    }

    Bewerkt 6 keer, laatst door FangorN (5 april 2019 om 12:16).

  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 3 april 2019 om 21:48
    • #6
    Citaat van FangorN

    Dit zou je kunnen doen met een variabele naam met behulp van een dubbele string ($$):

    PHP
    $i = 1;
    while (whatever) {
        $varName = 'string'.$i++; // post increment
        $$varName = 'something'; // let op de dubbele $
    }

    Maar hier kleven wel wat een aantal nadelen aan, zo "vervuil" je de huidige scope met een heleboel (soortgelijke) variabele( name)n. Daarbij programmeer je mogelijk informatie in de naam van de variabele (hard coding). Wat voor betekenis hebben deze 1, 2 et cetera?

    Zou het niet gewoon veel beter zijn om bijvoorbeeld één array te maken? Met dit volgnummer in de index ofzo? Wat voor bestaansrecht hebben al deze losse variabelen?

    Het kan dus wel, alleen zou ik deze aanpak niet aanraden. Je kunt beter investeren in een wat elegantere datastructuur. Hier zijn arrays bij uitstek voor geschikt.

    Dit heeft me uitendelijk kunnen helpen!
    Waarvoor dank.

    Mijn oplossing (deel van het script):

    Code
    $counter		= mysql_real_escape_string(strip_tags($_POST['counter']));
    	$x = 1; 
    	while($x <= $counter) {
    
    
    	$price = 'item'.$x.'_price';
    	$$price =  convertToValidPrice($_POST['item'.$x.'_price']);
    
    
    	$qty = 'item'.$x.'_qty';
    	$$qty =  mysql_real_escape_string($_POST['item'.$x.'_qty']);
    
    
    	$name = 'item'.$x.'_name';
    	$$name =  mysql_real_escape_string($_POST['item'.$x.'_name']);
    
    
        $x++;
    	}
    Toon Meer

    Ik ga dit nu verwerken in mijn formulier & uiteraard de nodige veiligheid bijbouwen.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 3 april 2019 om 22:36
    • #7

    Ugh, arrays lijken mij een betere aanpak :p.

    En prijs is in principe informatie die je hebt, dus die hoef je niet te POSTen.

    Anders zou iemand zichzelf een korting kunnen geven :).

    En als je de prijs dan toch uit de database trekt voor een controle, waarom gebruik je die prijs dan niet direct? :)

  • Aaron
    Administrator
    Ontvangen Reacties
    60
    Berichten
    1.020
    • 4 april 2019 om 08:31
    • #8
    Citaat van FangorN

    Ugh, arrays lijken mij een betere aanpak :p.

    En prijs is in principe informatie die je hebt, dus die hoef je niet te POSTen.

    Anders zou iemand zichzelf een korting kunnen geven :).

    En als je de prijs dan toch uit de database trekt voor een controle, waarom gebruik je die prijs dan niet direct? :)

    prijs heb ik niet. Ik heb geen van de gegevens.
    Dit moet allemaal worden opgegeven.

  • pottink
    Beginner
    Ontvangen Reacties
    1
    Berichten
    4
    • 4 april 2019 om 15:36
    • #9

    Ik zou toch je formulier anders gaan opbouwen en verwerken, dan moet je geen kromme oplossing gebruiken als dat.

    Je form bijvoorbeeld:

    HTML
    <form method="post">
        <table>
            <tr>
                <td>Prijs:</td>
                <td>
                    <input type="number" name="price[1122]" value="123">
                </td>
                <td>Aantal:</td>
                <td>
                    <input type="number" name="quantity[1122]" value="10">
                </td>
            </tr>
        </table>
    </form>
    Toon Meer

    Waarbij 1122 het ID is is dat je uitleest vanuit je database.
    De rows in dat formmulier kan je dynamisch opbouwen met hetgeen je selecteert uit je database.

    Verwerking lees je dan gewoon je $_POST['price'] en je $_POST['quantity'] uit.
    Dit zal een array zijn in deze vorm:

    Code
    [
      1122 => 123,
      2233 => 456,
    ]


    Hierover kan je dan ook itereren:

    PHP
    <?php
    
    
    foreach ($_POST['price'] as $id => $price) {
      // verdere verwerking
    }
  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 5 april 2019 om 12:41
    • #10

    Zoals @Aaron hierboven aangeeft heeft hij geen enkele informatie, dus ook geen product id's ofzo.

    Neemt niet weg dat e.e.a. eenvoudiger kan. Je kunt alle velden die de productdata samenstellen batchgewijs toevoegen. Hierbij voorzie je alle velden van array-haken zonder een specifieke index. Je hebt dan geen JavaScript-constructies of wat dan ook nodig die tellers mee laten lopen. Je kunt simpelweg itereren over een van de productdata-velden en dat dan als index gebruiken om de andere bijbehorende velden aan te spreken. Dus wat @pottink, @D.Oomens en ik al min of meer voorstelden.

    Om toch ten overvloede maar een voorbeeld te geven:

    HTML: productform.htm
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>dynamisch formulier</title>
    <script
      src="https://code.jquery.com/jquery-1.12.4.min.js"
      integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
      crossorigin="anonymous"></script>
    <style type="text/css">
    *               { font-family: sans-serif; }
    .js-product     { font-size: 10pt; margin: 5px 0; }
    </style>
    </head>
    
    
    <body>
    <form action="productform.process.php" method="post">
    <div id="js-productContainer">
    </div>
    <button type="button" id="js-addField">add field</button>
    <button type="submit">go</button>
    </form>
    <script type="text/javascript">
    //<![CDATA[
    $().ready(function() {
        $('#js-addField').click(function(e) {
            e.preventDefault();
            var html =
                '<div class="js-product">\
                    product <input type="text" name="product[]">\
                    cost <input type="text" name="cost[]">\
                    quantity <input type="text" name="quantity[]">\
                </div>';
            $('#js-productContainer').append(html);
        });
    });
    //]]>
    </script>
    </body>
    </html>
    Toon Meer
    PHP: productform.process.php
    <?php
    // debugging functies
    function escape($in) {
        return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
    }
    
    
    function dump($in) {
        if (is_array($in)) {
            $in = print_r($in, true);
        }
        echo '<pre>'.escape($in).'</pre>';
    }
    
    
    // voor correcte output
    header('Content-Type: text/html; charset=UTF-8');
    
    
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        // dump post
        dump($_POST);
        echo '<hr>';
        // itereren over $_POST
        if (isset($_POST['product'])) {
            foreach ($_POST['product'] as $index => $product) {
                $cost = $_POST['cost'][$index];
                $quantity = $_POST['quantity'][$index];
                echo 'product: '.escape($product).', cost: '.escape($cost).', quantity: '.escape($quantity).'<br>';
            }
        } else {
            echo 'no products present...';
        }
    } else {
        echo 'nothing posted...';
    }
    ?>[end]
    Toon Meer

    Je hebt dus behalve voor het interactief toevoegen van velden verder geen enkele JavaScript nodig.

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

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