Optel hulp
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)
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
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']);
?>
$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.
overigens, waarom gebruik je mysql_fetch_object() en niet mysql_fetch_assoc()?
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.
Kun je ook
maken.
aan het begin van je script?
Tobias Tobias op 02/09/2011 11:14:56:
session_start();
aan het begin van je script?
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 -
- Mysqlinjection is mogelijk! gebruik mysql_real_escape_string()
- Ik mis fouthandeling!
- mysql_fetch_assoc ipv object.
Ben ik namelijk wel erg benieuwd naar omdat iedereen het erover heeft.
Heb de sessions verwijderd en vervangen door vars, dat was meer proberen.
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.
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
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.
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.