abonnement Unibet Coolblue Bitvavo
pi_106584339
quote:
0s.gif Op zondag 8 januari 2012 23:04 schreef GlowMouse het volgende:
De oplossing van T_T is alleen daarom al niet goed omdat hij mysql_real_escape_string en intval door elkaar haalt.
Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergeten :')
  zondag 8 januari 2012 @ 23:13:04 #242
75592 GlowMouse
l'état, c'est moi
pi_106584631
quote:
0s.gif Op zondag 8 januari 2012 23:06 schreef dirkjo het volgende:

[..]

De kolom 'likes' vertelt me de positie, die kolom bevat een getal. Met COUNT ga je alle rijen tellen die `songID` '$songID' bevatten, ofniet? :P
Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.
quote:
0s.gif Op zondag 8 januari 2012 23:07 schreef The_Terminator het volgende:

[..]

Daarom vroeg ik of songid een numerieke waarde zou zijn. Ik gebruikt meestal is_numeric om te bepalen of de ingevoerde waarde ook daadwerkelijk numeriek is en als dat zo is voer ik het aan de query zonder de escape_string functie te gebruiken. En ik heb een vermoeden dat ik in mijn query een group by ben vergeten :')
Probeer het niet goed te praten :{w. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106585192
quote:
0s.gif Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:

[..]

Of niet, want je weet toch al dat dat precies één rij is. Je wilt juist tellen hoeveel rijen een hogere score hebben. Je functie zou dus "songRank($likes)" moeten zijn.

[..]

Probeer het niet goed te praten :{w. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.
pi_106585278
quote:
0s.gif Op zondag 8 januari 2012 23:13 schreef GlowMouse het volgende:

Probeer het niet goed te praten :{w. Je stopt output van mysql_real_escape_string in een query zonder quotes om die output en dat is onveilig.
Ik probeer niets goed te praten :{w . Ik ben vergeten die escapefunctie te verwijderen, de quotes had ik wel weggehaald waardoor het lijkt dat ik de functie gebruik in een query zonder quotes.

Zoals ik al aangaf gebruik ik de functie is_numeric en return false mocht dat niet zo zijn. In de query gebruik ik dan geen quotes om de variable (het is immers numeriek) en laat het escapen achterwege aangezien de waarde al is geverifieerd.
  zondag 8 januari 2012 @ 23:25:18 #245
75592 GlowMouse
l'état, c'est moi
pi_106585348
quote:
0s.gif Op zondag 8 januari 2012 23:23 schreef dirkjo het volgende:

[..]

Maar wat gebeurd er dan als meerdere nummers hetzelfde aantal likes hebben? Dan pakt die de eerste de beste rij die het gegeven aantal likes heeft.
Heb je die vraag eens bij je eigen query gesteld?

Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106585503
quote:
0s.gif Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:

[..]

Heb je die vraag eens bij je eigen query gesteld?

Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.
  zondag 8 januari 2012 @ 23:29:03 #247
75592 GlowMouse
l'état, c'est moi
pi_106585580
quote:
0s.gif Op zondag 8 januari 2012 23:27 schreef dirkjo het volgende:

[..]

Jazeker, maar als ik mijn manier gebruik garandeer ik wel dat de plek die de pagina over het nummer aangeeft gelijk is aan de plek die staat in de pagina waar de complete lijst van alle nummers staat.
Dat is niet waar, het resultaat berust op toeval.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106585645
En dat zou het niet doen in jouw geval, of valt zoiets niet te vermijden?
  zondag 8 januari 2012 @ 23:30:38 #249
75592 GlowMouse
l'état, c'est moi
pi_106585678
quote:
5s.gif Op zondag 8 januari 2012 23:30 schreef dirkjo het volgende:
En dat zou het niet doen in jouw geval, of valt zoiets niet te vermijden?
quote:
0s.gif Op zondag 8 januari 2012 23:25 schreef GlowMouse het volgende:

[..]

Ik definieer de plek als 1+[het aantal songs met meer likes]. Het aantal songs met meer likes kun je met één query tellen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106585919
quote:
0s.gif Op zondag 8 januari 2012 23:30 schreef GlowMouse het volgende:

[..]

[..]

Oke, dus (even snel) zou jouw query er ongeveer zo uitzien:
1
2
3
<?php
 mysql_query
("SELECT COUNT(*) AS rank FROM songs WHERE likes > "$likes" ");
?>

Correct my if I'm wrong
  zondag 8 januari 2012 @ 23:37:21 #251
75592 GlowMouse
l'état, c'est moi
pi_106586019
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106586176
quote:
14s.gif Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
Oke, bedankt! :)
je houdt het trouwens wel lang vol om iemand niet het antwoord te geven, maar zelf te laten maken :P
pi_106586476
quote:
0s.gif 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 :P
Veel doeltreffender. :)
pi_106586574
quote:
14s.gif Op zondag 8 januari 2012 23:37 schreef GlowMouse het volgende:
Precies zo. Alleen dan nog eentje bij het resultaat optellen.
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 :P

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 :o
pi_106586584
quote:
0s.gif Op zondag 8 januari 2012 23:46 schreef Diabox het volgende:

[..]

Veel doeltreffender. :)
Compleet waar :)
  zondag 8 januari 2012 @ 23:50:59 #256
75592 GlowMouse
l'état, c'est moi
pi_106586661
quote:
0s.gif 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 :P
Dan moet je die andere lijst aanpassen zodat hij zo wordt:
1. song12 met een socore van 34
2. song3 met een socore van 24
2. song6 met een socore van 24
4. song3 met een socore van 3
quote:
Je zei dat dat bij die oude query toevallig zo gebeurde, maar na een flink aantal refreshes blijft die lijst precies hetzelfde.
En toch heb je geen garantie dat het niet verandert.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106586844
Check je ook even m'n edit. Heb ik iets fout gedaan dat dit gebeurd?
pi_106586854
quote:
0s.gif 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 :P

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 :o
Je doet het nu door te selecteren op het aantal likes?

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

Bovenstaande zou je de rank terug moeten geven adhv het songid.

[ Bericht 6% gewijzigd door The_Terminator op 09-01-2012 00:06:46 ]
pi_106586939
quote:
0s.gif 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.
Ik gebruik nu de manier van GM, een paar posts terug.
  maandag 9 januari 2012 @ 00:02:57 #260
75592 GlowMouse
l'état, c'est moi
pi_106587129
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 > ....)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106587303
quote:
0s.gif Op zondag 8 januari 2012 23:57 schreef dirkjo het volgende:

[..]

Ik gebruik nu de manier van GM, een paar posts terug.
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.
pi_106587321
quote:
0s.gif 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 > ....)
Held :)
pi_106587341
quote:
0s.gif 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.
Dit gebruik ik nu en werkt:
1
2
3
<?php
$rankQuery 
mysql_query("SELECT COUNT(*) AS rank FROM songs WHERE `likes` > "$likes" OR (`likes` = '"$likes ."' AND `songID` > "$songID .")");
?>

Still, thanks. :)
  maandag 9 januari 2012 @ 00:09:59 #264
75592 GlowMouse
l'état, c'est moi
pi_106587377
Die van T_T werkt ook, maar die van mij is uiteraard sneller.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106587491
quote:
7s.gif Op maandag 9 januari 2012 00:09 schreef GlowMouse het volgende:
maar die van mij is uiteraard sneller.
True.
pi_106587551
Nooit verwacht dat m'n zondag avond nog leerzaam zou zijn :7
pi_106617797
Als we dan toch over COUNT hebben. Is het verstandiger om gebruik te maken van de COUNT functie om te kijken of een user bestaat, dan gebruik je maken van mysql_num_rows? Ik gebruik nu die laatste, maar dit lijkt me (nu ik een beetje door heb hoe COUNT werkt) vrij omslachtig.
  maandag 9 januari 2012 @ 21:13:20 #268
75592 GlowMouse
l'état, c'est moi
pi_106617981
Dat is het inderdaad. Als jij een query zonder COUNT(*) doet dan gaan alle rijen van MySQL naar PHP zodat PHP ze kan tellen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106618465
quote:
0s.gif 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.
Oke, duidelijk! :)
  FOK!-Schrikkelbaas dinsdag 10 januari 2012 @ 08:53:37 #270
1972 Swetsenegger
Egocentrische Narcist
pi_106631735
Ik heb de volgende query

1
2
3
4
5
SELECT Naam, Challenge, Voortgang, (
Voortgang / ( Challenge /100 )
) AS Percentage
FROM hardlopen
ORDER BY Naam

Maar Percentage is dan tot 8 decimalen achter de komma. Kan ik dit eenvoudig beperken tot 2?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')