de prijs uit het gekozen product halen (basis)
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
En anders ga je met een array's en array_key_exists werken.
Hoe zou je dat oplossen met een array? voor elk item in de lijst een array met twee regels?
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...
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
Maar dan weet je dus niet of je boom, struik of plant hebt gekocht want ze zijn alledrie 10 euro...
hanneke schreef op 28.05.2009 00:05:
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 Kampherbeek schreef op 28.05.2009 01:18:
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.
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
Alleen hoeven die quotes (") niet om de getallen heen te staan. Dat zijn getallen en geen strings ;-).
ha thanks! ik ga ze eruit halen...