Hoi,

Ik heb een bepaalde loop.

mysql_query met een DISTINCT. Hierin worden unieke gebruikers geselecteerd.
Vervolgens komt er een while loop voor die output. Daarin wordt wordt dan per gebruiker
gekeken hoeveel resultatie diegene heeft.
Omdat ik dit resultaat niet kan sorteren, wil ik in de while loop eerst alles in een array zetten
en dat dan sorteren en pas dan echoeen.

Ik heb echter geen idee hoe je dat dan doet...

De code is:

<?php
$query_names = mysql_query("select DISTINCT NAAM FROM TABLE ORDER BY NAAM ASC");

$i = 0;
while ($totaal = mysql_fetch_array($query_names)) {

$ad = $totaal['naam'];
$resultaat = mysql_query("SELECT * FROM NAAM WHERE naam = '$ad'");
$query_all = mysql_fetch_array($resultaat);
$cijfertotaal = mysql_num_rows($resultaat);

[hier moet een array opgebouwd worden]
Die moet dan gevuld worden met NAAM en AANTAL

$i++;
}
?>

Wellicht kan het geheel helemaal anders maar mijn kennis is helaas ook maar enigzins beperkt...
Misschien dus 1 sql query? Het is dus 1 tabel. Uiteindelijk moet ik dan weten hoevaak een naam een record heeft.
en sortering moet op het aantal zijn zodat de hoogste bovenaan staat.

Iemand een idee?
- $query_names deugt niet (kolumn + tabel is in hoofdletters)
- $i is niet nodig
- $totaal['naam'] slaat nergens op, je gebruikt namelijk DISTINCT
- 2de query in while() ? Je haalt de namen toch al op in de eerste
- nog een fetch_array in while() die nergens op slaat
- Hetzelfde geldt voor num_rows
- mysql() is dood, dus denk aan mysqli()

DISTINCT :

Zie: http://www.w3resource.com/sql/select-statement/queries-with-distinct.php
Nou... tis wel nodig want in de eerste query haal ik de namen op en in de 2de tel ik hoevaak ze voorkomen...

De hoofdletters heb ik gedaan voor hier, ik kan namelijk de echte namen hier niet posten.
N.v.t. Ik lette niet goed op.
in het tabel wordt alles opgeslagen. Elke naam kan 1 of wel 100 x voorkomen.
Dus ik moet dan van elk unieke individu weten hoevaak ze voorkomen.
Dat is het resultaat wat ik eruit wil halen en dan dus gesorteerd op aantal
Kun je niet iets met een GROUP BY doen?

SELECT naam, count(*) AS aantal,
FROM TABLE
GROUP BY naam
ORDER BY aantal DESC

SELECT DISTINCT(naam), COUNT(DISTINCT(naam)) 
FROM tabelnaam 
ORDER BY naam ASC
das dan wel een mooie korte regel... hij sorteert alleen niet op de aantallen...
Maar ik krijg voor alsnog met beiden geen output...

[size=xsmall]Toevoeging op 03/09/2015 13:20:41:[/size]

@Davy, hoe kan ik met die van jou aantallen echoen dan?
Hoewel ik die van Bo ook nog niet snap... maar ik neem aan gewoon met Aantal

SELECT
  `naam`,
  COUNT(`naam`) AS `aantal`
FROM
  `<tabel>`
GROUP BY
  `naam`
ORDER BY
  COUNT(`naam`) DESC
Yes! in 1 x Antje!! TOP!! Dat is hem en die doet precies wat ik wil.... te gek he!

EN natuurlijk ook bedankt aan Davy, jouw voorzet zat behoorlijk in de goede richting...
En Bo, jij ook bedankt voor het meedenken.

thnx All!!
En nu nog even de backticks verwijderen.
Backtick = ` (naast de 1).

Die zijn echt niet nodig. En zo wel: dan doe je iets fout.

Reageren