3 requêtes SQL en une

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


sff
WRInaute impliqué
WRInaute impliqué
 
Messages: 293
Inscription: Mer Fév 02, 2005 23:04

3 requêtes SQL en une

Message le Lun Mar 17, 2008 17:59

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: Tout sélectionner
$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


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Lun Mar 17, 2008 18:03

Code: Tout sélectionner
"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.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 1238
Inscription: Ven Fév 13, 2004 20:33

Message le Lun Mar 17, 2008 19:14

Bacteries a écrit:
Code: Tout sélectionner
"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: Tout sélectionner
"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.


sff
WRInaute impliqué
WRInaute impliqué
 
Messages: 293
Inscription: Mer Fév 02, 2005 23:04

suite

Message le Lun Mar 17, 2008 21:17

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: Tout sélectionner
//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'];
         }


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 480
Inscription: Dim Avr 15, 2007 17:14

Message le Mar Mar 18, 2008 7:49

tu fais une fonction avec un paramètre et tu l'appelle 2 fois en donnant le bon paramètre.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Mar Mar 18, 2008 9:16

sff> Serait peut être bon de voir un peu d'algorithmique / SQL, quand même plus pratique pour développer...


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités