Hoe kan ik deze array aanpassen naar wat ik wil

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Senior DevOps-ontwikkelaar eIDAS

Functie­omschrijving Burgers en bedrijven veilig en betrouwbaar digitaal toegang geven tot diensten en producten van het ministerie van Economische Zaken en Klimaat. Als senior DevOps-ontwikkelaar bouw je daar letterlijk aan mee. En dat doe je bij DICTU: een van de grootste en meest vooruitstrevende ICT-dienstverleners van de Rijksoverheid. Jij werkt mee aan de doorontwikkeling van eIDAS, dat staat voor Electronic IDentification Authentication and trust Services. Deze koppeling maakt de grensoverschrijdende authenticatie op overheidswebsites binnen de Europese Unie mogelijk. Het ministerie van Economische Zaken en Klimaat heeft één moderne toegangspoort voor zijn diensten en inspecties. Enkele daarvan zijn dankzij eIDAS inmiddels

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Technisch Ontwerper / Applicatie Ontwikkelaar

Technisch Ontwerper / Applicatie Ontwikkelaar Actief Wat ga je doen? Als Technisch Ontwerper / Applicatie Ontwikkelaar kom je te werken bij onze gerenommeerde klanten op projecten of opdrachten van omvang en formaat. Je bent verantwoordelijk voor het omzetten van functionele specificaties naar een technisch ontwerp, het ontwerp van programmaspecificaties voor toepassingen, de realisatie van (gewijzigde) programmaonderdelen en databestanden van toepassingen en de technische systeemtest van applicatietoepassingen. Daarnaast geef je vorm aan webpagina’s en applicaties, stel je gebruikersdocumentatie op en verleen je ondersteuning bij het oplossen van productiefouten. Tevens ben je verantwoordelijk voor het samenstellen en onderhouden van de applicatie c.q.

Bekijk vacature »

Snelle Jaap

Snelle Jaap

19/12/2018 13:19:06
Quote Anchor link
Ik heb een script waarmee ik een lijst kan toevoegen, binnen die lijst kan een gebruiker categorieen toevoegen en binnen elke categorie weer vragen.

Dat werkt allemaal prima, dit is hoe een voorbeeld array er uit ziet waarmee ik data in de database stop:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Array
(
    [Category 1] => Array
        (
            [0] => Question 1
            [1] => Question 2
        )

    [Category 2] => Array
        (
            [0] => Question 1
        )

    [Category 3] => Array
        (
            [0] => question 1
        )

)


Maar nu moet ik ook een sorteer volgorde toevoegen in de database (ik kan elementen sorteren met jQuery sort).

De hele lijst is een formulier die ik serialize:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$lijst = $( '#lijstform' ).serializeArray();


Die data stuur ik weer door naar mijn PHP script met Ajax.

Vervolgens doe ik dit in PHP om bovenstaande array ($store) te krijgen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?PHP
$arr
= $_POST['lijst'];

// pull off first arr element which is the list name
$title = array_shift($arr);

foreach($arr as $a) {
  $val = $a['value'];
  // handle category
  if($a['name'] == 'category[]') {
    // save cat name
    $currCat = $val;
    // init questions array
    $store[$currCat] = [];
  }
else {
    // add question to question array
    $store[$currCat][] = $val;
  }
}

?>


Dit werkte allemaal prima voordat er een sorteervolgorde bij moest. Maar nu die ook wordt meegestuurd is dit hoe mijn array er bijvoorbeeld uit ziet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Array
(
    [Category 1] => Array
        (
            [0] => Question 1
            [1] => Question 2
            [2] => 1
        )

    [Category 2] => Array
        (
            [0] => Question 1
            [1] => 2
        )

    [Category 3] => Array
        (
            [0] => question 1
            [1] => 3
        )

)


Zoals je ziet wordt de sorteervolgorde samen met de vraag onder elke categorie gestopt. Ik kan nu dus in mijn PHP script geen onderscheid maken tussen de twee, wanneer ik een lijst opsla wordt de volgorde als vraag opgeslagen in mijn database.

Eigenlijk zou ik de sorteervolgorde dus niet als oplopende key willen zien maar met een naam zoals [sortorder] zodat ik met een

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?PHP
echo $store[Category 1][sortorder];
?>


als resultaat gewoon 1 zie.

Hoe kan ik dat het beste doen?

Een categorie zou er dan zo uit komen te zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
[Category 1] => Array
        (
            [0] => Question 1
            [1] => Question 2
            [sortorder] => 1
        )



Dit is mijn array zoals die gepost is naar mijn PHP script, dit is dus hoe hij binnenkomt zonder dat ik nog een aanpassing heb gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Array
(
    [0] => Array
        (
            [name] => sortorder
            [value] => 2
        )

    [1] => Array
        (
            [name] => category[]
            [value] => gsdg
        )

    [2] => Array
        (
            [name] => question[]
            [value] => dsgsdgsd
        )

    [3] => Array
        (
            [name] => sortorder
            [value] => 1
        )

    [4] => Array
        (
            [name] => category[]
            [value] => sdfgsd
        )

    [5] => Array
        (
            [name] => question[]
            [value] => sdgsd
        )

)
Gewijzigd op 19/12/2018 13:36:38 door Snelle Jaap
 
PHP hulp

PHP hulp

22/09/2020 11:56:15
 
Thomas van den Heuvel

Thomas van den Heuvel

19/12/2018 18:56:23
Quote Anchor link
Maar wat betekent die sortorder dan precies? Ik denk dat je het jezelf onnodig moelijk maakt. Als je nu gewoon zorgt dat alles op volgorde staat voordat je submit, dan kun je toch gewoon van boven naar beneden door de lijst heen?

En als je van de elementen een type bijhoudt (categorie, vraag, whatever) dan kun je tevens tellers mee laten lopen die de volgorde tijdens de verwerking voor je uitrekenen zodat je die kunt opslaan, en op een later moment ook kunt hergebruiken om zo'n lijst bij te werken.

Er zal dan wat meer werk zitten in het opzetten van een dynamisch formulier zodat alles in de goede volgorde de deur uitgaat, maar dat lijkt me een stuk minder complex dan wat je hier probeert te doen. Eerlijk gezegd begrijp ik dat ook niet goed, geen idee hoe ik die sortorder moet interpreteren :p.
 
Snelle Jaap

Snelle Jaap

21/12/2018 11:58:43
Quote Anchor link
Ik heb het al opgelost, dacht inderdaad te moeilijk.
 
- Ariën -
Beheerder

- Ariën -

21/12/2018 15:47:13
Quote Anchor link
En wat was de oplossing dan? Die van Thomas? ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.