login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Bij geen beoordeling, alleen criteria weergeven

Offline Ijspegel - 18/02/2008 18:26 (laatste wijziging 18/02/2008 18:27)
Avatar van IjspegelNieuw lid Op mijn website kunnen mensen een product aan de hand van enkele criteria beoordelen. Deze criteria zijn overigens niet altijd hetzelfde. Zo heeft een mp3 speler bijvoorbeeld een criteria geluidskwaliteit en dat heeft bijvoorbeeld een boormachine niet. 

Een mp3-speler heeft bijvoorbeeld 4 criteria. Per beoordeling van de gebruiker geef ik deze weer en bovenaan de pagina geef ik ook nog eens de gemiddeldes per criteria en het totale gemiddelde van alle beoordelaars van dat product weer. Dat ziet er dan dus bijvoorbeeld als volgt uit:

TOTAAL beoordeling product:
Gemiddelde: 7.1
Gebruiksgemak: 6.6
Geluidskwaliteit: 7.6
Mogelijkheden: 7.0
Vormgeving: 7.2

Nu heb ik dit allemaal gewoon voor elkaar gekregen met 2 query's. De eerste query berekent het totale gemiddelde en de tweede query berekent het totaal gemiddelde per criteria.

Nu heeft nog niet elk product al 1 of meer beoordeling. Op dit moment wordt dan helemaal niets weergegeven aangezien er geen resultaten uit de query komen. Nu wil ik het dus zo hebben dat hierbij wel gewoon alle criteria weergegeven worden, maar alleen nog geen cijfer. Ik dacht eerst dat ik dit kon doen door if (mysql_num_rows($result) > 1) te doen, maar dat is niet goed. Er is namelijk wel een resultaat bij de tweede query aangezien ik wel de betreffende criteria wil weergeven. Hoe kan ik dit dus het beste doen volgens jullie?

De tabellen die ik hiervoor gebruik zijn:
cijfers (waarde, criteria_id, beoordelingen_id)
criteria (id, naam)
beoordelingen (id, naam, e-mail, toelichting, datum, product_id)

Query voor totaal gemiddelde:
  1. SELECT AVG(cijfers.waarde) AS gemiddeld
  2. FROM cijfers
  3. INNER JOIN beoordelingen ON cijfers.review_id = beoordelingen.id
  4. WHERE beoordelingen.product_id = '" .$row_product['id']. "'
  5. GROUP BY beoordelingen.product_id


Query voor criteria gemiddelde:
  1. SELECT AVG(cijfers.waarde) AS gemiddeld, criteria.naam AS criterium, beoordelingen.product_id AS product_id
  2. FROM cijfers
  3. INNER JOIN criteria ON cijfers.criterium_id = criteria.id
  4. INNER JOIN beoordelingen ON cijfers.review_id = beoordelingen.id
  5. WHERE beoordelingen.product_id = '" .$row_product['id']. "'
  6. GROUP BY criteria.naam


Ik hoop dat iemand hier een antwoord op weet.

3 antwoorden

Gesponsorde links
Offline Webresource - 18/02/2008 18:59
Avatar van Webresource Nieuw lid Anders weergeef je ze toch gewoon, en indien ze blanco zijn, dan result je een tekst; Nog niet gestemd o.i.d.
Offline Threetimes - 18/02/2008 19:19
Avatar van Threetimes PHP beginner kijk welke criteria er zijn voor je product en geef alleen die weer
Offline Ijspegel - 18/02/2008 19:25
Avatar van Ijspegel Nieuw lid De criteria heb ik gekoppeld aan de categorieën. Bij een categorie horen namelijk steeds dezelfde criteria. Ik heb het nu als volgt gedaan:
Zodra er een of meer resultaten zijn ga ik dus de query uitvoeren. Als dat niet het geval is dan voer ik dus een query uit waarmee ik de criteria die bij de betreffende categorie horen op en geef deze weer. Op deze manier werkt het gewoon. :-)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.25s