• 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

[SQL/PHP] Opslaan van list items

  • WHMCSAddons
  • 14 september 2016 om 11:01
  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    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).

  • cakemasher
    Developer
    Ontvangen Reacties
    2
    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
    Master
    Ontvangen Reacties
    88
    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
                            )
    
    
                    )
    
    
            )
    )
    Toon Meer

    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
    Ontvangen Reacties
    52
    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
    Master
    Ontvangen Reacties
    88
    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
    Ontvangen Reacties
    31
    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'];
    )
    Toon Meer

    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);
    Toon Meer

    Dit was mijn spreekbeurt, zijn er nog vragen?

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

  • WHMCSAddons
    Master
    Ontvangen Reacties
    88
    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
    Ontvangen Reacties
    31
    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
    Master
    Ontvangen Reacties
    88
    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
    Ontvangen Reacties
    31
    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
    Master
    Ontvangen Reacties
    88
    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
    Student
    Ontvangen Reacties
    8
    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
    Ontvangen Reacties
    31
    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?

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