Totaalbedrag leegmaken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Krist Ensing

Krist Ensing

03/05/2013 09:17:42
Quote Anchor link
Ik ben bezig met het bouwen van een webshop. Hierbij wil ik het totaalbedrag van bestelde producten weergeven. Dit doe ik door de variabele $Subtotaal aan te maken met de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$strSQL
= "select SUM(Aantal*Prijs) as Subtotaal from tblorderregels
       join tblorder using (Ordernummer)
       where tblorder.SessieId = '$SessieId'"
;

$rs = mysql_query($strSQL, $db);
if (!$rs) {
die("de SQL opdracht is fout<br>" . $strSQL);
}

$r = mysql_fetch_array($rs);
mysql_freeresult($rs);
$Subtotaal = $r["Subtotaal"]    ;
?>


Als ik een nieuwe sessie begin door een andere browser te gebruiken, of door de brouwser opnieuw te starten, staat er altijd nog het laatst opgetelde totaalbedrag in, totdat ik een nieuw product bestel, dan begint hij pas een nieuwe berekening te maken.

Hoe komt het dat de variabele niet leeg is en hoe kan ik hiervoor zorgen?
 
PHP hulp

PHP hulp

01/03/2025 05:02:17
 
Marvin H

Marvin H

03/05/2013 09:52:16
Quote Anchor link
Het ziet er naar uit dat er wat caching achter blijft in de browser die je gebruikt... je kan eventueel caching uitschakelen met META code in je <head>
 
Krist Ensing

Krist Ensing

03/05/2013 10:09:28
Quote Anchor link
Hoe ziet zo'n meta code er dan uit?


Toevoeging op 03/05/2013 10:13:36:

Ik heb <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> in de head gezet, maar dit doet niks.


Toevoeging op 03/05/2013 10:18:00:

En ook als ik de geschiedenis en het cachegeheugen van de browser volledig wis, blijft er een bedrag instaan.
Dus ik vraag me af of het wel het cashegeheugen is.
 
Wouter J

Wouter J

03/05/2013 10:23:06
Quote Anchor link
Je zegt dat je van browser verwisselt? Dan kan het geen caching zijn. Het moet iets in je script/site zijn.
 
Krist Ensing

Krist Ensing

03/05/2013 10:28:16
Quote Anchor link
Ik heb zelf het idee dat hij het totaalbedrag laat zien, van het laatst aangemaakte ordernummer. Hierbij de hele code van de 'winkelwagen':


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
                                            <?php

$SessieId
= (session_id());          
            $strSQL = "select *  from tblartikelen, tblorderregels, tblorder
                        where tblorder.Ordernummer = tblorderregels.Ordernummer
                        and tblorderregels.Artikelnummer = tblartikelen.Artikelnummer
                        and tblorder.SessieId = '$SessieId'"
;
                        $rs = mysql_query($strSQL, $db);
                        if (!$rs)    
        die("agenda.php: de SQL opdracht is fout<br>" . $strSQL);
    
    // Haal alle records 1 voor 1 op zolang er records zijn
    while ($r = mysql_fetch_array($rs)) {  
    
  ?>
    
            <TR><TD class=infoBoxContents vAlign=top
                                align=left><SPAN
                                class=infoBoxContents>                    
                                <?php echo($r["Aantal"]); ?>&nbsp;
</TD>
                                <TD class=infoBoxContents vAlign=top><?php echo($r["Artikelnaam"]); ?></SPAN></TD>
                                
                                </TR><?php } ?></TBODY></TABLE></TD></TR>
                          <TR>
                            <TD class=boxText><IMG border=0 alt=""
                              src="winkelwagen_files/pixel_black.gif"
                              width="100%" height=1></TD></TR>
                            
                          <TR>
                            <?php
            
            $strSQL
= "select SUM(Aantal*Prijs) as Subtotaal from tblorderregels ";
$rs = mysql_query($strSQL, $db);
if (!$rs) {
die("de SQL opdracht is fout<br>" . $strSQL);
}

$r = mysql_fetch_array($rs);
mysql_freeresult($rs);
$Subtotaal = $r["Subtotaal"]    ;
?>
  
                          
                          
                            <TD class=boxText align=right><SPAN
                              class=cart_price><?php echo $Subtotaal ; ?></SPAN>
    


Toevoeging op 03/05/2013 10:35:25:

Ik zie nu dat hij alle ordernummers bij elkaar optelt, dus het sessienr negeert hij. Hoe kan dat?


Toevoeging op 03/05/2013 10:47:29:

Probleem opgelost. Ik heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $strSQL = "select SUM(Aantal*Prijs) as Subtotaal from tblorderregels "; ?>

vervangen door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php $strSQL = "select SUM(Aantal*Prijs) as Subtotaal from tblorderregels
                        join tblorder
                        where tblorder.Ordernummer = tblorderregels.Ordernummer
                        and tblorder.SessieId = '$SessieId'"
;
?>

Bedankt voor de suggesties!

Graag in het vervolg bij code, [code] [/code] tags gebruiken.[/modedit]
Gewijzigd op 03/05/2013 13:04:32 door Bas IJzelendoorn
 
Wouter J

Wouter J

03/05/2013 11:03:56
Quote Anchor link
Is dat jou code? Dan moet ik helaas melden dat je hem beter kunt weggooien. Je gebruikt veel oude dingen. Om wat op te noemen:
- variabelen moeten buiten quotes;
- die is geen foutafhandeling, maar het brutaal vermoorden van je applicatie. Kijk eens naar de MySQL code in http://wouterj.github.io/sql-boilerplate ;
- gebruik mysql_fetch_assoc ipv fetch_array, dat is sneller en je gebruikt de extra's van fetch_array toch niet;
- nooit PHP logica tussen HTML plaatsen;
- html tags zijn altijd in kleine letters;
- gebruik geen inline CSS;
- ik heb zo'n vermoeden dat je queries geoptimaliseerd kunnen worden (maar ben niet echt een SQL guru...);
- maak je code netjes, spring in na een { en plaats geen onnodige whitespace voor ;.

En even een tip voor het forum: plaats je code tussen [code] tags, dan wordt het wat makkelijker lezen.
 
Krist Ensing

Krist Ensing

03/05/2013 12:43:17
Quote Anchor link
Bedankt voor je commentaar Wouter
De html/css omgeving van de webshop is door onze php docent meegegeven. Het is de bedoeling dat we de php code inbouwen in website.
Als alles klaar is wil ik alle php code optimaliseren wat betreft, netjes neerzetten. Ik zal je commentaar over variabelen, die, mysql-fetch-assoc daarin meenemen. Ook wil ik de sql code bekijken. Ik heb het idee dat ik nu onnodig vaak variabelen maak van gegevens uit de database, tewijl ik ze in de sql query ook zo uit de database kan oproepen, ik weet alleen (nog) niet hoe.
 



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.