Gå til innhold

Telle oppover når flere resultater har samme verdi


Anbefalte innlegg

Skrevet

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 :)

Videoannonse
Annonse
Skrevet

$array;
while($rad = mysql_...)
{
  $array[$rad[navn]]++;
}

$keys =  array_keys($array);
$size = sizeof($keys);
for($i = 0; $i < $size; $i++)
  echo $keys[$i].': '.$array[$keys[$i]];

 

Iallfall i teorien :)

Skrevet

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:

Skrevet
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 ;)

Skrevet

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?

Skrevet
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];

Skrevet (endret)

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
Skrevet (endret)

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
Skrevet (endret)

Der ja :)

Tusen takk for hjelpen!

 

edit: Det var det første forslaget som fungerte.

Endret av anners

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...