statements gebruiken met sql
Tabel

Bedoeling
Van iedere rij moet de kostprijs berekent worden. Ieder verbruik heeft zijn eigen waarde per eenheid. bv: kostprijs verbruikdag = 1000 * 1,6
Op zich is dit niet moeilijk.
Dit staat hieronder.
Huidige bewerking
Probleem
Wanneer er een waarde voor verbruikdag EN verbruiknacht ingevuld is veranderen de vaste waarden waarmee de getallen vermenigvuldigt moeten worden.
Ook wanneer verbruikdag EN verbruiknacht EN verbruikexclnacht ingevuld zijn veranderen de vaste waarden waarmee de getallen vermenigvuldigt moeten worden.
Ook wanneer verbruikdag EN verbruikexclnacht ingevuld zijn veranderen de vaste waarden waarmee de getallen vermenigvuldigt moeten worden.
Hoe kan ik dit op een vlotte manier doen?
IF statements of...

Bedoeling
Van iedere rij moet de kostprijs berekent worden. Ieder verbruik heeft zijn eigen waarde per eenheid. bv: kostprijs verbruikdag = 1000 * 1,6
Op zich is dit niet moeilijk.
Dit staat hieronder.
Huidige bewerking
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,verbruikeleknacht,verbruikelekexclnacht,verbruikgas,naam FROM energie";
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
echo "Dag: ". ROUND($row['verbruikelekdag'] * 1.6)." euro " ." ".
"Nacht: ". ROUND($row['verbruikeleknacht'] * 1.4)." euro " ." ".
"Exclusief nacht: ". ROUND($row['verbruikelekexclnacht'] * 1.8)." euro " ."".
"Gas: ". ROUND($row['verbruikgas'] * 1)." euro " ." ". $row['naam'];
echo "<br />";
}
?>
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,verbruikeleknacht,verbruikelekexclnacht,verbruikgas,naam FROM energie";
$result = mysql_query($query) or die(mysql_error());
// Print out result
while($row = mysql_fetch_array($result)){
echo "Dag: ". ROUND($row['verbruikelekdag'] * 1.6)." euro " ." ".
"Nacht: ". ROUND($row['verbruikeleknacht'] * 1.4)." euro " ." ".
"Exclusief nacht: ". ROUND($row['verbruikelekexclnacht'] * 1.8)." euro " ."".
"Gas: ". ROUND($row['verbruikgas'] * 1)." euro " ." ". $row['naam'];
echo "<br />";
}
?>
Probleem
Wanneer er een waarde voor verbruikdag EN verbruiknacht ingevuld is veranderen de vaste waarden waarmee de getallen vermenigvuldigt moeten worden.
Ook wanneer verbruikdag EN verbruiknacht EN verbruikexclnacht ingevuld zijn veranderen de vaste waarden waarmee de getallen vermenigvuldigt moeten worden.
Ook wanneer verbruikdag EN verbruikexclnacht ingevuld zijn veranderen de vaste waarden waarmee de getallen vermenigvuldigt moeten worden.
Hoe kan ik dit op een vlotte manier doen?
IF statements of...
Gewijzigd op 14/12/2011 23:04:26 door Bert vandenbogaerde
Wat doet de berekening in je script? Is dat wat je eronder nog uitlegt (in welk geval ik me afvraag wat je nog wilt weten), of is dat iets anders?
Die berekening is juist wanneer de waarden waarmee moet vermenigvuldigd worden altijd dezelfde waren.
Maar die waarde veranderd.

Wanneer verbruikelekdag en verbruikeleknacht waardes bevatten (zoals bij naam x2) dan veranderd die waarde waarmee verbruikelekdag en verbruikeleknacht vermenigvuldigd moet worden.
Maar die waarde veranderd.

Wanneer verbruikelekdag en verbruikeleknacht waardes bevatten (zoals bij naam x2) dan veranderd die waarde waarmee verbruikelekdag en verbruikeleknacht vermenigvuldigd moet worden.
Wat zijn die waardes dan waarmee wel vermenigvuldigt moet worden? En heeft het verbruikgas ook nog invloed, of is dat gewoon standaard verbruik * waarde? In welk geval je het nu dus voor het gemak weg kunt laten.
Dit zijn de formules die het script automatisch moet toepassen per rij.
Gas mag hier inderdaad even buiten beschouwing gelaten worden omdat het gaat om een vaste waarde ongeacht de andere verbruiken.
alleen verbruikelekdag:
maal 1,6
verbruikelekdag en verbruikeleknacht:
verbruikelekdag maal 1,4 en verbruikeleknacht maal 0,9
verbruikelekdag en verbruikeleknacht en verbruikelekexclnacht:
verbruikelekdag maal 1,2 en verbruikeleknacht maal 0,7 en verbruikelekexclnacht maal 0,5
verbruikelekdag en verbruikelekexclnacht:
verbruikelekdag maal 1,3 en verbruikelekexclnacht maal 0,6
Concreet
bijvoorbeeld naam x2:
verbruikelekdag en verbruikeleknacht:
1200 maal 1,4 en 1370 maal 0,9
Gas mag hier inderdaad even buiten beschouwing gelaten worden omdat het gaat om een vaste waarde ongeacht de andere verbruiken.
alleen verbruikelekdag:
maal 1,6
verbruikelekdag en verbruikeleknacht:
verbruikelekdag maal 1,4 en verbruikeleknacht maal 0,9
verbruikelekdag en verbruikeleknacht en verbruikelekexclnacht:
verbruikelekdag maal 1,2 en verbruikeleknacht maal 0,7 en verbruikelekexclnacht maal 0,5
verbruikelekdag en verbruikelekexclnacht:
verbruikelekdag maal 1,3 en verbruikelekexclnacht maal 0,6
Concreet
bijvoorbeeld naam x2:
verbruikelekdag en verbruikeleknacht:
1200 maal 1,4 en 1370 maal 0,9
Gewijzigd op 15/12/2011 10:08:04 door bert vandenbogaerde
Zo te zien ontkom je dus niet aan het gebruik van if statements. En op zich ook nog niet eens zo'n grote hoeveelheid, aangezien je maar 4 mogelijkheden hebt (of kunnen verbruikeleknacht en verbruikelekexclnacht ook alleen gevuld zijn?).
Op zich lijkt het me dus niet zo'n groot probleem. Waar ik nog aan denk is om de database al een extra veld te laten genereren met daarin een getal dat aangeeft welke waardes gebruikt moeten worden. Dan zou je in de php script geen ifs meer hoeven gebruiken, maar gewoon de rij in een multidimensionale array die correspondeerd met het getal uit de database. Alleen of dat nu echt sneller danwel overzichtelijker is betwijfel ik.
Op zich lijkt het me dus niet zo'n groot probleem. Waar ik nog aan denk is om de database al een extra veld te laten genereren met daarin een getal dat aangeeft welke waardes gebruikt moeten worden. Dan zou je in de php script geen ifs meer hoeven gebruiken, maar gewoon de rij in een multidimensionale array die correspondeerd met het getal uit de database. Alleen of dat nu echt sneller danwel overzichtelijker is betwijfel ik.
Bedankt voor de info. Heeft u enig idee hoe ik mijn script uit de eerste post kan aanpassen met if statements?
Verbruikeleknacht en verbruikelekexclnacht kunnen niet alleen gevuld zijn.
Bedankt.
Verbruikeleknacht en verbruikelekexclnacht kunnen niet alleen gevuld zijn.
Bedankt.
Vertel je me nu dat je niet weet hoe een if statement in elkaar steekt?
Zoiets dan?
Is de vergelijking correct?
Is de vergelijking correct?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,naam,verbruikeleknacht,verbruikelekexclnacht,verbruikgas FROM energie";
$result = mysql_query($query) or die(mysql_error());
if ( "verbruikelekdag>'0'" and "verbruikeleknacht>'0'" ){
while($row = mysql_fetch_array($result)){
echo "Dag: ". ROUND($row['verbruikelekdag'] * 1.4)." euro " ." "."Nacht: ". ROUND($row['verbruikeleknacht'] * 0.9)." euro " ." ". $row['naam'];
}
} elseif ( "vergelijking" ){
} else ( "vergelijking" ){
}
?>
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,naam,verbruikeleknacht,verbruikelekexclnacht,verbruikgas FROM energie";
$result = mysql_query($query) or die(mysql_error());
if ( "verbruikelekdag>'0'" and "verbruikeleknacht>'0'" ){
while($row = mysql_fetch_array($result)){
echo "Dag: ". ROUND($row['verbruikelekdag'] * 1.4)." euro " ." "."Nacht: ". ROUND($row['verbruikeleknacht'] * 0.9)." euro " ." ". $row['naam'];
}
} elseif ( "vergelijking" ){
} else ( "vergelijking" ){
}
?>
Als je echt nog niet weet hoe if statements werken raad ik aan om een tutorial door te gaan nemen. Dit is namelijk echt de basis van programmeren. Ga bijvoorbeeld eens door de tutorials op w3schools: http://www.w3schools.com/php/php_if_else.asp
Bert, je moet sowieso al de eerste if binnen de while lus zetten. Je hoeft ook niet te controleren of het dagverbruik is ingevuld want je zegt zelf dat dat altijd zo is.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
while ($row = mysql_fetch_assoc($result) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekeclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekeclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
//enzovoort
?>
while ($row = mysql_fetch_assoc($result) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekeclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekeclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
//enzovoort
?>
Het ziet er juist uit maar als ik het implementeer werkt het niet.
Er komt gewoon een blanco pagina.
Er komt gewoon een blanco pagina.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$query = "SELECT verbruikelekdag,verbruikeleknacht,verbruikelekexclnacht FROM energie";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekexclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekexclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
//enzovoort
?>
$query = "SELECT verbruikelekdag,verbruikeleknacht,verbruikelekexclnacht FROM energie";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekexclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekexclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
//enzovoort
?>
Gewijzigd op 15/12/2011 18:43:28 door bert vandenbogaerde
Bert, ik was een ] vergeten op regel 5 en 9 van de bovenstaande code bij de tweede $row
Mijn excuus daarvoor, maar je moet ook niet zomaar ad hoc code overnemen, ook zelf even goed kijken ;)
Mijn excuus daarvoor, maar je moet ook niet zomaar ad hoc code overnemen, ook zelf even goed kijken ;)
Klopt. Dit had ik ook net gezien.
Maar dit had geen effect, er blijft een blanco pagina tevoorschijn komen.
Kan het dat NULL niet herkend word?
Maar dit had geen effect, er blijft een blanco pagina tevoorschijn komen.
Kan het dat NULL niet herkend word?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Make a MySQL Connection
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,verbruikelekexclnacht,verbruikeleknacht FROM energie";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekexclnacht'] == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekexclnacht'] == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
//enzovoort
?>
// Make a MySQL Connection
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,verbruikelekexclnacht,verbruikeleknacht FROM energie";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekexclnacht'] == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekexclnacht'] == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
//enzovoort
?>
Op regel 13 mis je een ) na result). Door de syntaxerror wordt je script niet uitgevoerd.
bedankt voor de reactie.
Ik heb dit ook al aangepast intussen, tevergeefs.
Of is er iets fout met mijn $query?
Ik heb dit ook al aangepast intussen, tevergeefs.
Of is er iets fout met mijn $query?
toon even je $result met "var_dump($result);" op regel 13 (zonder quotes natuurlijk). Als je SQL niet goed is verwacht ik eigenlijk een error message a.g.v. die(mysql_error());
Is je connectie wel goed? Je weet welicht al dat mysql_connect en mysql_select_db ook resultaten geven?
$conn = mysql_connect($... ...);
$db = mysql_select_db($database);
als het goed gaat zijn $conn en $db dan niet false. Ook dat kun je checken met var_dump($variabelenaam);
Is je connectie wel goed? Je weet welicht al dat mysql_connect en mysql_select_db ook resultaten geven?
$conn = mysql_connect($... ...);
$db = mysql_select_db($database);
als het goed gaat zijn $conn en $db dan niet false. Ook dat kun je checken met var_dump($variabelenaam);
er worden geen fouten weergegeven.
Volgens mij spookt het script ;)
Volgens mij spookt het script ;)
Gewijzigd op 15/12/2011 23:16:52 door bert vandenbogaerde
Da's het fijne aan computers, meestal doe jij het verkeerd. Mis je op regel 23 niet ook een }, of had je die ook al opgelost? Post eens de complete code zoals je eerder deed.
Gewijzigd op 15/12/2011 23:20:30 door F Loogman
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
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,verbruikelekexclnacht,verbruikeleknacht FROM energie";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekexclnacht'] == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekexclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
}
//enzovoort
?>
$host="";
$db_user="";
$db_password="";
$database="";
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);
$query = "SELECT verbruikelekdag,verbruikelekexclnacht,verbruikeleknacht FROM energie";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
if ($row['verbruikeleknacht'] == NULL && $row['verbruikelekexclnacht'] == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
}
elseif ($row['verbruikeleknacht'] != NULL && $row['verbruikelekexclnacht' == NULL)
{
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.4, 2) . 'euro');
echo 'Nacht: ' . round($row['verbruikelekdag'] * 0.9, 2) . 'euro');
}
}
//enzovoort
?>
Gewijzigd op 15/12/2011 23:37:10 door bert vandenbogaerde
Waarom overal achter 'euro' een haak? Die is echt teveel.
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');




