de prijs uit het gekozen product halen (basis)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hanneke Jansen

hanneke Jansen

27/05/2009 16:31:00
Quote Anchor link
Dit is mijn form:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 &euro; 2,00">Verzendkosten &euro; 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)
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
<?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/>";
}


?>
Gewijzigd op 01/01/1970 01:00:00 door Hanneke Jansen
 
PHP hulp

PHP hulp

05/05/2024 15:50:34
 

27/05/2009 16:39:00
Quote Anchor link
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.
 
Hanneke Jansen

hanneke Jansen

27/05/2009 18:39:00
Quote Anchor link
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?
 

27/05/2009 19:37:00
Quote Anchor link
Nouw, zoiets:
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
<?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 (&euro; %.2f) + %s (&euro; %.2f) = &euro; %.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 (&euro; %.2f) + %s (%s) = &euro; %.2f', $_POST['artikel'], $artikelen[$_POST['artikel']], $_POST['verzendkosten'], $artikelen[$_POST['verzendkosten']], $artikelen[$_POST['artikel']]);
    }

    echo $formatted;
}

else
{
    echo 'Er is wat mis gegaan!';
}

?>
 
Hanneke Jansen

hanneke Jansen

27/05/2009 20:17:00
Quote Anchor link
ah, ik zal er eens mee aan de slag...
 
Hanneke Jansen

hanneke Jansen

28/05/2009 00:05:00
Quote Anchor link
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 Niet Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
Gewijzigd op 01/01/1970 01:00:00 door hanneke Jansen
 
Tim Kampherbeek

Tim Kampherbeek

28/05/2009 01:18:00
Quote Anchor link
Als je gewoon de value even op bijv 10,00 zet. Dan leest die dat ook.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
<select name="artikel">
<
option value="10,00">boom $euro; 10,00</option>
<
/select>
?>


Dan kun je de prijs ophalen doormiddel van:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$_POST
['artikel']
?>


Mvg,

Tim Kampherbeek
 
Hanneke Jansen

hanneke Jansen

28/05/2009 08:15:00
Quote Anchor link
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...
 

28/05/2009 09:15:00
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php // Kleurtjes
$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:
Als je gewoon de value even op bijv 10,00 zet. Dan leest die dat ook.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
<select name="artikel">
<
option value="10,00">boom $euro; 10,00</option>
<
/select>
?>


Dan kun je de prijs ophalen doormiddel van:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$_POST
['artikel']
?>

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php // kleurtjes
echo "10,10" + "10,50";
?>

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.
 
Hanneke Jansen

hanneke Jansen

28/05/2009 10:36:00
Quote Anchor link
ik heb hem nu opgelost in een switch:

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
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;
}


Wat denk je daarvan?
Gewijzigd op 01/01/1970 01:00:00 door hanneke Jansen
 

28/05/2009 10:39:00
Quote Anchor link
Ja, kan ook.
Alleen hoeven die quotes (") niet om de getallen heen te staan. Dat zijn getallen en geen strings ;-).
 
Hanneke Jansen

hanneke Jansen

28/05/2009 10:58:00
Quote Anchor link
ha thanks! ik ga ze eruit halen...
 



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.