[SQL/PHP] Opslaan van list items

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

  • @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.

    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.

  • 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

    Output

    Dit was mijn spreekbeurt, zijn er nog vragen?

    Bewerkt 2 keer, laatst door M.Beers ().

  • @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 :)

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

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

  • 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 ().

Participate now!

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