8797 sujets

Développement web côté serveur, CMS

Bonjours, sur une page de mon site j'ai inséré plusieurs jonctions, mais je remarque un fort ralentissement lors de l'éxecution de ma page à cause d'eux.

Je vous en montre une, peut etre certains trouveront une anomalie:

// Affichage des objets.
	$itemsquery = doquery ("SELECT id, type, name, buycost, special , image, description FROM {{table}} WHERE type IN ('1', '2', '3') ORDER BY type","items");

	$i=0;
	while($itemsrow = mysql_fetch_row($itemsquery)){
		$i++; 
		$tabl[$i]=$itemsrow[0];
	}

	// Affichage des objets classement armes
	for ($count1=0 ;$count1<count($tabl);$count1++) {

		$itemsquery = doquery ("SELECT weaponname, count(weaponid) as occurences FROM {{table}} WHERE weaponid >= 0  GROUP BY weaponid ORDER by occurences DESC LIMIT 5 ","users");  
		$itemsquery = doquery ("SELECT u.weaponname, count(u.weaponid) as occurences, i.buycost, i.image, i.special  FROM {{table}} AS u, rpg_items AS i WHERE u.weaponid >= 0 AND i.id = u.weaponid GROUP BY u.weaponid ORDER by occurences DESC LIMIT 5","users");  
		
		$itemsrow = 0;
		$login['armes'] ='';

		while ($itemsrow = mysql_fetch_array($itemsquery)) 
		{
			$login['armes'] .='<table border="0"><tr><td><img src="images/objets/'.$itemsrow['image'].'.jpg" title="'.$itemsrow['weaponname'].'" alt="'.$itemsrow['weaponname'].'"></td>
            <td><b>Nom: </b><span class="rose3">'.$itemsrow['weaponname'].'</span><br><b>Prix: </b><span class="rose3">'.$itemsrow['buycost'].' rubis</span><br><b>Equipé: </b><span class="rose3">'.$itemsrow['occurences'].' perso.</span><br></td></tr></table>';
		}	
	}
Bonjour,

Qu'est-ce que tu dois récupérer, et dans quelle(s) tables ?

Il y a 3 requêtes dans le code que tu donnes, qui semblent aller chercher plusieurs fois les mêmes données, et peuvent donc probablement être optimisées, mais sans la structure des tables et le résultat à atteindre, difficile d'en dire plus ...
Modifié par Thomas D. (17 Jan 2008 - 19:40)
En fait c'est pour faire un classement d'objet (table items) en fonction de la table users. Les objets classé en premier sont les objets les plus utilisés, donc les plus présent dans la tables users

Tu veux d'autres infos?
sff a écrit :
En fait c'est pour faire un classement d'objet (table items) en fonction de la table users. Les objets classé en premier sont les objets les plus utilisés, donc les plus présent dans la tables users

Tu veux d'autres infos?
Oui, quels sont les champs des 2 tables et sur lequel fais-tu une jointure ?

Si je comprends bien, il y a une relation many-to-many entre tes objets & tes utilisateurs ? En principe, tu devrais avoir une table objets, une table users et une table intermédiaire pour établir le lien (par exemple objets_users) ...