Hallo allemaal,

We hebben registratie systeem voor een evenement en dit loopt eigenlijk goed.
Er zijn een aantal tellers waarmee we registreren wat er allemaal gebeurd en waar de mensen vandaan komen, ook dit werkt naar tevredenheid.

Teller die we hiervoor gebruiken is :

<?php
foreach($dbh->query('SELECT land, mx,COUNT(*)
FROM inschrijfformulier
GROUP BY land, mx') as $row) 
{
echo "<tr>";
echo "<td>&nbsp&nbsp" . $row['land'] ."</td>";

echo "<td>&nbsp&nbsp" . $row['mx'] ."</td>";
echo "<td>&nbsp&nbsp" . $row['COUNT(*)'] . "</td>";
echo "</tr>";
}
?>


Nu is het zo dat ik nog een T-shirt aanbied en deze info staat over 4 kolommen verdeeld, dit zijn :
- Type 1 (dames/heren)
- Maat 1 (s/m/l/xl/xxl)
- Type 2
- Maat 2

kan ik ook zoiets als bovenstaande gebruiken om om deze 4 samen te voegen tot 2 en deze meteen op te tellen

Wie o Wie kan mij een beetje op weg helpen ?

Grtz Manfred

Een query geeft een result, en normaal dus geen array. Dus ik neem aan dat het fetchen al in je query-object zit?

Over je vraag: Hoe ziet je database structuur eruit?
- Ariën - op 05/01/2019 10:53:29

Een query geeft een result, en normaal dus geen array. Dus ik neem aan dat het fetchen al in je query-object zit?

Over je vraag: Hoe ziet je database structuur eruit?


Het is een simpele database opgebouwd met Fabrik (Joomla) met daarin naam,woonplaats............ enz,enz
Type shirt 1, Type shirt 2, maat 1 en maat 2 zijn hier onderdeel van.

en iedere nieuwe inschrijving is een nieuwe regel in de database.
Dus een shirt kan maar twee typen hebben? Dus genummerde velden?
Klinkt niet echt genormaliseerd.
Zoiets (geen idee wat er in type1/2 staat)?
echo "<td>" . ($row['type1'] + $row['type2']) . "</td>";
Ik zal me proberen te verduidelijken

ik gebruik de volgende teller voor het tellen van de t-shirts:

foreach($dbh->query('SELECT maat_1, type_shirt_1,COUNT(*)

FROM inschrijfformulier
GROUP BY maat_1,type_shirt_1') as $row1)

{

echo "<tr>";

echo "<td>&nbsp" . $row1['type_shirt_1'] . "</td>";

echo "<td>&nbsp" . $row1['maat_1'] . "</td>";
echo "<td>&nbsp;&nbsp;&nbsp;&nbsp" . $row1['COUNT(*)'] . "</td>";

echo "</tr>";

}


hiermee tel ik Type_shirt_1 en de maat_1 en groepeer ze om het resultaat per type en maat te tonen
dit doe ik ook met Type_shirt_2.

ik kan dit alleen separaat van elkaar doen, maar ik zou deze graag samenvoegen.

Grtz Manfred

Als je de types per bestel/inschrijfregel wilt optellen dan kan dat, maar je kunt dan dus geen onderscheid meer maken tussen de maten. Het enige wat je dan dus zou kunnen weergeven per bestelregel is het codefragment van @Rob hierboven.

Of wil je juist weten hoeveel t-shirts van een bepaald type zijn besteld, dus X shirts van type 1 en Y shirst van type 2, of wil je die ook nog onderverdeeld hebben per maat? Dit laatste lijkt mij interessante informatie want dat geeft een overzicht van de totale vraag naar t-shirts, onderverdeeld op type en maat.

Dit laatste wordt een beetje een rare spagaat vanwege de wijze waarop de databasetabel is opgezet. Is het ook mogelijk dat iemand zowel t-shirts van type 1 alsook type 2 bestelt in een enkele inschrijving?

De netste oplossing zou zijn om je database te fixen, maar dit zou waarschijnlijk ook programmeerwerk aan het inschrijfformulier inhouden en omdat dat verzorgd wordt door een of andere module (Fabrik?) wordt dat waarschijnlijk geen succes. Het makkelijkste is waarschijnlijk om eerst een lijstje op te bouwen door alle resultaten gewoon af te lopen en deze in een tijdelijk array op te slaan en dit is wat je uiteindelijk op het scherm toont.

Reageren