Je suis un concepteur d'un site Web qui ordonne des résultats sur ses votes et ses âges.PHP MYSQL Query Algorithm Aide
J'ai trouvé l'algorithme reddit et je pense que c'est le meilleur à utiliser. Cependant, je ne sais pas comment l'implémenter en php. J'ai cherché google sur la façon de le faire mais je ne trouve aucun résultat. Je ne sais pas si c'est juste méchant parce que je ne sais pas exactement ce que je devrais chercher.
Je connais le PHP de base mais y a-t-il un moyen de le faire d'une manière simple.
Est-il possible de le faire comme ceci:
"SELECT * FROM table ORDER BY algorithm_here DESC";
L'algorithme de reddit est la suivante:
Log10(Z) + ((Y*Ts)/45000) = rank
A = time posted
B = 00:00:001 am 1/1/2010
U = Up votes
D = Down votes
Ts = A-B
X = U-D
Y =
1 if x>0
0 if x=0
-1 if x<0
z = max(abs(x),1)
Je sais comment créer des fonctions en PHP par exemple function test() {... Cependant, cela fonctionnerait-il pour la requête? algorithme de classement de fonction ($ a, $ u, $ d) { $ ts = $ a - 1262304001; $ x = $ u - $ d; if ($ x> 0) \t $ y = 1; elseif ($ x = 0) \t $ y = 0; elseif ($ x <0) \t $ y = -1; \t $ z = max (abs ($ x), 1); rang $ = log10 ($ z) + (($ y * $ ts)/45000); impression (rang $); } – Xplane
la création d'une fonction dans php n'est pas du tout conseillée. Parce que si vous le faites, la seule façon de le faire fonctionner correctement est de charger toutes les lignes et de passer chacune à travers le fn pour générer le rang et ensuite réorganiser la liste en utilisant les rangs et ensuite le découper à la page nécessaire. cela fonctionnera si vous avez seulement moins de lignes comme un total de 1000 lignes ou plus. bt si vous avez plus de 1 rangs lakh et tout. il est impossible de l'exécuter car php manquera de mémoire lors du chargement de toutes les lignes. Donc, la meilleure façon de le faire est via mysql. Mais vous ne devez pas aller avec UDF comme considérablement avancé. –
donc vous pouvez soit riter la fonction eux-mêmes ou écrire une fonction stockée. Mais les UDF sont beaucoup plus rapides que la bth. –