[php] top site plaats tonen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
Hoi, ik wou even weten of je simpel uit mysql de plaats kan pakken waar een bepaalde site in top staat.
of is dit eenigste manier:
PHP:
1
2
3
4
5
6
7
8
$result = mysql_qeury("select * from sites order by hits DESC"); 
$nr = 0;
while ($row = mysql_fetch_array($result)) {
     $nr++;
     if ($row[id] == $id) { break; }
}

echo $nr;

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Zie de manual of onze search eens bij 'limit', en leer meteen aan dat normale DBMS'en het 'top' keyword hanteren.

[edit]
hmm nevermind je vraag is gewoon erg onduidelijk. Zou al helpen als je parsebare code had (mysql_qeury gaat niet werken en zo :X )

[ Voor 40% gewijzigd door curry684 op 14-07-2004 01:30 ]

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Ik begrijp je vraag ook niet helemaal, maar waarom zet je die $id niet gewoon in je query?

code:
1
2
3
4
5
$result = mysql_qeury("select * from sites where id="+$ID+" order by hits DESC"); 
} 

echo $nr;
?>


bovenstaande code werkt zeker weten niet, maar het idee is wel duidelijk denk ik.

Of zit ik verkeer te kijken, en wil je per site groeperen en tellen?

code:
1
2
3
4
5
6
7
8
9
$result = mysql_qeury("select sitenaam,count(id) from sites group by sitenaam order by hits"); 
$nr = 0; 
while ($row = mysql_fetch_array($result)) { 
     $nr++; 
     if ($row[id] == $id) { break; } 
} 

echo $nr;
?>

[ Voor 43% gewijzigd door Verwijderd op 14-07-2004 02:14 ]


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
nouja ik wil een toplist maken dus
1. startpagina.nl
2. tweakers.net
3. fok.nl
maar nu wil ik bijvoorbeeld kijken op welke plek id 2 bijvoorbeeld staat
zoals hij ook in bovenste voorbeeld script doet die ik snel even uittypte daarvoor die 1ne typfout van query :)

dus dat niet op de toplist pagina maar op aparte pagina waar info over die site staat. bijvoorbeeld.

dusse zeg maar dat ik dit kan doen:
Site naam: tweakers.net
hits: 4000
plaats: 2

[ Voor 92% gewijzigd door Martink op 14-07-2004 02:35 ]


Acties:
  • 0 Henk 'm!

  • kieltju
  • Registratie: Mei 2002
  • Laatst online: 15-09 21:52
volgens mij begrijp ik je.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
$res = "
SELECT
  COUNT(1) as `aantal` 
FROM
  `tabel` 
WHERE
  `iets`='".$var."' 
GROUP BY
  `id` 
ORDER BY
  `aantal` 
LIMIT 0, 5";

$query = Mysql_Query($res);
While ( $var = Mysql_Fetch_Assoc($query) )
  {
    // doe iets
  }
?>


Zoiets?

[ Voor 51% gewijzigd door kieltju op 14-07-2004 03:24 ]

<Brrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr>


Acties:
  • 0 Henk 'm!

Verwijderd

Kan MySQL wel orderen by een aggregate field?

Voor de rest is dat imo z'n vraag niet.

Hij heeft zeg maar zo'n tabel:
code:
1
2
3
4
ID   Site               Hits
1   www.google.nl      10000
2   www.tweakers.net    2000000
3    www.fokzine.nl   1


Nu wil hij daar uithalen de site 'www.tweakers.net', inclusief de ranking die die site heeft (in dit geval één).

[ Voor 6% gewijzigd door Verwijderd op 14-07-2004 03:26 ]


Acties:
  • 0 Henk 'm!

  • kieltju
  • Registratie: Mei 2002
  • Laatst online: 15-09 21:52
Verwijderd schreef op 14 juli 2004 @ 03:25:
Kan MySQL wel orderen by een aggregate field?

Voor de rest is dat imo z'n vraag niet.

Hij heeft zeg maar zo'n tabel:
code:
1
2
3
4
ID   Site               Hits
1   www.google.nl      10000
2   www.tweakers.net    2000000
3    www.fokzine.nl   1


Nu wil hij daar uithalen de site 'www.tweakers.net', inclusief de ranking die die site heeft (in dit geval één).
ja, dat kan mysql.

dus hij wil gewoon het id selecteren?

doe ik daar al die moeite voor B)

<Brrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr>


Acties:
  • 0 Henk 'm!

Verwijderd

kieltju schreef op 14 juli 2004 @ 03:27:
[...]


ja, dat kan mysql.

dus hij wil gewoon het id selecteren?

doe ik daar al die moeite voor B)
Nee dat wil hij niet :P

Als je de tabel uit mijn voorbeeld neemt, daaruit maakt hij een pagina met 'topsites', gerangschikt naar hits. Die pagina ziet er dan dus zo uit:

code:
1
2
3
4
ranking      site              hits
1            www.tweakers.net  2000000
2            www.google.nl     10000
3            www.fokzine.nl    1


Die ranking wordt dus bepaald door de hoeveelheid hits, is dus niet het id en is niet opgeslagen in de database.

Nu wil hij dat iemand ook de stats voor een site kan opvragen, waarbij diezelfde ranking opgegeven word. Als iemand dus 'www.google.nl' zou selecteren (welke ranking 2 heeft op basis van z'n hits, maar ID 3 in de database) dan wil hij dus weergeven:

www.fokzine.nl
hits: 10000
ranking: 2
edit:

althans, dat is wat ik van zijn vraag begrepen heb

[ Voor 10% gewijzigd door Verwijderd op 14-07-2004 03:34 ]


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

TS, je kunt toch gewoon iets als
code:
1
 SELECT naam_site ... ORDER BY hits LIMIT [ranking-1], 1 WHERE id = [ID]
doen?

[ Voor 23% gewijzigd door X-Lars op 14-07-2004 11:42 ]


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
X-Lars schreef op 14 juli 2004 @ 11:39:
TS, je kunt toch gewoon iets als
code:
1
 SELECT naam_site ... ORDER BY hits LIMIT [ranking-1], 1 WHERE id = [ID]
doen?
jamaar dan heb ik toch nog steeds niet in welke plek hij in de top100 staat? hij moet gewoon sorteren op hits en kijken op welke rij hij staat van bovenaf getelt.

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Je kunt het ook (gesorteerd) in een array gooien en dan de waarde of de naam eruit halen.

Acties:
  • 0 Henk 'm!

  • -Odysseus-
  • Registratie: Oktober 2002
  • Laatst online: 21-01-2009
X-Lars schreef op 14 juli 2004 @ 18:27:
Je kunt het ook (gesorteerd) in een array gooien en dan de waarde of de naam eruit halen.
Je kan het gewoon met 1 query doen...

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:29

crisp

Devver

Pixelated

code:
1
2
3
4
5
6
7
1) SELECT hits FROM table WHERE id = [ID]
  (sla resultaat op)
2) SELECT COUNT(hits) FROM table WHERE hits > [HITS]
  (waarbij [HITS] het resultaat van 1) is)
3) Tel bij uitkomst van 2) 1 op en je hebt de ranking

4) Nu nog 1,2&3 combineren :P

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

tabel:
code:
1
2
3
4
ID   Site                Hits
1    www.google.nl       1
2    www.tweakers.net    2000000
3    www.fokzine.nl      10

query enzo:
PHP:
1
2
3
4
5
6
$result = mysql_query("select * from sites order by hits DESC"); 
$nr = 1;
while ($row = mysql_fetch_array($result)) {
     echo $nr . " " . $row['Site'] . " " . $row['Hits'] . "<br>";
     $nr++;
}

output:
code:
1
2
3
1    www.tweakers.net    2000000
2    www.fokzine.nl      10
3    www.google.nl       1


edit:

Wil je zoiets? Of begrijp ik de vraag (ook al) verkeerd?

[ Voor 16% gewijzigd door Sosabowski op 14-07-2004 19:16 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
crisp schreef op 14 juli 2004 @ 19:11:
code:
1
2
3
4
5
6
7
1) SELECT hits FROM table WHERE id = [ID]
  (sla resultaat op)
2) SELECT COUNT(hits) FROM table WHERE hits > [HITS]
  (waarbij [HITS] het resultaat van 1) is)
3) Tel bij uitkomst van 2) 1 op en je hebt de ranking

4) Nu nog 1,2&3 combineren :P
PHP:
1
2
3
4
5
6
7
8
$result = mysql_query("select hits from sites where id=$_GET[id]");

if ($row = mysql_fetch_array($result)) {
    $result2 = mysql_query("SELECT count(hits) as place from sites WHERE hits > $row[hits]");
    if ($row2 = mysql_fetch_array($result2)) {
        $place = $row2[place]+1; 
    }
}

aha zo dus :)
werkt prima dacht alleen dat het ook in 1 mysql query kon maar blijkbaar niet

[ Voor 5% gewijzigd door Martink op 14-07-2004 19:47 ]


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Het lijkt me dat de oplossing van IorGie wel iets handiger is... nu krijg je nogal een hoop queries voor iets eenvoudigs.

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
Cavorka schreef op 14 juli 2004 @ 19:59:
Het lijkt me dat de oplossing van IorGie wel iets handiger is... nu krijg je nogal een hoop queries voor iets eenvoudigs.
die van hem is een hele lijst ik moet hem maar van 1 id hebben :)

Acties:
  • 0 Henk 'm!

  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 05-09 21:19

Wacky

Dr. Lektroluv \o/

Martink schreef op 14 juli 2004 @ 20:48:
[...]


die van hem is een hele lijst ik moet hem maar van 1 id hebben :)
LIMIT 0,1 :?

Nu ook met Flickr account


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
ehh de plek waar hij in de toplist staat hoef ik maar van 1 id te hebben dus hij moet tellen :)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Cavorka schreef op 14 juli 2004 @ 19:59:
Het lijkt me dat de oplossing van IorGie wel iets handiger is... nu krijg je nogal een hoop queries voor iets eenvoudigs.
Nofi, maar de oplossing van IorGie is ranzig. Het kan gewoon met 1 query hoor. (als je mysql 4 hebt iig wel).

[ Voor 5% gewijzigd door Grijze Vos op 15-07-2004 03:29 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Martink
  • Registratie: Juni 2001
  • Laatst online: 11-02 12:38
Grijze Vos schreef op 15 juli 2004 @ 03:28:
[...]

Nofi, maar de oplossing van IorGie is ranzig. Het kan gewoon met 1 query hoor. (als je mysql 4 hebt iig wel).
nee heb mysql 3.23.58 :(
dan maar zo laten zoals ik hierboven al toonde :)
Pagina: 1