de prijs uit het gekozen product halen (basis)
Dit is mijn form:
In het volgende scherm wil ik dat je krijgt te zien wat je hebt besteld en wat de totale kosten hiervan zijn, maar hoe kan ik nou alleen de prijzen eruit halen om op te tellen?
Ik krijg het alleen maar voor elkaar om een compleet artikel op te tellen en dat gaat natuurlijk niet... Nou kan ik wel in de value de tekst weghalen, maar dan kan je niet meer zien wat je besteld had...
Hier mijn PHP
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<select name="artikel">
<option value="boom $euro; 10,00">boom $euro; 10,00</option>
<option value="struik $euro; 10,00">struik $euro; 10,00</option>
<option value="plant $euro; 10,00">plant $euro; 10,00</option>
</select>
<select name="verzendkosten">
<option value="Ophalen gratis!">Ophalen gratis!</option>
<option value="Verzendkosten € 2,00">Verzendkosten € 2,00</option>
</select>
<option value="boom $euro; 10,00">boom $euro; 10,00</option>
<option value="struik $euro; 10,00">struik $euro; 10,00</option>
<option value="plant $euro; 10,00">plant $euro; 10,00</option>
</select>
<select name="verzendkosten">
<option value="Ophalen gratis!">Ophalen gratis!</option>
<option value="Verzendkosten € 2,00">Verzendkosten € 2,00</option>
</select>
In het volgende scherm wil ik dat je krijgt te zien wat je hebt besteld en wat de totale kosten hiervan zijn, maar hoe kan ik nou alleen de prijzen eruit halen om op te tellen?
Ik krijg het alleen maar voor elkaar om een compleet artikel op te tellen en dat gaat natuurlijk niet... Nou kan ik wel in de value de tekst weghalen, maar dan kan je niet meer zien wat je besteld had...
Hier mijn PHP
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$artikel = $_POST['artikel'];
$verzendk = $_POST['verzendkosten'];
$totaal = $artikel+$verzendk;
//een error als er iets fout gaat
if(!$mail->Send()){
echo 'Er ging iets mis tijdens uw bestelling, namelijk:<br/>';
echo $mail->ErrorInfo;
echo 'Neem contact met ons op';
//overzicht en optelsom van de totale bestelling
}else{
echo '<br/><br/>Uw bestelling is:<br/><br/>';
echo $mail->Body;
echo '<br/><br/>';
echo "Uw totale bestelling is: ".$_POST['artikel']." + ".$_POST['verzendkosten']." = $totaal euro<br/>";
}
?>
$artikel = $_POST['artikel'];
$verzendk = $_POST['verzendkosten'];
$totaal = $artikel+$verzendk;
//een error als er iets fout gaat
if(!$mail->Send()){
echo 'Er ging iets mis tijdens uw bestelling, namelijk:<br/>';
echo $mail->ErrorInfo;
echo 'Neem contact met ons op';
//overzicht en optelsom van de totale bestelling
}else{
echo '<br/><br/>Uw bestelling is:<br/><br/>';
echo $mail->Body;
echo '<br/><br/>';
echo "Uw totale bestelling is: ".$_POST['artikel']." + ".$_POST['verzendkosten']." = $totaal euro<br/>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Hanneke Jansen
Je kunt die value van die options best naar wat anders aanpassen. Vast en zeker ook naar de prijs die ze hebben.
En anders ga je met een array's en array_key_exists werken.
En anders ga je met een array's en array_key_exists werken.
Ja dat kan ik inderdaad wel aanpassen, maar dan kan je in het e-mailtje niet zien wat je besteld hebt...
Hoe zou je dat oplossen met een array? voor elk item in de lijst een array met twee regels?
Hoe zou je dat oplossen met een array? voor elk item in de lijst een array met twee regels?
Nouw, zoiets:
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$artikelen = array('Boom' => 10,
'Struik' => 10,
'Plant' => 10,
'Ophalen' => 'Gratis!',
'Verzendkosten' => 2);
// Ja, verzendkosten beschouw ik ook als artikel.
if(array_key_exists($_POST['artikel'], $artikelen) && array_key_exists($_POST['verzendkosten'], $artikelen))
{
// Niet onnodig variable kopieeren, variabele buiten quotes.
if(is_numeric($artikelen[$_POST['verzendkosten']]))
{
$formatted = sprintf('Uw totale bestelling is: %s (€ %.2f) + %s (€ %.2f) = € %.2f', $_POST['artikel'], $artikelen[$_POST['artikel']], $_POST['verzendkosten'], $artikelen[$_POST['verzendkosten']], $artikelen[$_POST['artikel']] + $artikelen[$_POST['verzendkosten']]);
}
else
{
$formatted = sprintf('Uw totale bestelling is: %s (€ %.2f) + %s (%s) = € %.2f', $_POST['artikel'], $artikelen[$_POST['artikel']], $_POST['verzendkosten'], $artikelen[$_POST['verzendkosten']], $artikelen[$_POST['artikel']]);
}
echo $formatted;
}
else
{
echo 'Er is wat mis gegaan!';
}
?>
$artikelen = array('Boom' => 10,
'Struik' => 10,
'Plant' => 10,
'Ophalen' => 'Gratis!',
'Verzendkosten' => 2);
// Ja, verzendkosten beschouw ik ook als artikel.
if(array_key_exists($_POST['artikel'], $artikelen) && array_key_exists($_POST['verzendkosten'], $artikelen))
{
// Niet onnodig variable kopieeren, variabele buiten quotes.
if(is_numeric($artikelen[$_POST['verzendkosten']]))
{
$formatted = sprintf('Uw totale bestelling is: %s (€ %.2f) + %s (€ %.2f) = € %.2f', $_POST['artikel'], $artikelen[$_POST['artikel']], $_POST['verzendkosten'], $artikelen[$_POST['verzendkosten']], $artikelen[$_POST['artikel']] + $artikelen[$_POST['verzendkosten']]);
}
else
{
$formatted = sprintf('Uw totale bestelling is: %s (€ %.2f) + %s (%s) = € %.2f', $_POST['artikel'], $artikelen[$_POST['artikel']], $_POST['verzendkosten'], $artikelen[$_POST['verzendkosten']], $artikelen[$_POST['artikel']]);
}
echo $formatted;
}
else
{
echo 'Er is wat mis gegaan!';
}
?>
ah, ik zal er eens mee aan de slag...
ik kom er toch niet helemaal uit, moet ik de waarden van de artikelen bij gebruik van je voorbeeld zo laten staan als ze nu staan?
'Gelieve:
Gewijzigd op 01/01/1970 01:00:00 door hanneke Jansen
Als je gewoon de value even op bijv 10,00 zet. Dan leest die dat ook.
Dan kun je de prijs ophalen doormiddel van:
Mvg,
Tim Kampherbeek
Code (php)
1
2
3
4
5
2
3
4
5
<?
<select name="artikel">
<option value="10,00">boom $euro; 10,00</option>
</select>
?>
<select name="artikel">
<option value="10,00">boom $euro; 10,00</option>
</select>
?>
Dan kun je de prijs ophalen doormiddel van:
Mvg,
Tim Kampherbeek
ja dat heb ik nu ook, dat werkt prima.
Maar dan weet je dus niet of je boom, struik of plant hebt gekocht want ze zijn alledrie 10 euro...
Maar dan weet je dus niet of je boom, struik of plant hebt gekocht want ze zijn alledrie 10 euro...
'hanneke:
ik kom er toch niet helemaal uit, moet ik de waarden van de artikelen bij gebruik van je voorbeeld zo laten staan als ze nu staan?
De $artikelen array is dus de array waar de prijzen in staan. Als je boom nu 15 euro word dan maak je van die tien die daar staat 15. Meer hoef je niet te doen.
Als je nu een boom 15,50 euro wilt laten kosten, dan verander je die 15 in 15.50 (let op de punt die daar staat).
Wil je d'r een product bij hebben zoals een tuinslag? Dat is gewoon met array's werken, die kan je d'r gewoon tussen stoppen zoals dit:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php // Kleurtjes
$artikelen = array('Boom' => 10,
'Struik' => 10,
'Plant' => 10,
'Tuinslang' => 12,
'Ophalen' => 'Gratis!',
'Verzendkosten' => 2);
?>
$artikelen = array('Boom' => 10,
'Struik' => 10,
'Plant' => 10,
'Tuinslang' => 12,
'Ophalen' => 'Gratis!',
'Verzendkosten' => 2);
?>
Wat ik vaak doe is gewoon één hele regel selecteren, ctrl-c en dan twee keer ctrl-v. Je moet wel even opletten dat het goed komt met de komma's die de items in de array scheid. Elke naam van een product is een key, zo'n getal (of Gratis!) is de value en samen zijn ze een item.
'Tim:
Die waarde wordt dan als integer beschouwd. Dus als je bijvoorbeeld 10,50 + 10,10 hebt, dan krijg je 20 en geen 20.00 of. Want dan wordt er namelijk dit gedaan:
Het is ook nog eens een string, omdat er een komma tussen staat, daarom moet dit wel tussen quotes en die waardes van mij hierboven niet, want dat zijn getallen en geen string.
@TS: Als je niet wilt dat je een punt tussen de getallen hebt, dan zou je ook even naar number_format kunnen kijken.
ik heb hem nu opgelost in een switch:
Wat denk je daarvan?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
switch ($_POST['artikel']){
case "01":
$artikelnaam = "boom";
$artikelprijs = "10.00";
break;
case "02":
$artikelnaam = "struik";
$artikelprijs = "10.00";
break;
case "03":
$artikelnaam = "plant";
$artikelprijs = "10.00";
break;
}
case "01":
$artikelnaam = "boom";
$artikelprijs = "10.00";
break;
case "02":
$artikelnaam = "struik";
$artikelprijs = "10.00";
break;
case "03":
$artikelnaam = "plant";
$artikelprijs = "10.00";
break;
}
Wat denk je daarvan?
Gewijzigd op 01/01/1970 01:00:00 door hanneke Jansen
Ja, kan ook.
Alleen hoeven die quotes (") niet om de getallen heen te staan. Dat zijn getallen en geen strings ;-).
Alleen hoeven die quotes (") niet om de getallen heen te staan. Dat zijn getallen en geen strings ;-).
ha thanks! ik ga ze eruit halen...





