Oke, bedankt!quote:Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Veel doeltreffender.quote:Op zondag 8 januari 2012 23:40 schreef dirkjo het volgende:
[..]
Oke, bedankt!
je houdt het trouwens wel lang vol om iemand niet het antwoord te geven, maar zelf te laten maken
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat nietquote:Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Dan moet je die andere lijst aanpassen zodat hij zo wordt:quote:Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:
[..]
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet
En toch heb je geen garantie dat het niet verandert.quote:Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
Je doet het nu door te selecteren op het aantal likes?quote:Op zondag 8 januari 2012 23:48 schreef dirkjo het volgende:
[..]
Er is nu alleen wel één probleempje. Ik vertelde net dat die oude query mij dezelfde waarde geeft als wanneer ik de hele lijst zou echo'en. Deze doet dat niet
Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
//edit
Deze manier geeft zelfs bij meerdere nummers dezelfde rank, terwijl dit toch echt iets is wat niet mag gebeuren
1 2 3 4 5 6 7 8 | SET @rownum := 0; SELECT * FROM ( SELECT @rownum := @rownum+1 AS song_rank, likes FROM songs ORDER BY likes DESC ) AS song_score WHERE songID = " . $songID |
Ik gebruik nu de manier van GM, een paar posts terug.quote:Op zondag 8 januari 2012 23:55 schreef The_Terminator het volgende:
[..]
Je doet het nu door te selecteren op het aantal likes?
[ code verwijderd ]
Bovenstaande zou je de rank terug moeten geven adhv het songid.
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.quote:Op zondag 8 januari 2012 23:57 schreef dirkjo het volgende:
[..]
Ik gebruik nu de manier van GM, een paar posts terug.
Heldquote:Op maandag 9 januari 2012 00:02 schreef GlowMouse het volgende:
Wijzig
SELECT songID FROM songs ORDER BY `likes` DESC
in
SELECT songID FROM songs ORDER BY `likes` DESC,songID DESC
En
SELECT COUNT(*) AS rank FROM songs WHERE likes > ...
in
SELECT COUNT(*) AS rank FROM songs WHERE likes > ... OR (likes = .... ANDS songID > ....)
Dit gebruik ik nu en werkt:quote:Op maandag 9 januari 2012 00:07 schreef The_Terminator het volgende:
[..]
Ah, ok. Ik heb mijn code zojuist wat aangepast en getest. Het functioneerd goed en geeft de positie terug adhv een gegeven songID, zoals je dat in je eerste versie had.
1 2 3 | <?php $rankQuery = mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE `likes` > ". $likes. " OR (`likes` = '". $likes ."' AND `songID` > ". $songID .")"); ?> |
True.quote:Op maandag 9 januari 2012 00:09 schreef GlowMouse het volgende:
maar die van mij is uiteraard sneller.
Oke, duidelijk!quote:Op maandag 9 januari 2012 21:13 schreef GlowMouse het volgende:
Dat is het inderdaad. Als jij een query zonder COUNT(*) doet dan gaan alle rijen van MySQL naar PHP zodat PHP ze kan tellen.
1 2 3 4 5 | SELECT Naam, Challenge, Voortgang, ( Voortgang / ( Challenge /100 ) ) AS Percentage FROM hardlopen ORDER BY Naam |
Ik had de 2e parameter bij ROUND gemist in mijn zoektocht, bedankt!quote:Op dinsdag 10 januari 2012 08:54 schreef Scorpie het volgende:
round gebruiken.
http://www.w3schools.com/sql/sql_func_round.asp
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |