Quand on ne sait pas employer mysql...
... on arrive à faire ce genre d'horreur :
J'ai un peu coupé les parties "html" inutiles (et fausses...), le code qui est intéressant est au niveau du php et du mysql.
Il faut savoir que la classe CUser reprend une bonne partie voire tous les éléments sélectionnés précédemment dans la requête...
La-dite requête prend environ 13s à elle seule.
Je vous laisse imaginer ensuite la boucle while() qui suit.... Sur plus de 3'000 résultats, c'est toujours bon ;)
Sans compter les injections SQL possibles...
Encore un code foireux que j'ai joyeusement taillé à coups de hache. D'autant que, sur le même site, j'avais déjà prévu une table pour les moteurs de recherche, permettant, via des index FullText, de rendre les recherches plus efficaces (même si encore lourdes)...
Happy coding!
<?php // connexion mysql. du blabla inutile et pour finir ceci: $tri=' critere desc, users.nickname asc'; if (! $_GET['tri']) $_GET['ordre']='desc'; switch ($_GET['tri']) { case 'inscription': $tri='users.date_inscription '.$_GET['ordre']; break; case 'connexion': $tri='users.last_connected '.$_GET['ordre']; break; case 'turnover': $tri='users_turnover.turnover '.$_GET['ordre']; break; case 'nom': $tri='users.nickname '.$_GET['ordre']; break; case 'moyenne' : $tri = 'moyenne '.$_GET['ordre'].' , users.nickname asc, new.nombre_notations desc'; break; default: break; } $query = " select users.nickname, users_turnover.turnover, users.pr_en_archive, optim_users_pages.title, new.nombre_notations, case when ((new.note_communication + new.note_documentation + new.note_qualite + new.note_timing)/4)=10 && new.nombre_notations=0 then 0 else ((new.note_communication + new.note_documentation + new.note_qualite + new.note_timing)/4) end as moyenne, case when (new.nombre_notations=0 && users_turnover.turnover <> 0) then users_turnover.turnover when (new.nombre_notations <> 0 && users_turnover.turnover = 0) then (new.note_communication + new.note_documentation + new.note_qualite + new.note_timing)/4 else (((new.note_communication + new.note_documentation + new.note_qualite + new.note_timing)/4) * users_turnover.turnover) end as critere from users, users_turnover, users_id_nickname, optim_users_pages, new where users.nickname=users_id_nickname.nickname and users_id_nickname.id=users_turnover.id and optim_users_pages.id=users_id_nickname.id and users.nickname=new.nickname order by $tri "; $res=mysql_query($query); while ($row=mysql_fetch_row($res)) { $user=new CUser($row[0]); if ((stristr(strip_tags($user->etudes), $keyword)) || (stristr(strip_tags($user->exp_professionnelle), $keyword)) || (stristr(strip_tags($user->connaissances_info), $keyword))) { echo "<tr><td><center>"; echo "<a href='".$row[3]."'>".$user->nickname."</a></center></td><td> </td>"; echo "<td><center>".get_date($user->date_inscription)."</center></td><td> </td>"; echo "<td><center>".count(str_to_vect($row[2]))."</center></td><td> </td>"; echo "<td><center>".$row[1]."€</center></td><td> </td>"; if ($row[4]!=0) { $nb = substr($row[5], 0, 4); echo "<td><table cellpadding=\"0\" cellpadding=\"0\" width=\"50%\"><tr>"; for ($i = 1; $i <= 10; $i++) { if ($i <= $nb) echo "<td><img src=\"images_news/bar_" . $i . ".gif\" border=\"0\" width=\"16px\" height=\"6px\"></td>"; else echo "<td><img src=\"images_news/bar_no.gif\" border=\"0\" width=\"16px\" height=\"6px\"></td>"; } echo "<td>(".substr($row[5], 0, 4)."/10)</td>"; echo "</tr></table></td>"; } else { echo "<td><img src=\"images_news/bar_no.gif\" border=\"0\" width=\"16px\" height=\"6px\"> ?</td>"; } echo "</tr>"; } } echo "</table>"; mysql_close(); ?>
J'ai un peu coupé les parties "html" inutiles (et fausses...), le code qui est intéressant est au niveau du php et du mysql.
Il faut savoir que la classe CUser reprend une bonne partie voire tous les éléments sélectionnés précédemment dans la requête...
La-dite requête prend environ 13s à elle seule.
Je vous laisse imaginer ensuite la boucle while() qui suit.... Sur plus de 3'000 résultats, c'est toujours bon ;)
Sans compter les injections SQL possibles...
Encore un code foireux que j'ai joyeusement taillé à coups de hache. D'autant que, sur le même site, j'avais déjà prévu une table pour les moteurs de recherche, permettant, via des index FullText, de rendre les recherches plus efficaces (même si encore lourdes)...
Happy coding!