• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  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
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • nieuwe game

    frio 1 november 2026 om 14:08
  • Criminolz

    qevanto 31 oktober 2026 om 20:52
  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09

Marktplaats

  • [Aanbod] Stadskaart voor je browsergame: van menu naar klikbare stad, vanaf €200

    frio 29 oktober 2026 om 18:17
  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22

[SQL/PHP] Opslaan van list items

  • WHMCSAddons
  • 14 september 2016 om 11:01
  • WHMCSAddons
    Meester
    Berichten
    2.411
    • 14 september 2016 om 11:01
    • #1

    Goedemiddag,

    Voor een project van mezelf wil ik gaan werken met een zogenoemde lists tabel die verschillende waardes vast houdt. Deze waardes zijn variabel dus er moet van alles ingezet kunnen worden.

    Tabel opmaak:

    SQL
    -----------------------------------------------------------------------------------
    ID 		parent_id		client		name		value
    -----------------------------------------------------------------------------------
    1 		NULL			1		project		1
    2 		1			1		country		Nederland
    3 		2 			1		iso_code        NL    
    4               2                       1               vat_high        21
    5               2                       1               vat_low         6

    Edit:
    bovenste editor werkt niet goed, een duidelijk inzicht is hier beschikbaar gesteld.


    In bovenstaande voorbeeld wordt dus één land opgeslagen op project ID 1, de land gegevens worden op basis van land opgeslagen omdat die per land ook weer anders is. Zodra ik de gegevens ga bewerken krijg je de volgende (screenshot) output, die klopt dus verder gewoon.

    Screen HTML opmaak:


    Nu wil ik deze gegevens ook weer opslaan zoals ze bekend zijn, hierop loop ik echter even vast en heb even geen idee hoe ik dit zou moeten doen. Iemand aanwezig die mij in de juiste richting kan wijzen voor de juiste wijze ?

    Bewerkt één keer, laatst door WHMCSAddons (14 september 2016 om 11:08).

  • Gast, wil je besparen op je domeinnamen? (ad)
  • cakemasher
    Developer
    Berichten
    225
    • 14 september 2016 om 14:50
    • #2

    Misschien een optie om alles in één row te plaatsen in de database? Dan zou je zo iets krijgen:
    https://codeshare.io/fbfED


    Als je dat niet wilt, zou je eventueel in je POST velden een array kunnen maken, eventueel met een hidden veld.

    <input type="hidden" name="project[]" value="1">
    <input type="text" name="landnaam[]" value="Nederland">
    <input type="text" name="isocode[]" value="NL">
    etc...

  • WHMCSAddons
    Meester
    Berichten
    2.411
    • 14 september 2016 om 14:55
    • #3

    @cakemasher
    Bedankt voor je feedback, het is de bedoeling dat deze tabel variabel blijft. Ik wil hier dus later meerdere instellingen aan toevoegen zodat de tabel compact blijft.

    Je 2e zal niet gaan werken, project 1 is namelijk alleen de parent_id voor de landnaam, vanuit landnaam krijg je sub-instellingen. Onderstaande voorbeeld is een idee wat ik krijg aan waarde.

    Diff
    Array
    (
        [2] => Array
            (
                [ID] => 2
                [PID] => 1
                [name] => countries
                [value] => Nederland
                [parent_id] => Array
                    (
                        [3] => Array
                            (
                                [ID] => 3
                                [parent_id] => 2
                                [name] => vat_low
                                [value] => 6
                            )
    
    
                        [4] => Array
                            (
                                [ID] => 4
                                [parent_id] => 2
                                [name] => vat_high
                                [value] => 21
                            )
    
    
                        [11] => Array
                            (
                                [ID] => 11
                                [parent_id] => 2
                                [name] => isocode
                                [value] => NL
                            )
    
    
                    )
    
    
            )
    )
    Meer tonen

    Deze array moet in principe weer op dezelfde manier ingevoerd/bijgewerkt worden, maar er is een mogelijkheid dat er nieuwe waardes tussen zitten dus ik moet hier ook rekening mee houden.

  • Patrick
    Back in the game
    Berichten
    1.417
    • 14 september 2016 om 21:25
    • #4

    Ik zou het omzetten naar een JSON line en opslaan in de database,
    later als je de lijst weer op opslaan JSON omzetten naar array en vullen.

    JSON_ENCODE(): http://php.net/manual/en/function.json-encode.php
    JSON_DECODE(): http://php.net/manual/en/function.json-decode.php

    Een html list vullen vanuit een array is een vrij simpel klusje.

  • WHMCSAddons
    Meester
    Berichten
    2.411
    • 15 september 2016 om 09:12
    • #5

    @Patrick
    Die oplossing had ik in principe ook eerst in gedachte, hoopte dat het wat makkelijker kon maar het is helaas niet anders :)

    Bedankt voor het meedenken!

  • M.Beers
    Elite members
    Berichten
    460
    • 15 september 2016 om 09:21
    • #6

    Waar staan alle velden voor en wat wil je ermee bereiken? Want zoals je het nu uitlegt kan ik geen touw aan vastknopen sorry...

    Is het de bedoeling dat je gewoon een lijst met opties krijgt per project als in een array met meerdere dimensies?

    Edit: Ik denk dat je dit zoekt... Onderstaande code haalt eigenlijk alle data op, je kan nu gewoon je tabel gewoon vullen met alle "meta" data en parent_id aanpassen tijdens het ophalen van de lijst...

    SQL-query

    SQL
    SELECT ID, client, parent_id, name, value FROM list ORDER BY parent_id, name


    Data vullen

    PHP
    <?php
    // prepare special array with parent-child relations
    $listData = array(
        'items' => array(),
        'parents' => array()
    );
    
    
    while ($item = mysql_fetch_assoc($result))
    {
        $listData['items'][$item['ID']] = $item;
        $listData['parents'][$item['parent_id']][] = $item['ID'];
    )
    Meer tonen

    Output

    PHP
    <?php
    // menu builder function, parentId 0 is the root
    function buildList($parentId, $menuData)
    {
        $html = '';
    
    
        if (isset($listData['parents'][$parentId]))
        {
            $html = '<ul>';
            foreach ($listData['parents'][$parentId] as $itemId)
            {
                $html .= '<li>' . $listData['items'][$itemId]['name'];
    
    
                // find childitems recursively
                $html .= buildList($itemId, $listData);
    
    
                $html .= '</li>';
            }
            $html .= '</ul>';
        }
    
    
        return $html;
    }
    
    
    // output the list
    echo buildList(0, $listData);
    Meer tonen

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt 2 keer, laatst door M.Beers (15 september 2016 om 09:37).

  • WHMCSAddons
    Meester
    Berichten
    2.411
    • 15 september 2016 om 13:49
    • #7

    @M.Beers
    Het ophalen werkt al prima, heb hier geen problemen mee. Ging mij meer om het opslaan, normaal gesproken wil ik hier en daar nog wel eens handmatig dingen toevoegen. Dat kan met een json string niet zo snel/makkelijk, vandaar dat ik alles liever los wilde hebben.

    Voor wat ik nu begrijp bestaat hier eigenlijk geen simpele oplossing voor, ga dus toch kiezen voor een json string die op de exact dezelfde manier ophaalt en ook weer bijgewerkt kan worden. Scheelt niet alleen tijd (wat beperkt is) maar ik had hier al een stukje voor geschreven als back-up dus is een kwestie van omzetten.

    Kan dit altijd nog omzetten naar losse onderdelen, de json string werkt voor nu gewoon even makkelijker en is zo geïmplementeerd. Jou manier van opbouw brengt me wel weer op ideeën voor een menu die ik hierop kan indelen, is dus niet voor niks geweest :)

  • M.Beers
    Elite members
    Berichten
    460
    • 19 september 2016 om 07:47
    • #8

    Het is inderdaad een JSON string of inderdaad groeperen op parent_id. Maar als je twee goeie functies schrijven voor het ophalen en wegschrijven van je data boeit het toch niet of je een JSON string gebruikt ;) je wilt uiteindelijk een Array wegschrijven of ophalen met data.

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • WHMCSAddons
    Meester
    Berichten
    2.411
    • 19 september 2016 om 09:19
    • #9
    Citaat van M.Beers

    Het is inderdaad een JSON string of inderdaad groeperen op parent_id. Maar als je twee goeie functies schrijven voor het ophalen en wegschrijven van je data boeit het toch niet of je een JSON string gebruikt ;) je wilt uiteindelijk een Array wegschrijven of ophalen met data.

    Volledig met je eens, heb alleen vaak snel de neiging iets handmatig in de database te wijzigen. Moet het mezelf maar eens aanleren dit gewoon via de pagina zelf te doen :)

  • M.Beers
    Elite members
    Berichten
    460
    • 19 september 2016 om 09:36
    • #10

    Dan is mijn methode makkelijker, ik weet alleen niet wat de verschillende methoden met de performance doen voor de server etc. alleen dat JSON maar tot 127 elementen diep gaat

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • WHMCSAddons
    Meester
    Berichten
    2.411
    • 19 september 2016 om 13:38
    • #11
    Citaat van M.Beers

    Dan is mijn methode makkelijker, ik weet alleen niet wat de verschillende methoden met de performance doen voor de server etc. alleen dat JSON maar tot 127 elementen diep gaat

    Naar mijn weten is de serialize() functie ook sneller, vanaf PHP 7 nog sneller dan in PHP 5 volgens verschillende benchmark tests.

  • MOnkNL
    Leerling
    Berichten
    69
    • 19 september 2016 om 21:35
    • #12

    Ik denk dat dit is naar wat je ongeveer zoekt:

    HTML gedeelte

    HTML
    <input type="hidden" name="id[]" value="1"/>
    <input type="text" name="country[]" value="Nederland"/>


    PHP
    <?php
    foreach($_POST['id'] as $index => $value){
       $input_id = $_POST['id'][$index];
       $input_country = $_POST['country'][$index];
     ////etc;
    //Dan bouw je vanuit hier 1 query of meerdere net wat je wilt. 
    }
    ?>


    //Uitleg


    //Omdat input array ombouwt door gebruik van: name[] krijg je niet zoals je zou willen index : inputs . Maar je krijg input[index] dus om waarde te krijgen van je eerste rij moet je alle inputs met index 1 krijgen. van daar de foreach($_POSt['id'] as $index => $value). Het draait namelijk om de index die erbij hoort om zo de rest van je data goed te 'verzamelen'.

    Nu moet je natuurlijk wel validatie toevoegen etc maar denk dat dit ongv is wat je zoekt.

    Ik hoop dat ik het zo begrijpelijk uitleg.

    The law is what I write down on paper

    Bewerkt één keer, laatst door MOnkNL (19 september 2016 om 21:42).

  • M.Beers
    Elite members
    Berichten
    460
    • 22 september 2016 om 08:09
    • #13

    @MOnkNL, dit antwoord is al gegeven. De vraag gaat meer richting de "manier" van opslaan niet HOE je het opslaat (json_encode, serialize, parent_ids etc).

    Dit was mijn spreekbeurt, zijn er nog vragen?

Registratie

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

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

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. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design