abonnement Unibet Coolblue
pi_106582316
quote:
0s.gif Op zondag 8 januari 2012 22:20 schreef cablegunmaster het volgende:

[..]

Dus je wil dat de site tegen je zegt Dit nieuwsartikel of letter A Staat op nummer 2 van de hele lijst. en de rest negeren? Dan zou ik een order by desc. doen en vervolgens het eruit halen met echo. een Getal++; in de for lus doen (of welke lus) en als het overeen komt welke positie het is dus als de id te voorschijn komt die nodig is dan laat je het pas Echo'en welke positie het is.
Voila? :P of snap ik het verkeerd :)?

Dan krijg je als resultaat : A staat op X positie en heeft 4 likes.
Je snapt het ;)
Dat is inderdaad waar ik aan dacht, maar vroeg me of daar geen makkelijkere oplossing voor was. Kennelijk niet; dus ga dit maar erin gooien, bedankt! :)
  zondag 8 januari 2012 @ 22:37:57 #227
75592 GlowMouse
l'état, c'est moi
pi_106582777
Select count(*) op de rijen met meer likes als het aantal rijen klein is, anders denormaliseren en de positie ook in de rij opslaan
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106583090
quote:
0s.gif Op zondag 8 januari 2012 22:37 schreef GlowMouse het volgende:
Select count(*) op de rijen met meer likes als het aantal rijen klein is, anders denormaliseren en de positie ook in de rij opslaan
Positie moet altijd up-to-date blijven omdat users hem kunnen bepalen (door middel van de likes).
Heb nu de volgende functie in elkaar gezet, verbetering welkom ofcourse.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    
function songRank($songID){
        
$rank 0;
        
$getrank mysql_query("SELECT songID FROM songs ORDER BY `likes` DESC");
        while(
$row mysql_fetch_array($getrank)){
            
$rank++;
            if(
$songID == $row['songID']){
                return 
$rank;
            }
        }
    }
?>
  zondag 8 januari 2012 @ 22:48:45 #229
75592 GlowMouse
l'état, c'est moi
pi_106583335
Dat is een domme query, net alsof je niet snapt wat COUNT(*) en WHERE doen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106583410
quote:
7s.gif Op zondag 8 januari 2012 22:48 schreef GlowMouse het volgende:
Dat is een domme query, net alsof je niet snapt wat COUNT(*) en WHERE doen.
Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.
pi_106583566
quote:
11s.gif Op zondag 8 januari 2012 22:50 schreef dirkjo het volgende:

[..]

Nog nooit gebruik gemaakt van COUNT(*), maar ik zal er eens naar kijken.
1SELECT COUNT(*) AS aantal FROM songs WHERE songID = '" . mysql_real_escape_string($songID) . "' ORDER BY `likes` DESC

Het aantal zit dan in: $row['aantal']

Edit: is songID numeriek of een string?
pi_106583570
--- laat --

[ Bericht 46% gewijzigd door dirkjo op 08-01-2012 22:59:38 ]
pi_106583788
quote:
0s.gif Op zondag 8 januari 2012 22:52 schreef The_Terminator het volgende:

[..]
[ code verwijderd ]

Het aantal zit dan in: $row['aantal']

Edit: is songID numeriek of een string?
songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terug 8)7
pi_106583866
quote:
9s.gif Op zondag 8 januari 2012 22:56 schreef dirkjo het volgende:

[..]

songID is nummeriek, maar je query geeft geen positie terug. Ik krijg overal '1' terug 8)7
Oeps... Onderstaande fixt het:

1SELECT COUNT(*) AS aantal, songID FROM songs WHERE songID = " . mysql_real_escape_string($songID) . " ORDER BY `likes` DESC
pi_106583927
quote:
0s.gif Op zondag 8 januari 2012 22:58 schreef The_Terminator het volgende:

[..]

Oeps... Onderstaande fixt het:
[ code verwijderd ]

Nee hoor
  zondag 8 januari 2012 @ 23:01:02 #236
75592 GlowMouse
l'état, c'est moi
pi_106584017
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106584079
quote:
7s.gif Op zondag 8 januari 2012 23:01 schreef GlowMouse het volgende:
[ afbeelding ]
Doe eens lief; kom eens met jouw oplossing.
  zondag 8 januari 2012 @ 23:02:41 #238
75592 GlowMouse
l'état, c'est moi
pi_106584102
Welke rijen moet je tellen om de rank te bepalen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  zondag 8 januari 2012 @ 23:04:13 #239
75592 GlowMouse
l'état, c'est moi
pi_106584181
De oplossing van T_T is alleen daarom al niet goed omdat hij mysql_real_escape_string en intval door elkaar haalt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_106584322
quote:
7s.gif Op zondag 8 januari 2012 23:02 schreef GlowMouse het volgende:
Welke rijen moet je tellen om de rank te bepalen.
Geen rijen, maar één kolom in een rij. (Ja ik weet; dat heb ik een paar keer verkeerd gezegd zie ik net ;( ). |:(

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
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
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')