Simplifier ce code

WRInaute impliqué
Bonjour, je me demande comment je pourrais simplifier le code suivant. Il est utiliser pour afficher un menu déroulant, séparé en 3 parties.

Dans le code, il y a 3 parties identiques, chargeant tous les 3 des requêtes identiques.

Quelqu'un pourrait-il m'aider? Merci

Code:
function bag() {// Affichage du sac.

	global $userrow;

	$page = '<select name="slot"><option value="0">Vos poches</option>
	<option value="0">Vos poches à équipements :</option>';

	for ($i=1; $i<=3; $i++)
	{
		
		$item = doquery("SELECT name FROM {{table}} WHERE id='".$userrow['bag'.$i.'id']."' LIMIT 1", "items");
		$item = mysql_fetch_assoc($item);	
		
		if (($item) != null AND is_numeric($userrow['bag'.$i.'id'])) {
			
			$page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$item['name'].'</option>';

		}elseif(!is_numeric($userrow['bag'.$i.'id'])) {
			
			$id_equip = explode(',',$userrow['bag'.$i.'id']);	
			
			$equip = doquery("SELECT name FROM {{table}} WHERE id='".$id_equip[0]."' LIMIT 1", "equips");
			$equip = mysql_fetch_assoc($equip);
			
			$page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$equip['name'].'</option>';
			
		}else{ $page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : Vide</option>'; }	
		
	}
	
	$page .= '<option value="0">Vos poches à objets :</option>';
	
	for ($i=4; $i<=6; $i++)
	{
		
		$item = doquery("SELECT name FROM {{table}} WHERE id='".$userrow['bag'.$i.'id']."' LIMIT 1", "items");
		$item = mysql_fetch_assoc($item);	
		
		if (($item) != null AND is_numeric($userrow['bag'.$i.'id'])) {
			
			$page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$item['name'].'</option>';

		}elseif(!is_numeric($userrow['bag'.$i.'id'])) {
			
			$id_equip = explode(',',$userrow['bag'.$i.'id']);	
			
			$equip = doquery("SELECT name FROM {{table}} WHERE id='".$id_equip[0]."' LIMIT 1", "equips");
			$equip = mysql_fetch_assoc($equip);
			
			$page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$equip['name'].'</option>';
			
		}else{ $page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : Vide</option>'; }	
		
	}
	
	$page .= '<option value="0">Vos poches à matériaux :</option>';
	
	for ($i=7; $i<=9; $i++)
	{
		
		$item = doquery("SELECT name FROM {{table}} WHERE id='".$userrow['bag'.$i.'id']."' LIMIT 1", "items");
		$item = mysql_fetch_assoc($item);	
		
		if (($item) != null AND is_numeric($userrow['bag'.$i.'id'])) {
			
			$page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$item['name'].'</option>';

		}elseif(!is_numeric($userrow['bag'.$i.'id'])) {
			
			$id_equip = explode(',',$userrow['bag'.$i.'id']);	
			
			$equip = doquery("SELECT name FROM {{table}} WHERE id='".$id_equip[0]."' LIMIT 1", "equips");
			$equip = mysql_fetch_assoc($equip);
			
			$page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$equip['name'].'</option>';
			
		}else{ $page .='<option value="'.$i.'">Poche '.$i.' du sac à dos : Vide</option>'; }	
		
	}

	$page .='</select>';
	
	return $page;
}
 
WRInaute occasionnel
Sans regarder le code avec ce que tu dis fait une fonction et appel la 3 fois avec les bons paramettres...
 
WRInaute impliqué
non testé :

Code:
function bag() {// Affichage du sac.

   global $userrow;

   $page = '<select name="slot"><option value="0">Vos poches</option>
   <option value="0">Vos poches à équipements :</option>';
   
   for ($i=1; $i<=3; $i++) {
      $page .= contenu_poche($userrow, $i); 
   }      
   $page .= '<option value="0">Vos poches à objets :</option>';   
   for ($i=4; $i<=6; $i++) {
      $page .= contenu_poche($userrow, $i);      
   }      
   $page .= '<option value="0">Vos poches à matériaux :</option>';   
   for ($i=7; $i<=9; $i++) {      
      $page .= contenu_poche($userrow, $i);
   }   
   $page .='</select>';
   
   return $page;
}

function contenu_poche($userrow, $i){
    $item = doquery("SELECT name FROM {{table}} WHERE id='".$userrow['bag'.$i.'id']."' LIMIT 1", "items");
    $item = mysql_fetch_assoc($item);         
    if (($item) != NULL and is_numeric($userrow['bag'.$i.'id'])) {         
        $ret = option_sac($i, $item['name']);
    } elseif(!is_numeric($userrow['bag'.$i.'id'])) {
        $id_equip = explode(',',$userrow['bag'.$i.'id']);            
        $equip = doquery("SELECT name FROM {{table}} WHERE id='".$id_equip[0]."' LIMIT 1", "equips");
        $equip = mysql_fetch_assoc($equip);             
        $ret = option_sac($i, $equip['name']);
    } else { 	  	  
        $ret = option_sac($i, 'Vide');
    }   
    return $ret;
}

function option_sac($contenu, $i){
	return '<option value="'.$i.'">Poche '.$i.' du sac à dos : '.$contenu.'</option>';
}
 
Discussions similaires
Haut