begin process at 2012 05 30 22:43:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Optimisation d'une requête complexe via boucle for()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Optimisation d'une requête complexe via boucle for()

lundi 14 juin 2010 à 13:26:10 | Optimisation d'une requête complexe via boucle for()

monoski

J'ai une requête qui affiche une certaine récurrence, mais j'ai du mal à inventer une incrémentation de type +1 dans des noms de variables php est-ce possible ?

Quoiqu'il en soit j'ai un code extrêmement lourd :

Code PHP :
    <option value="<? echo $idtete;?>" selected="selected"><? echo $fet2['name'];?></option>
    <?
if ($fetch['slot1'] == NULL)
{}
else
{
$slot1 = $fetch['slot1'];
$equip2 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot1' AND type='pied'") or die(mysql_error());
$aff = mysql_fetch_assoc($equip2);
$row = mysql_num_rows($equip2);
if($row>0)
{
	echo '<option value="',$aff['id'],'">',$aff['name'],'</option>';
	}
	}
if ($fetch['slot2'] == NULL)
{}
else
{$slot2 = $fetch['slot2'];
$equip3 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot2' AND type='tete' ") or die(mysql_error());
$aff2 = mysql_fetch_assoc($equip3);
$row2 = mysql_num_rows ($equip3);
if($row2>0)
{
	echo '<option value="',$aff2['id'],'">',$aff2['name'],'</option>';
	}
	}
if ($fetch['slot3'] == NULL)
{}
else
{$slot3 = $fetch['slot3'];
$equip4 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot3' AND type='tete' ") or die(mysql_error());
$aff3 = mysql_fetch_assoc($equip4);
$row3 = mysql_num_rows ($equip4);
	if($row2>0)
{
	echo '<option value="',$aff3['id'],'">',$aff3['name'],'</option>';
	}
	}
if ($fetch['slot4'] == NULL)
{}
else
{$slot4 = $fetch['slot4'];
$equip5 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot4' AND type='tete' ") or die(mysql_error());
$aff4 = mysql_fetch_assoc($equip5);
$row4 = mysql_num_rows ($equip5);
		if($row4>0)
{
	echo '<option value="',$aff4['id'],'">',$aff4['name'],'</option>';
	}
	}
if ($fetch['slot5'] == NULL)
{}
else
{$slot5 = $fetch['slot5'];
$equip6 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot5' AND type='tete' ") or die(mysql_error());
$aff5 = mysql_fetch_assoc($equip6);
$row5 = mysql_num_rows ($equip6);
		if($row5>0)
{
	echo '<option value="',$aff5['id'],'">',$aff5['name'],'</option>';
	}
	}
if ($fetch['slot6'] == NULL)
{}
else
{$slot6 = $fetch['slot6'];
$equip7 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot6' AND type='tete' ") or die(mysql_error());
$aff6 = mysql_fetch_assoc($equip7);
$row6 = mysql_num_rows ($equip7);
			if($row6>0)
{
	echo '<option value="',$aff6['id'],'">',$aff6['name'],'</option>';
	}
	}
if ($fetch['slot7'] == NULL)
{}
else
{$slot7 = $fetch['slot7'];
$equip8 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot7' AND type='tete' ") or die(mysql_error());
$aff7 = mysql_fetch_assoc($equip8);
$row7 = mysql_num_rows ($equip8);
			if($row7>0)
{
	echo '<option value="',$aff7['id'],'">',$aff7['name'],'</option>';
	}
}
if ($fetch['slot8'] == NULL)
{}
else
{$slot8 = $fetch['slot8'];
$equip9 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot8' AND type='tete' ") or die(mysql_error());
$aff8 = mysql_fetch_assoc($equip9);
$row8 = mysql_num_rows ($equip9);
			if($row8>0)
{
	echo '<option value="',$aff8['id'],'">',$aff8['name'],'</option>';
	}
	}
if ($fetch['slot9'] == NULL)
{}
else
{$slot9 = $fetch['slot9'];
$equip10 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot9' AND type='tete' ") or die(mysql_error());
$aff9 = mysql_fetch_assoc($equip10);
$row9 = mysql_num_rows ($equip10);
			if($row9>0)
{
	echo '<option value="',$aff9['id'],'">',$aff9['name'],'</option>';
	}
	}
if ($fetch['slot10'] == NULL)
{}
else
{$slot10 = $fetch['slot10'];
$equip11 = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slot10' AND type='tete' ") or die(mysql_error());
$aff10 = mysql_fetch_assoc($equip11);
$row10 = mysql_num_rows ($equip11);
			if($row10>0)
{
	echo '<option value="',$aff10['id'],'">',$aff10['name'],'</option>';
	}
	}
	?>



Est-il possible d'optimiser cela via une boucle for() car ma page contient 6 fois ce type d'exemple et c'est ahurissant ^^ ?

Merci pour votre lecture :)
lundi 14 juin 2010 à 15:07:39 | Re : Optimisation d'une requête complexe via boucle for()

chino18


Salut.
Si tu veux créer des variables dynamiques, et pour reprendre un peu ton exemple, tu peux faire quelque chose comme:


Code PHP :
for($i=1; $i<10; $i++){
  $nom_de_ta_variable = "slot".$i;

  // création de la variable
  ${$nom_de_ta_variable} = "valeur bidon";

  /*
    ton traitement...
  */
}


A chaque passage de boucle, tu auras $slot1, $slot2, $slot3...

A+

-- message approuvé par Jean-Claude Van Damme --
lundi 14 juin 2010 à 16:34:52 | Re : Optimisation d'une requête complexe via boucle for()

monoski

Hum oki, bon j'en suis là :


<option value="<? echo $idtete;?>" selected="selected"><? echo $fet2['name'];?></option>
<?

for($i=1; $i<10; $i++)
{
$slotx = "slot".$i;
$fetchs = "fetch".$i;
if ($fetchs['$slotx'] == NULL)
{}
else
{
$slots = "slot".$i;
${$slots} = $fetchs['$slotx'];

$equips = "equip".$i;
${$equips} = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slots' AND type='pied'") or die(mysql_error());

$affs = "aff".$i;
${affs} = mysql_fetch_assoc($equips);

$rows = "row".$i;
${rows} = mysql_num_rows($equips);
if($rows>0)
{
echo '<option value="',$affs['id'],'">',$affs['name'],'</option>';
}
}
}
?>

Sauf que ça ne marche pas, j'ai du faire une erreur :'(
Je vous tiens au courant dès que j'ai trouvé. Ya peut être des choses que je peux pas écrire comme je l'ai fais. Si quelqu'un détecte des erreurs de syntaxes. :)
lundi 14 juin 2010 à 16:40:35 | Re : Optimisation d'une requête complexe via boucle for()

monoski

Petite correction :

Code PHP :
 <option value="<? echo $idtete;?>" selected="selected"><? echo $fet2['name'];?></option>
    <?
	
for($i=1; $i<10; $i++)
{	
$slotx = "slot".$i;	
$fetchs = "fetch".$i;
if ($fetchs['$slotx'] == NULL)
{}
else
{
${$slotx} = $fetchs['$slotx'];
   
$equips = "equip".$i;
${$equips} = mysql_query("SELECT name,id FROM elfik_objet WHERE id='$slotx' AND type='pied'") or die(mysql_error());

$affs = "aff".$i;
${affs} = mysql_fetch_assoc($equips);

$rows = "row".$i;
${rows} = mysql_num_rows($equips);
if($rows>0)
{
	echo '<option value="',$affs['id'],'">',$affs['name'],'</option>';
	}
}
}	


lundi 14 juin 2010 à 16:40:53 | Re : Optimisation d'une requête complexe via boucle for()

monoski


PS : ça ne marche toujours pas :p
lundi 14 juin 2010 à 19:14:57 | Re : Optimisation d'une requête complexe via boucle for()

monoski

Ca marche toujours pas mais j'ai corrigé une erreur supplémentaire :
Code PHP :
 <?
	
for($i=1; $i<10; $i++)
{	
$slotx = "slot".$i;	
$fetchs = "fetch".$i;
if ($fetch['$slotx'] == NULL)
{}
else
{
${$slotx} = $fetch['$slotx'];
   
$equips = "equip".$i;
${$equips} = mysql_query("SELECT name,id FROM elfik_objet WHERE id='${$slotx}' AND type='pied'") or die(mysql_error());

$affs = "aff".$i;
${affs} = mysql_fetch_assoc(${$equips});

$rows = "row".$i;
${rows} = mysql_num_rows(${$equips});
if(${rows}>0)
{
	echo '<option value="',${affs}['id'],'">',${affs}['name'],'</option>';
	}
}
}	
?>

lundi 14 juin 2010 à 19:22:39 | Re : Optimisation d'une requête complexe via boucle for()

monoski


La même... Mais là je sèche !
Code PHP :
<option value="<? echo $idtete;?>" selected="selected"><? echo $fet2['name'];?></option>
<?

for($i=1; $i<11; $i++)
{
$slotx = "slot".$i;
$fetchs = "fetch".$i;
if ($fetch['$slotx'] == NULL)
{}
else
{
${$slotx} = $fetch['$slotx'];

$equips = "equip".$i;
${$equips} = mysql_query("SELECT name,id FROM elfik_objet WHERE id='${$slotx}' AND type='pied'") or die(mysql_error());

$affs = "aff".$i;
${$affs} = mysql_fetch_assoc(${$equips});

$rows = "row".$i;
${$rows} = mysql_num_rows(${$equips});
if(${$rows}>0)
{
echo '<option value="',${$affs}['id'],'">',${$affs}['name'],'</option>';
}
}
}
?>
mardi 15 juin 2010 à 00:54:55 | Re : Optimisation d'une requête complexe via boucle for()

monoski


Je trouve vraiment rien d'autre, si vous avez une solution ...
mardi 15 juin 2010 à 08:38:48 | Re : Optimisation d'une requête complexe via boucle for()

chino18

Réponse acceptée !
Mmm bon.

Pour commencer, n'écris pas
Code PHP :
$fetch['$slotx']

mais
Code PHP :
$fetch[$slotx]



Ensuite, qu'est-ce que tu entends par "ca ne marche pas"?

As-tu un message d'erreur, ou un warning, etc ?

Je te conseille de vérifier ta requête. Fais un "echo" pour tester si elle est correcte.



-- message approuvé par Jean-Claude Van Damme --
mardi 15 juin 2010 à 15:29:44 | Re : Optimisation d'une requête complexe via boucle for()

monoski


Génial ça marche maintenant :)

Merci beaucoup coco :)

1 2

Cette discussion est classée dans : mysql, id, name, fetch, if


Répondre à ce message

Sujets en rapport avec ce message

mysql_fetch_row [ par angelique ] Bonjour,Après avoir rempli un formulaire, je voudrais utiliser les résultats d'une requête pour alimenter une autre table de ma base :$resultatid = my Petite question concernant mysql_fetch_object [ par ceeno ] Bonjour,Je souhaiterais savoir une petite chose, prenons le code :$sql="SELECT t1.ID,t2.ID FROM t1,t2 WHERE t1.ID = 10 AND t1.ID = t2.ID";$res=mysql_q mysql_fetch_object [ par blackvault ] bonjour Mon souci est que le mysql_fetch_object semble ne pas comprendre l'argument que je lui donne et je ne comprends pas pourquoi... Warning: m chat privé php [ par speedylol ] bonjour ;-)Voilà le petit probléme , plus je recherche une solutions une petite aide pour la réalisation plutôt la finition de ce script.Voilà je vous comment supprimer le paiement et confirmer chaque inscription manuellement [ par asmina22 ] salutj'ai un script sur lequel je veux apporter des modifications:comment supprimer les options de payment et ouvrir les enregistrement sur la base de unexpected { [ par biloutte33 ] Bonjour tout le monde voici mon code : $reponse = mysql_query('SELECT * FROM `ibf_topics` Where Forum_id=49 OR Forum_id=50 ORDER BY start_date DES Problème de $_POST [ par sagaff ] Bonjours, j'ai un problème avec ce code, en effet lorsque qu'on clique sur le input de validation ()  rien ne se passe, j'ai page blanche, si je met u faire 2 fetch_array sur une meme requete [ par gregou9 ] j'aimerais pour une meme requete faire 2 fois : $aa=mysql_fetch_array($bb);je m'explik: - une fois pour l'utiliser pour l'affichage d'informations- pu catalogue [ par gaston_gb ] salut à tous, je ve realiser un catalogue ou je recupere les images et les references des produit depuis la base de données, je suis parvenu à affiche script site [ par killeur ] Bonjour voila je suis débutant en php et je suis en train de codé mon propre site mai voila je block sur un script voici le script


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales