Totaal som
Ik heb een reactie script waar mensen een cijfer kunnen geven dmv een formuliertje. Dit cijfer word opgeslagen in een sql database onder tabelnaam "cijfer" (hoe toepasselijk he!)
Nu wil ik zeg maar een som dat en het totaal cijfer gedeelte door het aantal cijfers doet.
Dus zoiets als dit :
Totaal = cijfer / numrows
Alleen weet ik niet hoe ik de cijfers kan optellen die aan dat id hangen.
Wie kan me helpen ??
Ik heb nu dit staan $row->cijfer; en laat hij het cijfer per id van de reactie zien
Gewijzigd op 01/01/1970 01:00:00 door Arjan Kapteijn
$sql1 = "SELECT SUM(cijfer) FROM script_reactie WHERE scriptid='".$_GET['id']."'";
$query1 = mysql_query($sql1);
$count = mysql_num_rows($query1);
echo $count;
ik krijg als resultaat 1 wat niet echt klopt. aangezien er 6 cijfers zijn met een totaal van 45
maar wat moet ik dan echoen ??
Gewijzigd op 01/01/1970 01:00:00 door Domi
Met mysql_num_rows() bepaal je het aantal records dat geselecteerd is met jouw query. Blijkbaar is jouw WHERE clause zodanig dat er maar 1 record aan die conditie voldoet, dus dat er maar 1 record met dat bepaalde scriptid is.
ja omdat je uiteraard maar 1 totaal krijgt dat is logisch maar hoe krijg ik het totaal nou te zien dan ??
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT SUM(cijfer) AS som, AVG(cijfer) AS gemiddelde FROM script_reactie WHERE scriptid = ".$_GET['id'];
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res);
echo $row['som'].'<br>';
echo $row['gemiddelde'];
?>
$sql = "SELECT SUM(cijfer) AS som, AVG(cijfer) AS gemiddelde FROM script_reactie WHERE scriptid = ".$_GET['id'];
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res);
echo $row['som'].'<br>';
echo $row['gemiddelde'];
?>
Zelf nog wel even foutafhandeling toevoegen.
SELECT AVG(cijfer) AS gemiddelde
FROM script_reactie
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
$sql1 = "SELECT SUM(cijfer) AS totaal FROM script_reactie WHERE scriptid='".$_GET['id']."'";
$query1 = mysql_query($sql1);
$i = mysql_fetch_array($query1);
echo $i['totaal'];
Gewijzigd op 01/01/1970 01:00:00 door Domi
Nu nog even de foutafhandeling, dus de controle of je mysql_query wel gelukt is.
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
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
<?php
$sql1 = "
SELECT
SUM(cijfer) AS totaal,
AVG(cijfer) AS gemiddeld
FROM
script_reactie
WHERE
scriptid= '" . mysql_real_escape_string ( $_GET['id'] ) . "'
;
";
$query1 = mysql_query($sql1);
if ( !$query1 )
{
?>
<strong>De query ging mis. </strong>
<?php
}
else
{
if ( mysql_num_rows ( $query1 ) > 0 )
{
$i = mysql_fetch_array($query1);
echo '<strong>Totaal</strong>: ' . $i['totaal'] . ' <br />';;
echo '<strong>Totaal</strong>: ' . $i['gemiddeld'] . ' <br />';;
}
else
{
#Nog geen beoordelingen blijkbaar
#Doe iets
?>
<strong>Nog geen beoordelingen, en dus ook geen gemiddelde. </strong>
<?php
}
}
?>
$sql1 = "
SELECT
SUM(cijfer) AS totaal,
AVG(cijfer) AS gemiddeld
FROM
script_reactie
WHERE
scriptid= '" . mysql_real_escape_string ( $_GET['id'] ) . "'
;
";
$query1 = mysql_query($sql1);
if ( !$query1 )
{
?>
<strong>De query ging mis. </strong>
<?php
}
else
{
if ( mysql_num_rows ( $query1 ) > 0 )
{
$i = mysql_fetch_array($query1);
echo '<strong>Totaal</strong>: ' . $i['totaal'] . ' <br />';;
echo '<strong>Totaal</strong>: ' . $i['gemiddeld'] . ' <br />';;
}
else
{
#Nog geen beoordelingen blijkbaar
#Doe iets
?>
<strong>Nog geen beoordelingen, en dus ook geen gemiddelde. </strong>
<?php
}
}
?>
@Boris: de informatie 'De query ging mis.' is niet zo erg zinvol. Als de query mislukt wil je namelijk ook weten waarom die query dan mislukt! Gebruik (zeker tijdens het debuggen) dan ook altijd mysql_error() om de foutmelding op te vragen.
Ja alleen de mysql_error() ziet er niet zo gebruikersvriendelijk uit.
De mysql_error() daarentegen kun je bijvoorbeeld in een database opslaan of als error report mailen naar de webmaster. Het blijft te allen tijde vereist om iets met deze error te doen en dat kan niet als je de precieze foutmelding niet opvraagt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
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
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
<?php
function mysql_fout ( $query )
{
$content = '
<strong>SQL:</strong> <br />
<pre>' . $query . '</pre> <br />
<strong>Foutnummer:</strong> <br />
<pre>' . mysql_errno () . '</pre> <br />
<strong>Fout:</strong> <br />
<pre>' . mysql_error () . '</pre> <br />
';
mail ( $to , $onderwerp_geloof_ik , $content , $html_mail_headers );
#Of misschien zo? :-P
if ( !mail ( $to , $onderwerp_geloof_ik , $content , $html_mail_headers ) )
{
mail_fout ( $to , $onderwerp_geloof_ik , $content , $html_mail_headers ); #:-P zo blijf je bezig, maar zo hoort het natuurlijk wel
}
echo 'Er is een probleempje met de database. Kom later a.u.b. terug. Excuses hiervoor';
}
#En dan deze functie gebruiken zoiets:
if ( !$res )
{
mysql_fout ( $sql );
}
else
{
#Bla
}
?>
function mysql_fout ( $query )
{
$content = '
<strong>SQL:</strong> <br />
<pre>' . $query . '</pre> <br />
<strong>Foutnummer:</strong> <br />
<pre>' . mysql_errno () . '</pre> <br />
<strong>Fout:</strong> <br />
<pre>' . mysql_error () . '</pre> <br />
';
mail ( $to , $onderwerp_geloof_ik , $content , $html_mail_headers );
#Of misschien zo? :-P
if ( !mail ( $to , $onderwerp_geloof_ik , $content , $html_mail_headers ) )
{
mail_fout ( $to , $onderwerp_geloof_ik , $content , $html_mail_headers ); #:-P zo blijf je bezig, maar zo hoort het natuurlijk wel
}
echo 'Er is een probleempje met de database. Kom later a.u.b. terug. Excuses hiervoor';
}
#En dan deze functie gebruiken zoiets:
if ( !$res )
{
mysql_fout ( $sql );
}
else
{
#Bla
}
?>