Gå til innhold

Telle oppover når flere resultater har samme verdi


Anbefalte innlegg

Vet ikke helt hvor mye dere skjønte av emnetittelen... Det jeg lurer på er en god måte å få resutatene(fra spørring mot MySQL, kan legge ut koden hvis det trengs)

http://www.noe.com/ingenting.php

http://www.noe.com/ingenting.php

http://www.noe.com/mangeting.php

http://www.noe.com/mangeting.php

http://www.noe.com/ingenting.php

http://www.noe.com/ingenting.php

 

til å automatisk vises som

 

http://www.noe.com/ingenting.php: 4

http://www.noe.com/mangeting.php: 2

 

Altså at når man har et resultat som er likt som et annet vil det legge til en i verdien av det andre istedenfor å vise et nytt resultat. Sikkert et dumt spørsmål, men trenger det veldig til et lite stats-script jeg skriver.

Trenger ikke noe ferdig kode, men hadde vært fint med en ordentlig forklaring på hvordan det kan gjøres. På forhånd takk :)

Lenke til kommentar
Videoannonse
Annonse

Men siden dette dreier det seg om en spørring fra en database, så er det mye, mye raskere og enklere å la MySQL ta seg av tellingen. Noe i retning av

 

SELECT url, Count(url) FROM urlTabell GROUP BY url

Og for å gjøre det enda raskere kan man indeksere de aktuelle tabellfeltene.

 

Sleivspark til Ernie: Faktisk sparer man mer eksekveringstid på å utnytte DBMS til det fulle enn det man gjør på å unngå objekt-orientert kode i PHP :whistle:

Lenke til kommentar
Sleivspark til Ernie: Faktisk sparer man mer eksekveringstid på å utnytte DBMS til det fulle enn det man gjør på å unngå objekt-orientert kode i PHP :whistle:

5742167[/snapback]

Nå var jeg faktisk ikke klar over at det var mulig i mysql da ;)

Lenke til kommentar
Tenkte jeg skulle prøve å følge måten din, Mr. Floppy, men hva må jeg gjøre etter det du skrev for å få resultatene til å skrives ut som

[adresse]: [antall]  sånn som koden til Ernie gjør?

5742237[/snapback]

Hmm ...

while ($rad = mysql_fetch_array(...))
  echo $rad[0].': '.$rad[1];

Lenke til kommentar

Neh, det gikk heller dårlig. Alt som kommer er :: (altså det som er mellom selve resultatene).

Men når jeg ganske enkelt tar

while ($rad = mysql_fetch_array(...))
echo $rad

skrives det ut "ArrayArray".

 

Skriver jeg

while ($rad = mysql_fetch_array(...))
foreach($rad as $array)
 echo $array"<br>";

 

skrives det ut

[antall]

[antall]

[adresse]

[adresse]

 

altså dobbelt opp for hvert resultat, og antall og adresse skrives ut via samme variabelen.

 

Beklager hvis jeg spør dumt her, men noen forslag til hvordan jeg kan få ordnet det på den måten jeg vil?

Endret av anners
Lenke til kommentar

Det var jo rart. Jeg mente mysql_fetch_array returnerte både en numrisk og en assosiert array som standard, men det er jo fult mulig jeg bommer litt her så da kan du jo alltids prøve med mysql_fetch_array($var, MYSQL_NUM);

 

Edit:

 

Alternativt kan man endre spørringen til

SELECT url, Count(url) as antall FROM urlTabell GROUP BY url

Da har du $rad['url'] og $rad['antall']

Endret av Ernie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...