Optimisation ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Optimisation ?

par Shrell » 12 nov. 2008, 20:36

// on va chercher les enregistrements
$result = mysql_query("SELECT id_module, model, emp_original, emp_exep FROM modules");
// Boucle affichant les 5 select  
for ($i = 1; $i <= 5; $i++) { 
  // remonter au debut des enregistrements
  mysql_data_seek($result, 0);
  echo "<select name='mod".$i."'>"; 
   
  while($row   = mysql_fetch_array($result)) { 
   
    if($row['emp_exep']== $i){ 
     
      echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n"; 
    } 
  } 
   
  echo "</select>"; 
}
ca evite de faire 5 fois la même requete pour rien ;)

par dunbar » 12 nov. 2008, 15:59

// Boucle affichant les 5 select 
for ($i = 1; $i <= 5; $i++) {

  echo "<select name='mod".$i."'>";
  
           $result = mysql_query("SELECT id_module, model, emp_original, emp_exep FROM modules");
  while($row   = mysql_fetch_array($result)) {
  
    if($row['emp_exep']== $i){
    
      echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
    }
  }
  
  echo "</select>";
}
Oui effectivement avec une petite modif ta solution fonctionne
for ($i = 1; $i <= 6; $i++) {

  echo "<select name='mod".$i."'>";

           $result = mysql_query("SELECT id_module, model, emp_original, emp_exep FROM modules");
  while($row = mysql_fetch_array($result)) {

    if(($row['emp_original']==$i) || ($row['emp_exep']==$i)){

      echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
    }
  }

  echo "</select>";
}
Par contre en temps d'exécution cette solution est plus longue :?:
Merci

par agité » 12 nov. 2008, 15:49

// Boucle affichant les 5 select 
for ($i = 1; $i <= 5; $i++) {

  echo "<select name='mod".$i."'>";
  
           $result = mysql_query("SELECT id_module, model, emp_original, emp_exep FROM modules");
  while($row   = mysql_fetch_array($result)) {
  
    if($row['emp_exep']== $i){
    
      echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
    }
  }
  
  echo "</select>";
}

par dunbar » 12 nov. 2008, 14:59

Vois du côté de GROUP BY, c'est pratique, du moins, si MySQL le supporte...
Salut,
GROUP BY ne m'aide pas dans cette situation.
J'avais déjà essayer la solution de agité comme ceci
for ($i = 1; $i <= 6; $i++) {

  echo "<select name='sty_mod_".$i."'>";
  echo "<option value='choix'>Choix ..</option>\n";
  while($row = mysql_fetch_array($result)) {

    if(($row['emp_original']==$i) || ($row['emp_exep']==$i)){
      echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
     }elseif
       ($row['emp_original']==$i){
    	    echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
    	    }
  }

  echo '</select>'."\n";
Mais le soucis est que les 5 dernier select reste vide :twisted:

par katagoto » 12 nov. 2008, 14:52

Vois du côté de GROUP BY, c'est pratique, du moins, si MySQL le supporte...

par agité » 12 nov. 2008, 14:09

Pas testé et il ya peut être mieux mais je ferais :
<?php

// Requete SQL 
$sql    = "SELECT id_module, model, emp_original, emp_exep FROM modules";
$result = mysql_query($sql);

// Boucle affichant les 5 select 
for ($i = 1; $i <= 5; $i++) {

  echo "<select name='mod".$i."'>";
  
  while($row = mysql_fetch_array($result)) {
  
    if($row['emp_exep']== $i){
    
      echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
    }
  }
  
  echo "</select>";
}

?>

Optimisation ?

par dunbar » 12 nov. 2008, 13:27

Bonjour,
Je récupére des données d'une table pour les placer dans un select voici mon code
$sql = "SELECT id_module, model, emp_original, emp_exep FROM modules";
               $result = mysql_query($sql) or die ('Ne trouve pas tout les données : '.mysql_error());


	echo "<select name='mod1'>";
		while($row = mysql_fetch_array($result))
		{
		        if(($row['emp_original']) && ($row['emp_exep']=='1')){
		        echo "<option value='".$row['id_module']."'>".$row['model']." </option>\n";
		         }


		}

	echo '</select>'."\n";
	$result2 = mysql_query($sql);
	echo "<select name='mod2'>";
		while($row2 = mysql_fetch_array($result2))
		{
		        if($row2['emp_original']=='2'){
		        echo "<option value='".$row2['id_module']."'>".$row2['model']." </option>\n";
		         }


		}

	echo '</select>'."\n";
	$result3 = mysql_query($sql);
	echo "<select name='mod3'>";
		while($row3 = mysql_fetch_array($result3))
		{
		        if($row3['emp_original']=='3'){
		        echo "<option value='".$row3['id_module']."'>".$row3['model']." </option>\n";
		         }


		}

	echo '</select>'."\n";
	$result4 = mysql_query($sql);
	echo "<select name='mod4'>";
		while($row4 = mysql_fetch_array($result4))
		{
		        if($row4['emp_original']=='4'){
		        echo "<option value='".$row4['id_module']."'>".$row4['model']." </option>\n";
		         }


		}

	echo '</select>'."\n";
	$result5 = mysql_query($sql);
	echo "<select name='mod5'>";
		while($row5 = mysql_fetch_array($result5))
		{
		        if($row5['emp_original']=='5'){
		        echo "<option value='".$row5['id_module']."'>".$row5['model']." </option>\n";
		         }


		}

	echo '</select>'."\n";
	$result6 = mysql_query($sql);
	echo "<select name='mod6'>";
		while($row6 = mysql_fetch_array($result6))
		{
		        if($row6['emp_original']=='6'){
		        echo "<option value='".$row6['id_module']."'>".$row6['model']." </option>\n";
		         }


		}

	echo '</select>'."\n";
Il fonctionne parfaitement mais je ne suis pas certain que ma méthode soit la meilleur :wink:
Qui pourrais me dire si il y a moyen d'optimiser cette portion de code :?:

D'avance merci