Haal getal af van value wanneer specifieke key in twee arrays gelijk is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Informatieanalist - Oracle Softwareontwikkelaar

Enthousiaste en ervaren informatieanalist / softwareontwikkelaar gezocht!! Houdt jij van technische uitdagingen en krijg jij energie van het ontwerpen en realiseren van de beste software-oplossingen voor de dienstverlening? Dan is deze functie wellicht voor jou weggelegd! Het betreft een functie waarbij je, afhankelijk van het project samenwerkt met meerdere disciplines binnen ICT, vertegenwoordigers vanuit alle afdelingen in de organisatie, externe klanten en leveranciers. Je vertaalt de functionele vraag in technische oplossingen en realiseert deze. Afhankelijk van het type project of change geschiedt dit binnen de daarbij passende methodiek: Modern agile/scrum op basis van DevOps-gedachtengoed of traditioneel waterval. Wat zijn je

Bekijk vacature »

PHP Developers gezocht die van complexe online vra

Vacature Omschrijving Een grote klant is opzoek naar enthousiaste PHP developers (junior/medior/senior). De organisatie waar jij komt te werken ontwikkelt en bouwt succesvolle oplossingen voor complexe online vraagstukken zoals performance, usability en conversion. Daarnaast zorgen zij voor externe systemen ingericht voor productbeheer, point-of-sales en voorraadbeheer koppelt de organisatie probleemloos aan op eigen Magento gebaseerde webshops. Het is een informele organisatie waar de communicatielijnen kort zijn. Functieomschrijving Met drupal 8 of ShopWare realiseert de organisatie prachtige frond-ends op dynamische data uit allerlei systemen. Je houdt je in deze organisatie bezig met het ontwerpen, ontwikkelen en beheren van functionaliteiten van de applicaties

Bekijk vacature »

Snelle Jaap

Snelle Jaap

14/06/2019 09:30:15
Quote Anchor link
Ik heb twee arrays voor een webshop, de ene array bevat order informatie en de andere array bevat de maten van het product en hoeveel er van elk product zijn. Voorbeeld:

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
Array
(
    [productId] => 3
    [productname] => Test product 2
    [quantity] => 2
    [price] => 4500
    [extra] => M
    [description] => Kleding
    [vatCode] => H
)


Array
(
    [maten0] => Array
        (
            [One-Size] =>
            [XS] =>
            [S] =>
            [M] => 20
            [L] =>
            [XL] =>
            [XXL] =>
        )

)


De maten0 array heb ik nu voor het gemak even omgevormd naar een array maar in mijn database staat het opgeslagen als json object. Ik wil graag dat bij onderstaande array 2 van [M] wordt afgehaald omdat in de bovenste array staat dat er bij de bestelling een quantity van 2 is gekocht met maat M (key 'extra').

Via de volgende code krijg ik bovenstaande arrays:

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
<?PHP
foreach($prodinfojson as $prodinfo){
  if(!empty($prodinfo['extra'])){
    $extra = ' - '.$prodinfo['extra'];
  }


  //Get stock and sizes
  $getstock = 'SELECT * FROM snm_fields_values WHERE item_id = "'.$conn->real_escape_string($prodinfo['productId']).'" AND field_id = 8';
  $getstockcon = $conn->query($getstock);
  $getstock = $getstockcon->fetch_assoc();

  $getstock = json_decode($getstock['value'], true);

  echo '<pre>';
  print_r($prodinfo);
  echo '</pre>';


  echo '<pre>';
  print_r($getstock);
  echo '</pre>';
  
}

?>


Ik moet dus het json object omzetten naar een php array wat ik nu al doe, daar de stock updaten door het aantal dat is besteld bij de juiste maat eraf te halen, dan de array terugzetten naar een json object en die updaten in mijn database. Dit is hoe het is opgeslagen in mijn database: {"maten0":{"One-Size":"","XS":"","S":"","M":"20","L":"","XL":"","XXL":""}}

Het meeste hiervan lukt me wel alleen heb ik wat problemen met het aftrekken van de maat. Hoe kan ik dat op de juiste manier doen? In de array mag de stock ook niet beneden de 0 gaan.
Gewijzigd op 14/06/2019 09:30:37 door Snelle Jaap
 
PHP hulp

PHP hulp

21/10/2019 03:17:36
 
Rob Doemaarwat

Rob Doemaarwat

14/06/2019 09:58:38
Quote Anchor link
Je kunt je ding doen op de $getstock, en dan met json_encode() de boel weer terugschrijven in de database. Maar weet je zeker dat je dit zo op wilt slaan in een database!? Als je de beschikbare maten/aantallen gewoon in een losse tabel plaatst is de boel een stuk overzichtelijker en kun je gewoon in de database rekenen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
update tabel_maten set aantal = aantal - 2 where item_id = 5 and maat = 'M'

Als er nu twee bestellingen tegelijk lopen kan het zijn dat de ene de wijziging van de ander overschrijf, en klopt je voorraad niet meer:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
klant1 haalt JSON data op (aantal = 20)
                                        klant2 haalt JSON data op (aantal = 20)
klant1 past aantal aan (aantal = 18)
                                        klant2 past aantal aan (aantal = 19)
klant1 slaat op (aantal = 18)
                                        klant2 slaat op (aantal = 19)

3 stuks verkocht, slechts 1-tje uit de voorraad verdwenen ...
 
Snelle Jaap

Snelle Jaap

14/06/2019 10:07:23
Quote Anchor link
Klopt inderdaad, daar zal ik iets op moeten verzinnen.

Een losse tabel is misschien beter maar ik zit een beetje vast aan hoe het CMS waarmee ik werk de data opsla. Het lijkt me het beste om niet te sleutelen aan de basis van dat CMS.
Gewijzigd op 14/06/2019 10:08:11 door Snelle Jaap
 
Thomas van den Heuvel

Thomas van den Heuvel

14/06/2019 17:24:18
Quote Anchor link
En daarvoor heb je database-transacties :p.

EDIT: en wat @Rob aanhaalt, het lijkt mij ook beter om je database niet zodanig in te richten dat hier nog versleutelde informatie in zit die je nog uit moet pakken om dingen uit te kunnen rekenen, dat is (in dit geval) niet handig.

Ook zou je onderscheid kunnen maken tussen een bepaald product"type" (Hawaii t-shirt) en de uitvoeringen daarvan (maat M, X, XL, XXL, kleur rood, groen, blauw et cetera). Dit laatstgenoemde ding zijn in wezen je fysieke producten (unieke productconfiguraties), en daarvan zou je een voorraad bij moeten houden.
Gewijzigd op 14/06/2019 19:27:19 door Thomas van den Heuvel
 



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.