Mensen kunnen een cijfer geven dat in de database gezet wordt.
De kolom heet: "cijfer"
Ik heb al wat zitten prutsen en door boeken gebladerd en gegoogled maar het lukt niet.
Met COUNT telt hij hoe vaak er gestemd is op die website.
En ik dacht dat je met SOM de cijfers in de kolom wel kon optellen........
Dit is de code die ik nu heb maar niet werkt:
<?php
$query2 =
"SELECT *,
COUNT(cijfer) AS aantalcijfer,
SOM(cijfer) AS optellencijfer
FROM fotoalbummakers AS f
LEFT JOIN
recensies AS r
ON f.naam = r.naam_recensie
GROUP BY f.naam
ORDER BY f.naam
";
$result2 = mysql_query($query2) or die ("Sorry maar ik kan de fotoalbummakers niet weergeven");
while($row2 = mysql_fetch_object($result2)){
$gemiddeldcijfer = $result2->optellencijfer / $result2->aantalcijfer;
?>
<?php
$query2 =
"SELECT *,
COUNT(cijfer) AS aantalcijfer,
SUM(cijfer) AS optellencijfer
FROM fotoalbummakers AS f
LEFT JOIN
recensies AS r
ON f.naam = r.naam_recensie
GROUP BY f.naam
ORDER BY f.naam
";
$result2 = mysql_query($query2) or die ("Sorry maar ik kan de fotoalbummakers niet weergeven");
Maar het gemiddelde kan ook dircet met AVG();
Dan krijg je dit:
<?php
$query2 =
"SELECT *,
AVG(cijfer) AS gemcijfer
FROM fotoalbummakers AS f
LEFT JOIN
recensies AS r
ON f.naam = r.naam_recensie
GROUP BY f.naam
ORDER BY f.naam
";
$result2 = mysql_query($query2) or die ("Sorry maar ik kan de fotoalbummakers niet weergeven");
while($row2 = mysql_fetch_object($result2)){
$gemiddeldcijfer = $row2['gemcijfer']; //dit lijkt overbodig omdat je nu 2 variabelen met precies hetzelfde hebt maar je moet zelf even kijken waarvoor je het nodig hebt.
}
?>
?
Onbekende gebruiker
13-08-2007 14:49
pgFrank schreef op 13.08.2007 14:45
SUM bedoel je waarschijnlijk...
Edit: Een gemiddelde bereken je overigens met AVG().
Ja, ik wist niet meer of het som of sum was.
Maar werkt ook niet.
Als het niet werkt kun je dan wat errors laten zien ( mysql_error() in je die zetten en eventuele php errors)
?
Onbekende gebruiker
13-08-2007 15:03
Het werkt !!
9+4+3= 16 / 3= 5.3333
Hoe laat ik dit nog zien als: 5.3 ?
Moet even kids uit school halen, kom hier zo terug.....
<?php
$query2 =
"SELECT *,
AVG(r.cijfer) AS gemiddeldcijfer
FROM fotoalbummakers AS f
LEFT JOIN
recensies AS r
ON f.naam = r.naam_recensie
GROUP BY f.naam
ORDER BY f.naam
";
$result2 = mysql_query($query2) or die (mysql_error());
while($row2 = mysql_fetch_object($result2)){
?>
<!-- De rechthoek met de webshop naam, plaatje en linken -->
<div class="webshop">
<?php
//laat de naam zien
echo '<h1>'.$row2->naam.'</h1>' ;
//Laat de banner zien
?>
<img class="banner" src="<?php echo $row2->banner ;?>" width="120" height="60" alt="<?php $row2->naam ; ?>">
<?php
//Laat de tekst zien
echo '<h2>'.$row2->tekst.'</h2>';
if(($row2->naam_recensie) == ""){
echo '<div class="recensie">Nog geen beoordeling | <a href="?recensie_van='.$row2->naam.'">Schrijf een recensie</a> | <a class="uit" href="uitfotoalbummakers.php?id='.$row2->id.'" target="_blank">Bezoek de website -></a></div>';
}else{
echo '<div class="recensie">Beoordeling: '.$row2->gemiddeldcijfer.' | <a href="?recensie_van='.$row2->naam_recensie.'">Bekijk de recensies</a> | <a class="uit" href="uitfotoalbummakers.php?id='.$row2->id.'" target="_blank">Bezoek de website -></a></div>';
}
?>
Kijk bv. eens naar number_format(), maar ook sprintf() kan je behulpzaam zijn.
Offtopic: Waarom gebruik je mysql_fetch_object()? Het heeft niks met objecten te maken en het is zó langzaam... mysql_fetch_assoc() is een stuk sneller en eenvoudiger in het gebruik.
?
Onbekende gebruiker
13-08-2007 15:52
@TJVB
Het werkt, bedankt.
@pgFrank
Toen ik php ging leren moest ik mij een schrijfwijze aanleren. Toen heb ik voor de pijltjes (object) gekozen. Vind ik wel handig. Maar als het inderdaad sneller is dan moet ik me dit misschien maar weer aanleren.
En ik weet niet goed het verschil tussen object of assoc.
Als ik iets wil maken met php en mysql dan kan ik vaak niet vinden hoe het moet. Ik heb een goed boek (PHP5 en MySql - Acadamic Service) maar weet dan niet waar ik moet zoeken.
Ook kijk ik vaak op php handboek (of zoiets) maarja, waar moet je beginnen.