3 requêtes SQL en une

  • Auteur de la discussion Auteur de la discussion sff
  • Date de début Date de début
WRInaute impliqué
Bonjours, je me demande si c'est possible de rassembler ces 3 requetes en une seule, vu que ce sont exactement les meme, a part le WHERE qui varie.

Code:
$weaponquery = doquery("SELECT id, name, special, description, buycost, attribute FROM {{table}} WHERE id=$userrow[weaponid]", "items");
$weaponrow = mysql_fetch_array($weaponquery);

$armorquery = doquery("SELECT id, name, special, description, buycost, attribute FROM {{table}} WHERE id=$userrow[armorid]", "items");
$armorrow = mysql_fetch_array($armorquery);

$shieldquery = doquery("SELECT id, name, special, description, buycost, attribute FROM {{table}} WHERE id=$userrow[shieldid]", "items");
$shieldrow = mysql_fetch_array($shieldquery);

echo $weaponrow['id'];
echo $armorrow['id'];
echo $shieldrow['id'];

Merci
 
WRInaute passionné
Code:
"SELECT id, name, special, description, buycost, attribute FROM {{table}} 
WHERE id=$userrow[shieldid]
OR id=$userrow[weaponid]
OR id=$userrow[armorid]"

Après t'as plus qu'a faire une moulinette qui compare les ID et te retrouve tout ça en les mettant dans tes variables $weaponrow & cie.

Evidemment faut que la table soit la même.
 
WRInaute accro
Bacteries a dit:
Code:
"SELECT id, name, special, description, buycost, attribute FROM {{table}} 
WHERE id=$userrow[shieldid]
OR id=$userrow[weaponid]
OR id=$userrow[armorid]"

Voire même:
Code:
"SELECT id, name, special, description, buycost, attribute FROM {{table}} 
WHERE id IN ($userrow[shieldid], $userrow[weaponid], $userrow[armorid])"

Evidemment on suppose que toutes les variables sont correctement filtrées et/ou escapées...

Jacques.
 
WRInaute impliqué
suite

Ok merci ca fonctionne, sinon la j'ai encore un petit soucis. Encore une histoire pour rassembler 2 codes.

En fait les 2 codes sont exactement identique, il y en a un qui sert pour $item['attribute1'] et l'autre pour $item['attribute2'], je me demande si c'est possible de combiner les 2.

Code:
//partie 1
if($item['attribute1'] != 'Aucun'){
				$special = explode(",",$item["attribute1"]);	

				$special[1] =($special[1]>=0)? '+'.$special[1] : $special[1];
				$perc =(($special[0] == 'goldbonus') OR ($special[0] == 'expbonus'))? '%' : null;

				switch ($special[0]) {
				case 'strength': $special[0] ='force'; break;
				case 'dexterity': $special[0] ='dextérité'; break;
				case 'attackpower': $special[0] ='pourvoir d\'attaque'; break;
				case 'defensepower': $special[0] ='pourvoir de défense'; break;
				case 'goldbonus': $special[0] ='bonus rubis'; break;
				case 'expbonus': $special[0] ='experience bonus'; break;
				}
				
				$spe_item = $special[1].''.$perc.' '.$special[0];
			}else{
				$spe_item = $item['attribute1'];
			}
			
//partie2
				if($item['attribute2'] != 'Aucun'){
	
				$special = explode(",",$item["attribute2"]);	

				$special[1] =($special[1]>=0)? '+'.$special[1] : $special[1];
				$perc =(($special[0] == 'goldbonus') OR ($special[0] == 'expbonus'))? '%' : null;

				switch ($special[0]) {
				case 'strength': $special[0] ='force'; break;
				case 'dexterity': $special[0] ='dextérité'; break;
				case 'attackpower': $special[0] ='pourvoir d\'attaque'; break;
				case 'defensepower': $special[0] ='pourvoir de défense'; break;
				case 'goldbonus': $special[0] ='bonus rubis'; break;
				case 'expbonus': $special[0] ='experience bonus'; break;
				}
				
				$spe_item2 = $special[1].''.$perc.' '.$special[0];
			}else{
				$spe_item2 = $item['attribute2'];
			}
 
WRInaute impliqué
tu fais une fonction avec un paramètre et tu l'appelle 2 fois en donnant le bon paramètre.
 
WRInaute passionné
sff> Serait peut être bon de voir un peu d'algorithmique / SQL, quand même plus pratique pour développer...
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut