Optel hulp

Overzicht Reageren

Dennis meijer

dennis meijer

02/09/2011 09:25:40
Quote Anchor link
Ik heb een script die geld bij elkaar op moet tellen in een while loop.

Alleen werkt dit niet echt zoals ik wil.

Kan iemand zien waarom het optellen verkeerd gaat?

Het heeft in iedergeval te maken met het optellen binnen een while loop en dan buiten de while loop weer laten zien.



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

$datumnu
  = strftime("%Y-%m", time());
$Totaal = 0;

$_SESSION['Een'] = 0;
$_SESSION['Twee'] = 0;

for ($i = 1;$i <= 120;$i = $i + 12)
{

    
    $datum_min_maand = strftime("%Y-%m", strtotime($datumnu.'- '.$i.' month'));
    
    if(preg_match('/^([0-9]{4})(\-{1})([0-9]{2})$/', $datum_min_maand, $matches) ) {
            
          $Datumgoed = $matches[3].$matches[2].$matches[1];
        
          $Een = 0;
          $q_Klanten = mysql_query("SELECT * FROM klanten WHERE aanmelddatum = '".$Datumgoed."'");
          
              while($Klanten = mysql_fetch_object($q_Klanten))
              {

                
                    $q_Domeinen = mysql_query("SELECT * FROM domeinnamen
                                                WHERE id_klant = '"
.$Klanten->klant_id."'
                                                AND toegevoegd_op = '"
.$Datumgoed."'");                
                    
                    $Aantal_Domein = mysql_num_rows($q_Domeinen);
                    $Commissie = 29 + $Aantal_Domein;
                    
                    $_SESSION['Een'] = $_SESSION['Een'] + $Commissie;
                    
                  
              }
              
              
         }
}
  
              
for ($i = 1;$i <= 120;$i = $i + 12)
{

    
    
    $datum_min_maand = strftime("%Y-%m", strtotime($datumnu.'- '.$i.' month'));
    
        if(preg_match('/^([0-9]{4})(\-{1})([0-9]{2})$/', $datum_min_maand, $matches) ) {
            
            $Datumgoed = $matches[3].$matches[2].$matches[1];
            
        $q_Klantendatum = mysql_query("SELECT * FROM klanten WHERE aanmelddatum != '".$Datumgoed."'");
        
        $Twee = 0;
        
            while($Klantendatum = mysql_fetch_object($q_Klantendatum))
            {

                
                $q_Domeinnamen = mysql_query("SELECT * FROM domeinnamen
                                            WHERE id_klant = '"
.$Klantendatum->klant_id."'
                                            AND toegevoegd_op = '"
.$Datumgoed."'");
                
                if($Domeinnamen = mysql_num_rows($q_Domeinnamen) > 0)
                {

                                        
                    $Twee = $Twee + $Domeinnamen;
                    $_SESSION['Twee'] = $_SESSION['Twee'] + $Domeinnamen;
                    
                    
                }
            
            }
            
    }
}


          
$Subtotaal = $_SESSION['Een'] + $_SESSION['Twee'];  
      
$Totaal = $Totaal + $Subtotaal;  

unset($_SESSION['Een']);
unset($_SESSION['Twee']);


?>



Een tip/hint is altijd welkom.
 
PHP hulp

PHP hulp

08/08/2022 01:01:37
 
Crude Oil

Crude Oil

02/09/2011 10:48:44
Quote Anchor link
wat doet hij precies fout?

overigens, waarom gebruik je mysql_fetch_object() en niet mysql_fetch_assoc()?
 
Dennis meijer

dennis meijer

02/09/2011 11:02:43
Quote Anchor link
Heb het opgelost

Heb bij beide whiles een array ingevoegd en aan het eind opgeteld.

Ik gebruik mysql_fetch_object()

Omdat ik zoveel mogelijk oophp probeer te gebruiken en daar werk je met objecten. ben nog in lerende fase maar gebruik het zoveel mogelijk.
 
- Mark -

- Mark -

02/09/2011 11:09:51
Quote Anchor link
Van

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$_SESSION
['Een'] = $_SESSION['Een'] + $Commissie;

?>


Kun je ook

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$_SESSION
['Een'] += $Commissie;

?>


maken.
 
Tobias Tobias

Tobias Tobias

02/09/2011 11:14:56
Quote Anchor link
session_start();
aan het begin van je script?
 
- SanThe -

- SanThe -

02/09/2011 11:35:47
Quote Anchor link
Tobias Tobias op 02/09/2011 11:14:56:
session_start();
aan het begin van je script?


Dat is nodig als je de gegevens later nog wilt gebruiken. Maar hier gebruikt de TS unset, dus hij kan net zo goed gewone $vars gebruiken. En zonder session_start() zijn het ook gewone vars.
Gewijzigd op 02/09/2011 11:36:43 door - SanThe -
 
Jordi Kroon

Jordi Kroon

02/09/2011 11:40:15
Quote Anchor link
- Gebruik geen wildcards selecteer wat je wilt.
- Mysqlinjection is mogelijk! gebruik mysql_real_escape_string()
- Ik mis fouthandeling!
- mysql_fetch_assoc ipv object.
 
Dennis meijer

dennis meijer

02/09/2011 11:55:08
Quote Anchor link
Kan iemand mij eens uitleggen waarom mysql_fetch_assoc beter is?

Ben ik namelijk wel erg benieuwd naar omdat iedereen het erover heeft.

Heb de sessions verwijderd en vervangen door vars, dat was meer proberen.
 
Maarten PHP

Maarten PHP

02/09/2011 14:11:55
Quote Anchor link
Dennis meijer op 02/09/2011 11:55:08:
Kan iemand mij eens uitleggen waarom mysql_fetch_assoc beter is?

Ben ik namelijk wel erg benieuwd naar omdat iedereen het erover heeft.

Heb de sessions verwijderd en vervangen door vars, dat was meer proberen.



mysql_fetch_assoc(); word vaak gebruikt.
mysql_fetch_object(); kan je ook gebruiken alleen moet je het anders gebruiken

Volgens mij maakt het helemaal niet uit
 
Bart Willemsen

Bart Willemsen

06/09/2011 10:43:21
Quote Anchor link
Ik gebruik ook altijd de object eigenlijk, qua performance of zo maakt het echt niet uit. Het is denk ik persoonlijke voorkeur, en in sommige situaties (in bepaalde loops of zo) is een array misschien iets handiger om te gebruiken.
 
Arjan -

Arjan -

06/09/2011 12:13:34
Quote Anchor link
Leer ook joins te gebruiken, want het script is zeer inefficient. Sowieso kunnen queries in een for loop vaak vermeden worden. Op jouw manier worden (te) veel queries uitgevoerd tijdens een pagina-aanroep.
 



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.