Hoe kan ik de elementen van een Associative Array in PHP "posten"?
Door
Steve Bonoo
op 15-10-2023 14:57
gewijzigd op 15-10-2023 16:29
4.843 views
Beste allemaal,
Wie zou mij kunnen helpen met mijn programma? Ik heb een zoekmachine gebouwd en heb ik hiervoor een associative array gebruikt en dat werkt prima (producten.php). De zoektermen heb ik vastgelegd in $producten["tags"], zie het programma hieronder wat ik heb geschreven.
Echter, wanneer ik "Aantal" invul en op de knop "Koop nu" klik krijg ik deze foutmelding in het bestand "factuur.php": Notice: Undefined variable: product.
Kortom: het lukt mij niet om de varaiabelen c.q. de elementen te posten van producten.php naar factuur.php. Hieronder de codes van beide bestanden.
Dat klopt dat je mij in jouw vorige posts bovenstaande code had gestuurd en waarbij het maximaal op te geven aantallen opgevangen wordt met min en max. Deze code ga ik hergebruiken. Ik vergeet soms de goede tips van jou en van A Vh van jullie vorige posts, doordat ik mij helemaal focus op het "nu".
Ik heb er dit van gemaakt. De aantallen en berekeningen kloppen allemaal. Echter lukt het mij niet dat, wanneer "aantal" 0 is, ik niets wil zien van het artikel en het tegenstrijdig is dat er staat "Het gekozen artikel is (bijvoorbeeld) Beeldscherm, etc.. Verder heb ik bij regel 7 in het bestand "prijs-factuurV4.php" een error-afhandeling gedaan om bij uitvoer van het programma niet van die irritante notities te zien, wanneer "aantal" 0 is.
prijsberekenenV4.php, regel 74:
$voorraad veranderen naar $product["voorraad"], $voorraad bestaat namelijk niet en is dus leeg.
prijs-factuurV4.php
op regel 54 doe je deze vergelijking:
if ($artikel["voorraad"] >= $array_met_aantallen[$key]) {
Wat je nu doet is een INTEGER vergelijken met een STRING. $array_met_aantallen[$key] kun je integer maken door de code aan te passen naar:
if ($artikel["voorraad"] >= (int)$array_met_aantallen[$key]) {
Regel 55: idem, maak er een integer van, je zal merken dat een waarde die "leeg" ( dus niet opgegeven ).. nu een cijfer 0 weergeeft.. ipv alleen Aantal is: ...(leeg)...
Om terug te komen op je vraagstelling: "Echter lukt het mij niet dat, wanneer "aantal" 0 is, ik niets wil zien van het artikel"
Geef dan een extra conditie aan je if op regel 54:
if ($artikel["voorraad"] >= (int)$array_met_aantallen[$key] && (int)$array_met_aantallen[$key] != 0) {
Met een beetje rommelen.. zal je nu een stapje verder komen, wederom succes! :-)
Keer op keer motiveer je mij. Ik ben erg blij met jouw bevindingen en adviezen en ga ik hiermee, zoals je dat zegt om een beetje te rommelen, aan de slag. Dank je wel.
[size=xsmall]Toevoeging op 01/11/2023 20:55:35:[/size]
Beste E vH,
Ik heb de aanpassingen die je had voorgesteld, gedaan. Vervolgens heb ik regel 64 vervangen door regel 65, t.w. "leeg" (echo " ";), omdat je toch niet meer kan kiezen dan er in voorraad is van een artikel (max). Ook laat regel 65, indien "aantal" 0 is, niets zien van dat artikel en dat is zoals je in een eerdere post had gezegd dat het niet interessant is om nog informatie te zien als er niets wordt gekocht.
Ook heb ik dus regel 49 t/m 52 geplaatst in de if-lus bij regel 52 in de nieuwe situatie. Zie hieronder de nieuwe situatie. Ik ga hiermee verder en ga ik dit programma koppelen aan een database (in PHPMyAdmin, DirectAdmin) en is de cirkel af en kan ik mijn lesplannen voor zowel mijn havo als vwo-leerlingen gaan schrijven.
E vH bedankt voor alles en heb ik veel van je geleerd. De basiscursus PHP die ik heb gevolgd gaf mij geen voldoening en uitdagingen meer en daarom wilde ik verder gaan en o.a. dank zij jou heb ik mijn kennis kunnen uitbreiden. Ook weet ik dat ik er nog niet ben, omdat er nog veel te leren is, maar ik heb in elk geval een begin gemaakt. Nogmaals bedankt voor je support. Als ik in de toekomst weer tegen iets aanloop dan zal ik je weer benaderen :)