Hoe kan ik de elementen van een Associative Array in PHP "posten"?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Steve Bonoo

Steve Bonoo

25/10/2023 10:59:35
Quote Anchor link
Beste E vH en -SanThe-,

Dank je wel voor jullie feedback. Ik ga met jullie opmerkingen aan de slag.

E vH ... ik ben het met je eens. Ik ben bewust niet consequent geweest en is misschien ook slordig, omdat ik met de vorige feedback van jullie alles opnieuw wilde bouwen en/of met een schone lei wilde beginnen om zodoende mijn hoofd leeg te maken en denk ik ook dat ik hier in de fout ben gegaan dat ik niet in de gaten had dat ik met meerdere forms ging werken en dat dit niet bewust mijn bedoeling was geweest, maar inderdaad zoals je zegt om met 1 form te werken. Tot zo ver zie ik dat ik 1 form heb gemaakt (regel 66:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<form action="prijs-factuur.php" method="post">
) , maar ik zal voor mezelf beter nagaan of ik meerdere forms heb gemaakt.

En ja, bij mij is het een kwestie van oefenen, de logica snappen, maar ook bovenal wil ik iets bouwen die ik wil gebruiken voor mijn HAVO leerlingen. Ik heb niet echt een programmeer-achtergrond en heb ik daarom een basiscursus PHP gevolgd en met succes afgerond en wil ik mij meer verdiepen in PHP. Onder andere zoekmachines bouwen, werken met associative arrays, etc. zijn onderwerpen die helaas niet ter sprake zijn gekomen op de cursus. En daarom ben ik ook blij met jullie steun.

Maar goed ... ik ga aan de slag en ga ik eerst proberen te achterhalen waar ik meerdere forms aan het gebruiken ben (omdat ik met een snelle orientatie dat nog steeds niet zie) en denk ik dat dit o.a. het probleem is van alles.
 
PHP hulp

PHP hulp

11/05/2024 11:28:38
 
E vH

E vH

25/10/2023 11:07:28
Quote Anchor link
Het klopt inderdaad dat je hem er maar 1 x fysiek in hebt staan, maar door de (herhaal)lus op de genoemde regels in mijn vorige post ontstaat er nu zoiets:

<form>
...product 1..
</form>
<form>
...product 2..
</form>
<form>
...product 3..
</form>
 
Ivo P

Ivo P

25/10/2023 17:00:52
Quote Anchor link
dus is het zaak om de <form> tag voor je foreach-lus te plaatsen,
en de </form> tag erna.

Daarmee komen al je elementen in 1 groot form terecht
 
Steve Bonoo

Steve Bonoo

25/10/2023 20:58:46
Quote Anchor link
Beste E vH en -SanThe-,

Het is eindelijk gelukt. Ik heb de form aangepast. Het programma werkt goed en ook de aantallen die groter zijn dan 0 worden alleen uitgevoerd, zodat je geen regels krijgt met 0 aankopen, omdat dat niet interessant is en E Vh ben ik het hiermee volkomen met je eens; ik had wat jij had voorgesteld ook uitgevoerd en ging het om de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$array_met_aantallen = array_filter($aantal);
.

E vH en -SanThe-, ik wil jullie ontzettend veel bedanken voor jullie support, adviezen, toelichtingen en alles wat nog te maken had met de obstakels die ik tegenkwam. Voor mij is het een leerproces geweest met af en toe wat stress, maar als ik terugkijk dan was het toch de moeite waard en ik een voldaan gevoel hiervan overgehouden.

ps: Ivo P ook bedankt voor je toelichting.
 
E vH

E vH

26/10/2023 11:19:17
Quote Anchor link
Hi Steve,

Leuk om te zien dat je verder bent gekomen, maar je bent er nog niet.

In je array maak je gebruik van een voorraad waarde, laten we zeggen: 10 stuks voor product X
Try it: bestel er eens 20 ;-), als je een "demo" wilt laten zien.. bouw dat er ook nog in ( of bewust niet en licht het toe).

Ik denk dat je er dan in de regel wel bent... althans qua logica. Onthoud wel dat prijzen, maar ook de productnamen gemanipuleerd kunnen worden in je form en dat hier dus geen verificatie nu in zit. Dit zou je eventueel kunnen oplossen door alleen de betreffende KEY van het product mee te sturen in je form ( hidden field ), en dan met die KEY loop je weer door je array producten heen. Je kan dan zowel de productnaam, als de prijs en voorraad opvragen. Ik zal verder niet inhaken op voorraad aantallen afschrijven na bestellen, ik neem aan dat het voor dit doel niet belangrijk is.

Verder goed bezig! Uit nieuwsgierigheid: wat is eigenlijk het doel voor de leerlingen?
Gewijzigd op 26/10/2023 11:23:00 door E vH
 
Steve Bonoo

Steve Bonoo

26/10/2023 17:07:54
Quote Anchor link
Hallo E vH,

Je hebt groot gelijk. Ik heb helemaal niet eraan gedacht dat wanneer mijn voorraad 20 is voor het product Muis, ik inderdaad niet meer dan 20 kan verkopen en mijn programma berekent toch het bedrag bij een aantal meer dan 20. Dit is dus niet goed. Weer een leuke uitdaging en ga ik hiermee aan de slag.

Het les- of einddoel van de leerlingen is dat ze een programma moeten schrijven voor een handelsonderneming en gebruikmakend van een associative array. Uiteraard kan het ook zonder een associative array, maar ik heb deze keuze gemaakt. De koper moet het aantal opgeven en moet het te betalen bedrag te zien zijn.

Maar nu weet ik dat ik de voorraad moet afhandelen en zoals eerder vermeld ga ik hiermee aan de slag. Bedankt voor de opmerking.
 
Steve Bonoo

Steve Bonoo

29/10/2023 12:50:48
Quote Anchor link
Beste E Vh,

Het is mij gelukt dat wanneer de aantallen groter zijn dan de voorraad, je uiteraard niet kan verkopen en dat is logisch. Je kan niet meer uitgeven dan wat je in je portemonnee hebt, zeg maar! Ik stuur je de code van beide bestanden en kan je zien hoe ik dat heb opgelost en misschien heb je nog suggesties. De twee bestanden zijn prijsberekenenV3.php (het startprogramma) en prijs-factuurV3.php

prijsberekenenV3.php (het startprogramma)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<html>
<head>
    <title>Formulier</title>
</head>
<body style="background-color:lightgreen;">

<?php

$artikelen
= [
            [

                "firstname"        => "John",
                "lastname"       => "Doelaar",
                "middlename"     => "Bray",
                "artikel"        => "Muis",
                "prijs"            => 5,
                "voorraad"         => 50,
            ],
            [

                "firstname"      => "Steve",
                "lastname"      => "Bonoo",
                "middlename"     => "Suniel",
                "artikel"        => "Toetsenbord",
                "prijs"            => 3,
                "voorraad"         => 10
            ],
            [

                "firstname"      => "Carla",
                "lastname"       => "Zonneveld",
                "middlename"     => "Judy",
                "artikel"        => "USB-kabel",
                "prijs"            => 2,
                "voorraad"         => 8
            ],
            [

                "firstname"      => "Hugo",
                "lastname"       => "Kerkraad",
                "middlename"     => "Jos",
                "artikel"        => "Beeldscherm",
                "prijs"            => 25,
                "voorraad"         => 4
            ]
];

?>

<form action="prijs-factuurV3.php" method="post">

<?php
foreach ($artikelen as $key => $product) {
?>


<section>
    <div>
    <h2>
        <?php
        echo "<b>Achternaam: </b>" . $product["lastname"];
        ?>

    </h2>                
    </div>
    <div>
        <?php
        echo "<b>Artikel: </b>" . $product["artikel"];
        ?>
        
    </div>
    <div>
        <?php
        echo "Prijs p/st " . $product["prijs"] . " euro";
        ?>
        
    </div>
        <?php
        echo "Voorraad " . $product["voorraad"];
        ?>
    
    <div>    
    Geef aantal op
    <input type="text" name="aantal[<?php echo $key;?>]" "[<?php echo $product['artikel']?>]" size="5" >
    <!--<input type="text" name="aantal[<?php echo $key;?>]" "[<?php echo $key['artikel']?>]" size="5" > -->
    
    <input type="hidden" name="voorraad[<?php echo $key;?>]" value="<?php echo $product['voorraad'];?>" >    

    <input type="hidden" name="prijs[<?php echo $key;?>]" value="<?php echo $product['prijs'];?>" >
    <!--<input type="hidden" name="prijs[<?php echo $key;?>]" > -->
    
    <input type="hidden" name="artikelnaam[<?php echo $key;?>]" value="<?php echo $product['artikel'];?>" >    
    <!--<input type="hidden" name="artikelnaam[<?php echo $key;?>]"  >    -->
    
    
    <input type="hidden" name="achternaam[<?php echo $key;?>]" value="<?php echo $product['lastname'];?>" >

    <button>Bereken</button>    
    </div>
</section>    
<?php
}
?>

</form>
</body>
</html>



prijs-factuurV3.php
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
40
41
42
<!DOCTYPE html>
<html>
<head>
    <title>Factuur</title>
</head>
<body style="background-color:pink">
<h1>FACTUUR</h1>

<?php
$aantal
= $_POST["aantal"];
$prijs = $_POST["prijs"];
$artikelnaam = $_POST["artikelnaam"];
$voorraad = $_POST["voorraad"];

$array_met_voorraad = array_filter($voorraad);
$array_met_aantallen = array_filter($aantal);

$somTotaal = 0;

foreach($array_met_aantallen as $key => $value){    
    if ($array_met_aantallen[$key] <= $array_met_voorraad[$key]) {
    //$prijs[0] = 10;    dit is indien ik de prijs van Muis wil wijzigen van 5 naar 10 euro.
    echo ''.$value.' stuks van product: '. $artikelnaam[$key].'. Te betalen: &euro; '.($array_met_aantallen[$key]*$prijs[$key]);            
    
    $array_met_voorraad[$key] -=  $array_met_aantallen[$key];
    echo "<br>";
    echo "Nog in voorraad ". $artikelnaam[$key]. " " . $array_met_voorraad[$key];
    echo "<br><br>";
        
$somTotaal += ($array_met_aantallen[$key]*$prijs[$key]);
    }

    else {  
        echo "Voorraad is niet genoeg van product " . $artikelnaam[$key];
        echo "<br><br>";
    }
}

echo "<b>Het totaal te betalen bedrag is " . $somTotaal . " euro</b>";

?>


</body>
</html>
 
- SanThe -

- SanThe -

29/10/2023 13:39:26
Quote Anchor link
Niet slim om de voorraad, artikelnaam en prijs uit het formulier te halen.
Dat kan de bezoeker aanpassen.
Gewijzigd op 29/10/2023 13:42:10 door - SanThe -
 
Steve Bonoo

Steve Bonoo

29/10/2023 13:56:29
Quote Anchor link
Hoi -SanThe-,

Bedankt voor je reactie.
E vH had in zijn vorige/laatste post het erover dat o.a. de prijs en de voorraad gemanipuleerd zou kunnen worden en dat ik in de form alleen de KEY met een "hidden" veld zou kunnen gebruiken. Ik heb het gedaan, maar ik heb alles teruggedraaid omdat alles (lees: de output van het programma) op zijn kop ging. Ik zal vastwel het e.e.a. niet goed hebben gedaan in de codes. in het startprogramma, t.w. prijsberekenenV3.php, zal je zien wat ik o.a. zou wijzigen en van die codes heb ik "commentaar" gemaakt. Van die foreach-loop had ik ook dit gedaan:
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
40
41
42
43
44
<?php
foreach ($artikelen as $key => $product) {
?>


<section>
    <div>
    <h2>
        <?php
        echo "<b>Achternaam: </b>" . $key["lastname"];
        ?>

    </h2>                
    </div>
    <div>
        <?php
        echo "<b>Artikel: </b>" . $key["artikel"];
        ?>
        
    </div>
    <div>
        <?php
        echo "Prijs p/st " . $key["prijs"] . " euro";
        ?>
        
    </div>
        <?php
        echo "Voorraad " . $key["voorraad"];
        ?>
    
    <div>    
    Geef aantal op
    <input type="text" name="aantal[<?php echo $key;?>]" "[<?php echo $product['artikel']?>]" size="5" >
    <!--<input type="text" name="aantal[<?php echo $key;?>]" "[<?php echo $key['artikel']?>]" size="5" > -->
    
    <input type="hidden" name="voorraad[<?php echo $key;?>]" value="<?php echo $product['voorraad'];?>" >    

    <input type="hidden" name="prijs[<?php echo $key;?>]" value="<?php echo $product['prijs'];?>" >
    <!--<input type="hidden" name="prijs[<?php echo $key;?>]" > -->
    
    <input type="hidden" name="artikelnaam[<?php echo $key;?>]" value="<?php echo $product['artikel'];?>" >    
    <!--<input type="hidden" name="artikelnaam[<?php echo $key;?>]"  >    -->
    
    
    <input type="hidden" name="achternaam[<?php echo $key;?>]" value="<?php echo $product['lastname'];?>" >

    <button>Bereken</button>    
    </div>
</section>


Ik ga het nog nakijken.
 
- SanThe -

- SanThe -

29/10/2023 15:15:33
Quote Anchor link
In het formulier heb je alleen dit nodig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="number" name="aantal[<?php echo $key;?>]">

En na het posten doorloop je $_POST['aantal' als key => waarde.
De key is dan het productnummer en de waarde het aantal.
Gewijzigd op 29/10/2023 15:16:45 door - SanThe -
 
Steve Bonoo

Steve Bonoo

29/10/2023 15:23:39
Quote Anchor link
Hi -SanThe-,

Bedankt voor de goede tip en kan ik hiermee gericht te werk gaan.
 
- SanThe -

- SanThe -

29/10/2023 15:33:33
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Aantal <input type="number" style="width:50px" name="aantal[<?php echo $key; ?>]" min="0" max="<?php echo $voorraad; ?>" value="0">

Uit een van mijn vorige posts.
Hier kan je dus niet meer dan de voorraad kopen.
Gewijzigd op 29/10/2023 15:35:29 door - SanThe -
 
E vH

E vH

29/10/2023 15:48:43
Quote Anchor link
- SanThe - op 29/10/2023 13:39:26:
Niet slim om de voorraad, artikelnaam en prijs uit het formulier te halen.
Dat kan de bezoeker aanpassen.



- SanThe - op 29/10/2023 15:33:33:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Aantal <input type="number" style="width:50px" name="aantal[<?php echo $key; ?>]" min="0" max="<?php echo $voorraad; ?>" value="0">

Uit een van mijn vorige posts.
Hier kan je dus niet meer dan de voorraad kopen.


Dit klopt natuurlijk ook niet.. ook deze input (max) kan aangepast worden.
 
- SanThe -

- SanThe -

29/10/2023 15:54:59
Quote Anchor link
Ja maar dat check jij zelf toch na de post.
En als de bezoeker dat doet dan weet ie bij voorbaat dat dat zinloos is.
 
Steve Bonoo

Steve Bonoo

29/10/2023 16:16:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Aantal <input type="number" style="width:50px" name="aantal[<?php echo $key; ?>]" min="0" max="<?php echo $voorraad; ?>" value="0">


Hi -SanThe-,

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".
 
Steve Bonoo

Steve Bonoo

31/10/2023 23:27:02
Quote Anchor link
Beste E vH en -SanThe-,

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
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<html>
<head>
    <title>Aankopen</title>
</head>
<body style="background-color:lightgrey;">

<?php

$artikelen
= [
            [

                "firstname"        => "John",
                "lastname"       => "Doelaar",
                "middlename"     => "Bray",
                "artikel"        => "Muis",
                "prijs"            => 5,
                "voorraad"         => 50,
            ],
            [

                "firstname"      => "Steve",
                "lastname"      => "Bonoo",
                "middlename"     => "Suniel",
                "artikel"        => "Toetsenbord",
                "prijs"            => 3,
                "voorraad"         => 10
            ],
            [

                "firstname"      => "Carla",
                "lastname"       => "Zonneveld",
                "middlename"     => "Judy",
                "artikel"        => "USB-kabel",
                "prijs"            => 2,
                "voorraad"         => 8
            ],
            [

                "firstname"      => "Hugo",
                "lastname"       => "Kerkraad",
                "middlename"     => "Jos",
                "artikel"        => "Beeldscherm",
                "prijs"            => 25,
                "voorraad"         => 4
            ]
];

?>

<form action="prijs-factuurV4.php" method="post">

<?php
foreach ($artikelen as $key => $product) {
?>


<section>
    <div>
    <h2>
        <?php
        echo "<b>Achternaam: </b>" . $product["lastname"];
        ?>

    </h2>                
    </div>
    <div>
        <?php
        echo "<b>Artikel: </b>" . $product["artikel"];
        ?>
        
    </div>
    <div>
        <?php
        echo "Prijs p/st " . $product["prijs"] . " euro";
        ?>
        
    </div>
        <?php
        echo "Voorraad " . $product["voorraad"];
        ?>
    
    <div>    
    Geef aantal op
    <!--<input type="text" name="aantal[<?php echo $key;?>]" "[<?php echo $product['artikel']?>]" size="5" > -->
    Aantal <input type="number" style="width:50px" name="aantal[<?php echo $key; ?>]" min="0" max="<?php echo $voorraad; ?>" value="0">    
    <button>Bereken</button>    
    </div>
</section>    
<?php
}
?>

</form>
</body>
</html>



prijs-factuurV4.php
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<html>
<head>
    <title>Formulier</title>
</head>
<body style="background-color:lightgrey;">

<?php error_reporting (E_ALL ^ E_NOTICE);

$aantal = $_POST["aantal"];
$somTotaal = 0;

$artikelen = [
            [

                "firstname"        => "John",
                "lastname"       => "Doelaar",
                "middlename"     => "Bray",
                "artikel"        => "Muis",
                "prijs"            => 5,
                "voorraad"         => 50,
            ],
            [

                "firstname"      => "Steve",
                "lastname"      => "Bonoo",
                "middlename"     => "Suniel",
                "artikel"        => "Toetsenbord",
                "prijs"            => 3,
                "voorraad"         => 10
            ],
            [

                "firstname"      => "Carla",
                "lastname"       => "Zonneveld",
                "middlename"     => "Judy",
                "artikel"        => "USB-kabel",
                "prijs"            => 2,
                "voorraad"         => 8
            ],
            [

                "firstname"      => "Hugo",
                "lastname"       => "Kerkraad",
                "middlename"     => "Jos",
                "artikel"        => "Beeldscherm",
                "prijs"            => 25,
                "voorraad"         => 4
            ]
];

$array_met_aantallen = array_filter($aantal);

foreach($artikelen as $key => $artikel){    
    echo " Het gekozen artikel is : " . $artikel["artikel"];
    echo "<br>";
    echo "De prijs van het artikel " . $artikel["artikel"] . " is " . $artikel["prijs"];
    echo "<br>";
    
    if ($artikel["voorraad"] >= $array_met_aantallen[$key]) {
        echo "Aantal is: " . $array_met_aantallen[$key];
        echo "<br>";
        echo "Te betalen voor " . $artikel["artikel"] . " " . $array_met_aantallen[$key]*$artikel["prijs"] . " euro";
        echo "<br><br>";
        $somTotaal += ($array_met_aantallen[$key]*$artikel["prijs"]);
    }

    else {
        echo "Er is niet genoeg in voorraad van het product " . $artikel["artikel"];
        echo "<br><br>";
    }    
}

echo "<br>";
echo "<b>Het totaal te betalen bedrag is " . $somTotaal . " euro</b>";
?>


</body>
</html>
 
E vH

E vH

01/11/2023 10:38:42
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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! :-)
Gewijzigd op 01/11/2023 10:40:21 door E vH
 
Steve Bonoo

Steve Bonoo

01/11/2023 13:52:52
Quote Anchor link
Beste E vH,

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.

Toevoeging op 01/11/2023 20:55:35:

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

prijsberekenenV4.php

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<html>
<head>
    <title>Aankopen</title>
</head>
<body style="background-color:lightgrey;">

<?php

$artikelen
= [
            [

                "firstname"        => "John",
                "lastname"       => "Doelaar",
                "middlename"     => "Bray",
                "artikel"        => "Muis",
                "prijs"            => 5,
                "voorraad"         => 50,
            ],
            [

                "firstname"      => "Steve",
                "lastname"      => "Bonoo",
                "middlename"     => "Suniel",
                "artikel"        => "Toetsenbord",
                "prijs"            => 3,
                "voorraad"         => 10
            ],
            [

                "firstname"      => "Carla",
                "lastname"       => "Zonneveld",
                "middlename"     => "Judy",
                "artikel"        => "USB-kabel",
                "prijs"            => 2,
                "voorraad"         => 8
            ],
            [

                "firstname"      => "Hugo",
                "lastname"       => "Kerkraad",
                "middlename"     => "Jos",
                "artikel"        => "Beeldscherm",
                "prijs"            => 25,
                "voorraad"         => 4
            ]
];

?>

<form action="prijs-factuurV4.php" method="post">

<?php
foreach ($artikelen as $key => $product) {
?>


<section>
    <div>
    <h2>
        <?php
        echo "<b>Achternaam: </b>" . $product["lastname"];
        ?>

    </h2>                
    </div>
    <div>
        <?php
        echo "<b>Artikel: </b>" . $product["artikel"];
        ?>
        
    </div>
    <div>
        <?php
        echo "Prijs p/st " . $product["prijs"] . " euro";
        ?>
        
    </div>
        <?php
        echo "Voorraad " . $product["voorraad"];
        ?>
    
    <div>    
    Geef aantal op
    <!--<input type="text" name="aantal[<?php echo $key;?>]" "[<?php echo $product['artikel']?>]" size="5" > -->
    <!-- Aantal <input type="number" style="width:50px" name="aantal[<?php echo $key; ?>]" min="0" max="<?php echo $voorraad; ?>" value="0">-->
    Aantal <input type="number" style="width:50px" name="aantal[<?php echo $key; ?>]" min="0" max="<?php echo $product["voorraad"]; ?>" value="0">

    <button>Bereken</button>    
    </div>
</section>    
<?php
}
?>

</form>
</body>
</html>



prijs-factuurV4.php

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<html>
<head>
    <title>Formulier</title>
</head>
<body style="background-color:lightgrey;">

<?php error_reporting (E_ALL ^ E_NOTICE);

$aantal = $_POST["aantal"];
$somTotaal = 0;

$artikelen = [
            [

                "firstname"        => "John",
                "lastname"       => "Doelaar",
                "middlename"     => "Bray",
                "artikel"        => "Muis",
                "prijs"            => 5,
                "voorraad"         => 50,
            ],
            [

                "firstname"      => "Steve",
                "lastname"      => "Bonoo",
                "middlename"     => "Suniel",
                "artikel"        => "Toetsenbord",
                "prijs"            => 3,
                "voorraad"         => 10
            ],
            [

                "firstname"      => "Carla",
                "lastname"       => "Zonneveld",
                "middlename"     => "Judy",
                "artikel"        => "USB-kabel",
                "prijs"            => 2,
                "voorraad"         => 8
            ],
            [

                "firstname"      => "Hugo",
                "lastname"       => "Kerkraad",
                "middlename"     => "Jos",
                "artikel"        => "Beeldscherm",
                "prijs"            => 25,
                "voorraad"         => 4
            ]
];

$array_met_aantallen = array_filter($aantal);

foreach($artikelen as $key => $artikel){    
    
    
//if ($artikel["voorraad"] >= (int)$array_met_aantallen[$key]) {
    if ($artikel["voorraad"] >= (int)$array_met_aantallen[$key] && (int)$array_met_aantallen[$key] != 0) {
            echo " Het gekozen artikel is : " . $artikel["artikel"];
            echo "<br>";
            echo "De prijs van het artikel " . $artikel["artikel"] . " is " . $artikel["prijs"];
            echo "<br>";
            echo "Aantal is: " . (int)$array_met_aantallen[$key];
            echo "<br>";
            echo "Te betalen voor " . $artikel["artikel"] . " " . $array_met_aantallen[$key]*$artikel["prijs"] . " euro";
            echo "<br><br>";
            $somTotaal += ($array_met_aantallen[$key]*$artikel["prijs"]);
    }

    else {
        //echo "Er is niet genoeg in voorraad van het product " . $artikel["artikel"];
        echo " ";
        echo "<br><br>";
    }    
}

echo "<br>";
echo "<b>Het totaal te betalen bedrag is " . $somTotaal . " euro</b>";
?>


</body>
</html>
 

Pagina: « vorige 1 2



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.