Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP/JSON] A.d.h. van gefilterde variabelen waardes invullen

Pagina: 1
Acties:

  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Met JSON laat ik een array van data doorsturen naar een PHP file waarna ik de verschillende waarden laat zien op een nieuwe pagina. Echter ik loop vast bij een probleem waarbij ik aan de hand van bepaalde waarden, nieuwe variabelen moet laten invullen in het PHP script.

Voor het gemak heb ik het maar even versimpeld.

JQuery bestand stuurt een JSON file door met bepaalde kleuren:

code:
1
Broek: 'groen', tshirt: 'blauw', pet: 'geel'


Aan de hand van deze waarden moet ik het PHP script andere waarden laten invullen:

code:
1
2
3
Kleurbroek: groen
Codebroek: (hier een vaststaande code van groen komen)
Afbbroek: (vaststaande afbeelding van groen komen)


Nu kan ik verschillende manieren gebruiken om dit op te lossen. Ik kan al bij het Javascript bestand deze waarden al direct laten doorsturen.
Ik gebruik PHP om de kleuren te filteren en aan de hand van het bepaalde kledingstuk kan ik dan vaststaande codes gebruiken om de 'Codebroek' en 'Afbbroek' te laten invullen.

Ik wil gaan voor de 2e aanpak, mede al omdat het JS bestand feitelijk af is, in deze vorm, ik kan nu via PHP de waardes laten invullen (lijkt mij).

Ik heb er al over nagedacht en wat ik zou kunnen doen is een array aanmaken en daar alle kledingstukken inzetten. Dan kan ik afgaande op het kledingstuk en de kleur die daarbij hoort de waardes invullen. Maar dit vergt dus feitelijk een hele hoop filteringen die plaatsvinden. Ik kan daar zelf vrij weinig over terugvinden. Of kan ik dit oplossen door een hele andere manier te gebruiken (for loop perhaps?)

[ Voor 6% gewijzigd door The Great HooD op 15-08-2014 13:43 ]


  • Donderpoes
  • Registratie: April 2011
  • Laatst online: 11-05 23:09
Hoe verloopt het volledige proces?

Gebruik je een database, of is het javascript bestand je database?

Het is mij niet helemaal duidelijk wat er nu precies gebeurd en wat je bedoeling is.

  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Het is kort beschreven een Javascript applicatie die uiteindelijk via PHP een mail moet versturen, echter heb ik alleen nog problemen met deze stap.. Er worden alleen dingen opgeslagen op de client zijn computer maar dat is in feite niet van belang toch?

  • Sgreehder
  • Registratie: Juni 2004
  • Laatst online: 20-10 20:31
Zoiets dus?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$kleding = array(
  'broek' => array(
    'groen' => array('code' => null, 'image' => null),
    'blauw' => array( /* ... etc */ ),
  ),
  'pet' => array(
    'geel' => array( /* ... */ ),
  ),
);


$soort = 'broek';
$kleur = 'groen';
$kledingstuk = isset($kleding[$soort][$kleur]) ? $kleding[$soort][$kleur] : false;

// $kledingstuk = array('code' => null, 'image' => null)

  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Hmm, ik denk dat ik het misschien wat beter moet uitleggen, excuus.

Er zijn een x aantal kleuren, laten we de groen, blauw en gele aanhouden. Bij deze kleuren horen een afbeelding en tekst kleur. Deze staan altijd vast. Dus groen heeft bijvoorbeeld:

Code: 5443
Afb. 5443.gif
Tekst: Groen

Ik stuur nu codes door via JSON naar het PHP bestand, met POST kan ik dan die variable gebruiken in dat bestand. Echter komen er dus 2 'hidden' elementen mee, deze zou ik dus eigenlijk moeten koppelen en dan automatisch laten invullen.

  • Sgreehder
  • Registratie: Juni 2004
  • Laatst online: 20-10 20:31
Dus:

PHP:
1
2
3
4
$json = json_decode($_POST['json']);
foreach($json as $kledingstuk => $kleur) {
  /* ... */
}


Zoiets?

  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Sgreehder schreef op zaterdag 16 augustus 2014 @ 21:25:
Dus:

PHP:
1
2
3
4
$json = json_decode($_POST['json']);
foreach($json as $kledingstuk => $kleur) {
  /* ... */
}


Zoiets?
Dit lijkt er denk ik meer op, al probeer ik me nog voor te stellen wat dit doet. Je haalt uit de gehele JSON coderegel voor elk $kledingstuk haal je een bepaalde kleur op. Ik ga er even mee aan de slag, al begrijp ik de code maar half.. :P

[ Voor 58% gewijzigd door The Great HooD op 19-08-2014 11:32 ]


  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Ok, kleine update:

Ik ben inmiddels verder, heb door middel van een switch statement hetgene willen bereiken wat ik wil:

PHP:
1
2
3
4
5
6
7
switch($afbPet)
 case (strstr($afbPet, '4501.gif'):
   $codePet='4501';kleurPet='Groen';
   break;
case (strstr($afbPet, '4502.gif'):
   $codePet='4502';kleurPet='Blauw';
   break;


Echter werkt dit niet. Op dit moment pakt hij de eerste van alle cases die er staan (stuk of 50) ik gebruik strstr omdat het anders niet werkte: case '4501.gif':

Gebruik ik de switch statement niet goed?

  • Sgreehder
  • Registratie: Juni 2004
  • Laatst online: 20-10 20:31
The Great HooD schreef op dinsdag 19 augustus 2014 @ 11:36:
Ok, kleine update:

Ik ben inmiddels verder, heb door middel van een switch statement hetgene willen bereiken wat ik wil:

PHP:
1
2
3
4
5
6
7
8
switch($afbPet) [b]{[/b]
 case (strstr($afbPet, '4501.gif')[b])[/b]:
   $codePet='4501';kleurPet='Groen';
   break;
case (strstr($afbPet, '4502.gif')[b])[/b]:
   $codePet='4502';kleurPet='Blauw';
   break;
[b]}[/b]


Echter werkt dit niet. Op dit moment pakt hij de eerste van alle cases die er staan (stuk of 50) ik gebruik strstr omdat het anders niet werkte: case '4501.gif':

Gebruik ik de switch statement niet goed?
Controleer eerst eens of het werkt als je de vetgedrukte tekens toevoegt.

edit: werkt natuurlijk niet - nouja, je snapt de strekking wel.

[ Voor 4% gewijzigd door Sgreehder op 19-08-2014 11:43 ]


  • Merethil
  • Registratie: December 2008
  • Laatst online: 21:36
The Great HooD schreef op dinsdag 19 augustus 2014 @ 11:36:
Ok, kleine update:

Ik ben inmiddels verder, heb door middel van een switch statement hetgene willen bereiken wat ik wil:

PHP:
1
2
3
4
5
6
7
switch($afbPet)
 case (strstr($afbPet, '4501.gif'):
   $codePet='4501';kleurPet='Groen';
   break;
case (strstr($afbPet, '4502.gif'):
   $codePet='4502';kleurPet='Blauw';
   break;


Echter werkt dit niet. Op dit moment pakt hij de eerste van alle cases die er staan (stuk of 50) ik gebruik strstr omdat het anders niet werkte: case '4501.gif':

Gebruik ik de switch statement niet goed?
kleurPet moet natuurlijk ook $kleurPet zijn, dat sowieso.
En inderdaad je haakjes juist afsluiten zoals Sgreehder zegt in zijn bericht: Je hebt nu een case die z'n haakje opent, daar weer een haakje in opent en daarna maar één haakje sluit...

  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Ik zie het, dit was een zelfgetypt stukje, veel fouten..

Maar in mijn document stond het wel goed:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
switch($afbpet)
    { 
        case (strpos($afbpet,'5001.gif')):
            $codepet = '5001';$kleurpet = 'Effen zwart'; 
            break;
        case (strpos($afbpet,'5003.gif')):
            $codepet = '5003';$kleurpet = 'Effen wit';
            break;
        case (strpos($afbpet,'5006.gif')):
            $codepet = '5006';$kleurpet = 'Effen huidskleur';
            break;
}


Maar ik vind het raar. Ik heb nog zo'n 20 van dit soort switch statements maar die worden allemaal niet uitgevoerd. Lijkt wel alsof 1 zo'n break direct alle switch statements overslaat. Ook heb ik het idee dat zo'n string zoeken in een variable helemaal niet zo gemakkelijk kan als in andere talen.

PHP:
1
2
3
4
if($afbpet == '5006.gif')
{
 //bla bla bla
}


Dit bijvoorbeeld is niet mogelijk 8)7 Tenminste niet in mijn switch statements.

[ Voor 35% gewijzigd door The Great HooD op 19-08-2014 12:46 ]


  • ytterx
  • Registratie: Januari 2009
  • Laatst online: 21-11 00:34
Breek het eens op in een kleinere stukjes,
de waarde
code:
1
$alfpet
wordt nu vergeleken met de uitkomst van
code:
1
strpos($afbpet,'5001.gif')


doe eens een var_dump van beide?

[ Voor 10% gewijzigd door ytterx op 19-08-2014 12:49 ]


  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
Aha, interressant. Hier komt uit:

NULL string(4) "5001" string(11) "Effen zwart"

Dit betekent dus dat hij helemaal geen $afbpet ophaalt, ik haal namelijk met een POST deze variable op vanuit data die een JS bestand mij gestuurd heeft. Het grappige is wel dat hij later waarneer hij de data laat zien (geappend met JS) dat hij dan wel de goede $afbpet geeft...

EDIT: Het lijkt me dat de data wel direct klaar voor gebruik is toch? Of is het zo dat als hij de data pas laat zien het er is? :?

De variable $afbpet laat ik ophalen door middel van POST:

$afbpet = $_POST("pet");

Maar zodra ik een var_dump doe van $afbpet, krijg ik NULL.

Aan het eind van het document doe ik:

PHP:
1
echo 'Pet: '. $afbpet .' is deze afbeelding';


En daar laat hij hem wel goed zien...

[ Voor 36% gewijzigd door The Great HooD op 19-08-2014 13:20 ]


  • ytterx
  • Registratie: Januari 2009
  • Laatst online: 21-11 00:34
Conclusie: Blijkbaar zet je ergens in het document $afbpet goed..
Hint: var_dump van $_POST??

[ Voor 5% gewijzigd door ytterx op 19-08-2014 13:55 ]


  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
ytterx schreef op dinsdag 19 augustus 2014 @ 13:50:
Conclusie: Blijkbaar zet je ergens in het document $afbpet goed..
Hint: var_dump van $_POST??
:')

$abfpet stond er... Dank.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hoe moet zo'n switch überhaupt werken 8)7
leesvoer

[ Voor 48% gewijzigd door .oisyn op 19-08-2014 14:39 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • The Great HooD
  • Registratie: September 2009
  • Laatst online: 13-09-2014
.oisyn schreef op dinsdag 19 augustus 2014 @ 14:38:
Hoe moet zo'n switch überhaupt werken 8)7
leesvoer
Heb ik ook wel doorgenomen allemaal, maar je kunt misschien mijn frustratie begrijpen als je denkt dat alles goed staat, en volgens de regels, maar dat het dan alsnog niet werkt xD

Inmiddels werkt alles :) Hartstikke bedankt voor de hulp iedereen. Uiteindelijk bleek case ($afbpet == '5041.gif') te werken!

[ Voor 13% gewijzigd door The Great HooD op 19-08-2014 17:56 ]


  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 19-10 22:50

xehbit

Zo werkt een switch niet :-)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$invoer = 'hoi';
switch($invoer)
{
    case 'hoi': 
        echo 'A'; 
        break;
    case 'doei':
        echo 'B'; 
        break;
    default:
        echo 'C';
        break;
}
// Antwoord: A

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

The Great HooD schreef op dinsdag 19 augustus 2014 @ 15:32:
[...]

Heb ik ook wel doorgenomen allemaal, maar je kunt misschien mijn frustratie begrijpen als je denkt dat alles goed staat, en volgens de regels, maar dat het dan alsnog niet werkt xD

Inmiddels werkt alles :) Hartstikke bedankt voor de hulp iedereen. Uiteindelijk bleek case ($afbpet == '5041.gif') te werken!
Je snapt dus nog steeds niet hoe een switch werkt. In de case zet je geen vergelijking, je zet er een waarde (of eigenlijk expressie) neer waaraan de expressie waarop je switcht gelijk moet zijn.

Dus niet:
PHP:
1
2
3
4
5
6
7
8
9
switch($a)
{
    case $a == 3:
        // ...
    case $a == 4:
        // ...
    case $a == 5:
        // ...
}

Maar:
PHP:
1
2
3
4
5
6
7
8
9
switch($a)
{
    case 3:
        // ...
    case 4:
        // ...
    case 5:
        // ...
}


De eerste switch zal alleen een case uitvoeren als $a gelijk is aan 0. Wat er dan feitelijk staat is:
PHP:
1
2
3
4
5
6
7
8
9
switch(0)
{
    case 0 == 3:
        // ...
    case 0 == 4:
        // ...
    case 0 == 5:
        // ...
}

Wat zich weer vertaalt in:
code:
1
2
3
4
5
6
7
8
9
switch(0)
{
    case false:
        // ...
    case false:
        // ...
    case false:
        // ...
}

En laat 0 nou gelijk zijn aan false, dus voldoen alle cases.


Een andere manier om het te benaderen, dit:
PHP:
1
2
3
4
5
6
7
8
9
switch($a)
{
    case 3:
        // ...
    case 4:
        // ...
    case 5:
        // ...
}

Betekent eigenlijk dit:
PHP:
1
2
3
4
5
6
if ($a == 3)
    // ...
else if ($a == 4)
    // ...
else if ($a == 5)
    // ...

(op voorwaarde dat je na elke case een break gebruikt overigens).

Dus als jij schrijft:
PHP:
1
2
3
4
5
6
7
8
9
switch($a)
{
    case $a == 3:
        // ...
    case $a == 4:
        // ...
    case $a == 5:
        // ...
}

Staat er eigenlijk dit:
PHP:
1
2
3
4
5
6
if ($a == ($a == 3))
    // ...
else if ($a == ($a == 4))
    // ...
else if ($a == ($a == 5))
    // ...



Ergo, als je het allemaal hebt doorgenomen zoals je zelf zegt en je denkt dat het goed is, en daarna komt iemand met de tip dat je het misschien nog eens moet doorlezen, snap jij de hint dan niet dat wat jij denkt dat goed is in werkelijkheid misschien wel helemaal niet goed is? ;)

[ Voor 25% gewijzigd door .oisyn op 22-08-2014 12:46 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1