statements gebruiken met sql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Bert vandenbogaerde

bert vandenbogaerde

14/12/2011 22:58:00
Quote Anchor link
Tabel
Afbeelding


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)
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
<?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 />";
}

?>


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
 
PHP hulp

PHP hulp

21/11/2024 23:17:26
 
Erwin H

Erwin H

14/12/2011 23:20:37
Quote Anchor link
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?
 
Bert vandenbogaerde

bert vandenbogaerde

14/12/2011 23:40:36
Quote Anchor link
Die berekening is juist wanneer de waarden waarmee moet vermenigvuldigd worden altijd dezelfde waren.

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

Erwin H

15/12/2011 09:35:31
Quote Anchor link
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.
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 10:06:23
Quote Anchor link
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
Gewijzigd op 15/12/2011 10:08:04 door bert vandenbogaerde
 
Erwin H

Erwin H

15/12/2011 10:23:32
Quote Anchor link
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.
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 10:32:43
Quote Anchor link
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.
 
Erwin H

Erwin H

15/12/2011 10:40:31
Quote Anchor link
Vertel je me nu dat je niet weet hoe een if statement in elkaar steekt?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
if ( "vergelijking" ){

} elseif ( "vergelijking" ){

} else ( "vergelijking" ){

}
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 10:53:37
Quote Anchor link
Zoiets dan?
Is de vergelijking correct?

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
<?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" ){

}

 
?>
 
Erwin H

Erwin H

15/12/2011 11:16:32
Quote Anchor link
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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/12/2011 12:49:07
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 18:34:31
Quote Anchor link
Het ziet er juist uit maar als ik het implementeer werkt het niet.
Er komt gewoon een blanco pagina.

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
<?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
?>
Gewijzigd op 15/12/2011 18:43:28 door bert vandenbogaerde
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

15/12/2011 19:00:42
Quote Anchor link
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 ;)
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 19:18:49
Quote Anchor link
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?

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
<?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
?>
 
F Loogman

F Loogman

15/12/2011 22:38:33
Quote Anchor link
Op regel 13 mis je een ) na result). Door de syntaxerror wordt je script niet uitgevoerd.
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 22:42:08
Quote Anchor link
bedankt voor de reactie.

Ik heb dit ook al aangepast intussen, tevergeefs.

Of is er iets fout met mijn $query?
 
F Loogman

F Loogman

15/12/2011 22:53:19
Quote Anchor link
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);
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 23:15:59
Quote Anchor link
er worden geen fouten weergegeven.

Volgens mij spookt het script ;)
Gewijzigd op 15/12/2011 23:16:52 door bert vandenbogaerde
 
F Loogman

F Loogman

15/12/2011 23:18:47
Quote Anchor link
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
 
Bert vandenbogaerde

bert vandenbogaerde

15/12/2011 23:24:25
Quote Anchor link
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

$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
 
- SanThe -

- SanThe -

15/12/2011 23:32:24
Quote Anchor link
Waarom overal achter 'euro' een haak? Die is echt teveel.
echo 'Dag: ' . round($row['verbruikelekdag'] * 1.6, 2) . 'euro');
 

Pagina: 1 2 volgende »



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.