Bonjour,

Dans le code qui suit:
  • La classe optListSelect crée une liste d'options, le paramètre est le nom et l'identifiant de la balise.
  • La classe optListOption ajoute une option à la liste avec comme premier paramètre le texte à afficher et comme deuxième paramètre la valeur de l'option.

Ici, les deux personnes sont identifiées et chaque liste ne contient qu'une option. Dans la suite du développement, il est prévu de fixer une personne connue (option unique) et d'ajouter d'autres personnes dans la deuxième liste.
Code original
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$lstMen = new optListSelect('id_m');
$lstWomen = new optListSelect('id_f');
 
if (!empty($mainPerson) and $mainPerson->gender === 'M')
{
	$lstMen->addOption(new optListOption("$mainPerson->id, $mainPerson->full_name ($mainPerson->live_dates)", $mainPerson->id));
}
if (!empty($mainPerson) and $mainPerson->gender === 'F')
{
	$lstWomen->addOption(new optListOption("$mainPerson->id, $mainPerson->full_name ($mainPerson->live_dates)", $mainPerson->id));
}
 
if (!empty($mainPerson) and $mainPerson->gender === 'F')
{
	$lstWomen->addOption(new optListOption("$mainPerson->id, $mainPerson->full_name ($mainPerson->live_dates)", $mainPerson->id));
}
if (!empty($mainPerson) and $mainPerson->gender === 'M')
{
	$lstMen->addOption(new optListOption("$mainPerson->id, $mainPerson->full_name ($mainPerson->live_dates)", $mainPerson->id));
}
 
if (!empty($joinedPerson) and $joinedPerson->gender === 'M')
{
	$lstMen->addOption(new optListOption("$joinedPerson->id, $joinedPerson->full_name ($joinedPerson->live_dates)", $joinedPerson->id));
}
if (!empty($joinedPerson) and $joinedPerson->gender === 'F')
{
	$lstWomen->addOption(new optListOption("$joinedPerson->id, $joinedPerson->full_name ($joinedPerson->live_dates)", $joinedPerson->id));
}
 
if (!empty($joinedPerson) and $joinedPerson->gender === 'F')
{
	$lstWomen->addOption(new optListOption("$joinedPerson->id, $joinedPerson->full_name ($joinedPerson->live_dates)", $joinedPerson->id));
}
if (!empty($joinedPerson) and $joinedPerson->gender === 'M')
{
	$lstMen->addOption(new optListOption("$joinedPerson->id, $joinedPerson->full_name ($joinedPerson->live_dates)", $joinedPerson->id));
}
Code simplifié
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function makeList($person)
{
	if (empty($person)) return false;
 
	$lstMen		= new optListSelect('id_m');
	$lstWomen	= new optListSelect('id_f');
	$arrLists	= ['lstMen','lstWomen'];
	$arrGenders	= ['M', 'F'];
	$gender		= $person->gender;
 
	foreach ($arrLists as $key=>$list)
	{
		${$list}->addOption(new optListOption("$person->id, $person->full_name ($person->live_dates)", $person->id));
	}
	return ${$list};
}
 
var_dump(makeList($mainPerson));
var_dump(makeList($joinedPerson));
Dans mon code simplifié, le nom de la liste est toujours 'id_f' et je n'arrive pas à tenir compte du genre de la personne, c'est à dire à prendre en compte les variables $arrGender et $gender. Je suppose que ce n'est pas la seule erreur.