2 query-vragen
Even een kort vraagje,
Ik maak een soort top 10 pagina voor een spel.
ik heb nu een code, maar ik gebruik 10 mysqlquerys, en ik ben er zeker van dat dit korter kan.
Ik heb nu dus dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$ttr1 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 0,1");
$ttr2 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 1,1");
$ttr3 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 2,1");
$ttr4 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 3,1");
$ttr5 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 4,1");
$ttr6 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 5,1");
$ttr7 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 6,1");
$ttr8 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 7,1");
$ttr9 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 8,1");
$ttr10 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 9,1");
$tt1 = mysql_fetch_assoc($ttr1);
$tt2 = mysql_fetch_assoc($ttr2);
$tt3 = mysql_fetch_assoc($ttr3);
$tt4 = mysql_fetch_assoc($ttr4);
$tt5 = mysql_fetch_assoc($ttr5);
$tt6 = mysql_fetch_assoc($ttr6);
$tt7 = mysql_fetch_assoc($ttr7);
$tt8 = mysql_fetch_assoc($ttr8);
$tt9 = mysql_fetch_assoc($ttr9);
$tt10 = mysql_fetch_assoc($ttr10);
?>
$ttr1 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 0,1");
$ttr2 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 1,1");
$ttr3 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 2,1");
$ttr4 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 3,1");
$ttr5 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 4,1");
$ttr6 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 5,1");
$ttr7 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 6,1");
$ttr8 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 7,1");
$ttr9 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 8,1");
$ttr10 = mysql_query("SELECT naam,punten FROM accounts ORDER BY punten DESC LIMIT 9,1");
$tt1 = mysql_fetch_assoc($ttr1);
$tt2 = mysql_fetch_assoc($ttr2);
$tt3 = mysql_fetch_assoc($ttr3);
$tt4 = mysql_fetch_assoc($ttr4);
$tt5 = mysql_fetch_assoc($ttr5);
$tt6 = mysql_fetch_assoc($ttr6);
$tt7 = mysql_fetch_assoc($ttr7);
$tt8 = mysql_fetch_assoc($ttr8);
$tt9 = mysql_fetch_assoc($ttr9);
$tt10 = mysql_fetch_assoc($ttr10);
?>
Ik gebruik bij deze geen while, omdat er getalletjes voor moeten komen te staan.
Mijn principe is op dip moment oneveer dit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
echo'
1. '.$tt1['naam'].', '.$tt1['punten'].'<br>
2. '.$tt2['naam'].', '.$tt2['punten'].'<br>
';
# en ga zo maar door.
?>
echo'
1. '.$tt1['naam'].', '.$tt1['punten'].'<br>
2. '.$tt2['naam'].', '.$tt2['punten'].'<br>
';
# en ga zo maar door.
?>
Kan dit korter naar 1 Mysql_query?
En wat moet ik dan neerzetten in plaats van mysql_fetch_assoc, en in plaats van $tt1['naam'], $tt2['naam'], etc.
En ik heb ook een 2e vraag.
Is er een mogelijkheid op een mysql query met select eruit te halen op welk rijnummer het gevonden resultaat staat..?
Stel ik heb dit:
id | naam
-------------
1 | Ro
3 | Bo
2 | Ra
kan ik dan met een query eruithalen dat Ra op rij 2 staat (met order by ID desc)
(misschien een beetje vaag, zeg dat dan, dan probeer ik het anders te formuleren)
Robbin
Gewijzigd op 27/07/2010 04:20:34 door Maestro Roboroads
Die nummering kan je automatisch doen. php kan ook tellen tegenwoordig.
Met ++ in een loop zal hij net zo lang optellen totdat het limiet van 10 is bereikt in dit geval.
Vraag 2 is mij een beetje onduidelijk wat je wil bereiken. Als je hem wil selecteren op het id, dan kan je er toch een hyperlink van maken met een id erin?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sql = "SELECT naam,
punten
FROM
accounts
ORDER
BY
punten
DESC
LIMIT 10";
$result = mysql_query($sql);
$i = 1;
while($row = mysql_fetch_assoc($result))
{
echo $i++. ' | '. $row['naam']. ' heeft '.$row['punten'].'<br />';
}
?>
$sql = "SELECT naam,
punten
FROM
accounts
ORDER
BY
punten
DESC
LIMIT 10";
$result = mysql_query($sql);
$i = 1;
while($row = mysql_fetch_assoc($result))
{
echo $i++. ' | '. $row['naam']. ' heeft '.$row['punten'].'<br />';
}
?>
Gewijzigd op 27/07/2010 07:51:41 door Bart V B
Dat met ++ wits ik nog niet.
Wat ik bedoel met mn 2e vraag, even duidelijker:
Stel, Ik ben een tabel:
naam | punten
Ro | 10
bart| 40
mark | 20
En met een mysql_query met "ORDER BY punten DESC" zorg is tat ze worden gesorteerd op punten.
kan ik in dezelfde query ies neerzetten dat mij kan weergeven op de hoeveelste rij bijvoorbeeld Mark staat?
Het is de bedoeling dat iemand zijn rank kan zien op de home page, Dat hij kan zien op hoeveelste plaats in de topscore hij staat