Bonjour,
La portion de code suivante fait partie d'un contrôleur destiné à préremplir un formulaire multiple, c'est à dire qu'il contient un nombre variable de sous-formulaires identiques.
Le sous-formulaire contient une liste d'options. Les listes sont construites à partir d'une classe largement éprouvée et maintes fois testée. Je dois avoir un problème dans mes boucles foreach car les options sont répétées selon la séquence suivante: 1,1,2,2,2,4 au lieu de 1,2,4. Où est problème?
Code : 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
39
40
41
42
43
44
45
46
47
48
49
50
51
		$inData = getUsersOfSubscriber($nSubscriberId);
		if (!empty($inData)){
			foreach($inData as $key=>$aSingle){
				$post[$key] = $aSingle;
				// Buttons for each childform
				$echo[$key]['btn']['savElem']	= getDBText($language,72);
				$echo[$key]['btn']['delElem']	= getDBText($language,73);
				$echo[$key]['btn']['password']	= getDBText($language,140);
				// Common buttons
				$echo['btn']['newElem']	= getDBText($language,121);
				// Labels
				$echo['labels']['id']			= getDBText($language,131);
				$echo['labels']['login']		= getDBText($language,132);
				$echo['labels']['lastname']		= getDBText($language,133);
				$echo['labels']['firstname']	= getDBText($language,134);
				$echo['labels']['email']		= getDBText($language,135);
				$echo['labels']['rightlevel']	= getDBText($language,136);
				$echo['labels']['banned']		= getDBText($language,137);
				// Title attributes for too long input values
				$echo['titles'] = [];
				foreach($aSingle as $k=>$value){
					$echo['titles'][$k] = setTitle($value,27); // voir la valeur
				}
				unset($k,$value);
				// Rightlevel list
				$lstRightlevel= new OptListSelect($key.'[rightlevel]');
				$lstRightlevel->addOption(new OptListOption('', '', ['label'=>getDBText($language,16)]));
				if (!empty($inData)){
					foreach($inData as $aUser){
						var_dump($aUser['rightlevel']);
						$sToSelect = ($aUser['rightlevel'] == $aSingle['rightlevel']) ? true: false;
						$options = ($sToSelect) ? ['selected'=>'selected']: [];
						$lstRightlevel->addOption(new OptListOption($aUser['rightlevel'], getDBText($language,124+$aUser['rightlevel']), $options));
					}
				}
				// Fieldvalues
				$echo[$key]['fields'][1] = "<input type='text' name='{$key}[id]' value='{$aSingle['id']}' readonly>";
				$echo[$key]['fields'][2] = "<input type='text' name='{$key}[login]' value='{$aSingle['login']}'>";
				$echo[$key]['fields'][3] = "<input type='text' name='{$key}[lastname]' value='{$aSingle['lastname']}'>";
				$echo[$key]['fields'][4] = "<input type='text' name='{$key}[firstname]' value='{$aSingle['firstname']}'>";
				$echo[$key]['fields'][5] = "<input type='text' name='{$key}[email]' value='{$aSingle['email']}'>";
				$echo[$key]['fields'][6] = (string) $lstRightlevel;
				$banned = (!empty($aSingle['banned'])) ? ' checked': '';
				$echo[$key]['fields'][7] = "<input type='checkbox' name='{$key}[banned]' value='1'$banned>";
				unset($aUser,$rightlevel);
 
				// Include viewform
				require("views/$language/setUser.php");
			}
			unset($key,$aSingle);
		}
Avec le rendu suivant:
Code html : 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
39
40
41
42
43
44
45
46
47
48
49
50
51
<form method="post" class="settings" action="frontend/settings.php">
	<input type="hidden" id="id0" name="0[id]" value="2">
	<input type="hidden" id="order0" name="0[order]">
 
	<label><span>Clef</span><input type='text' name='0[id]' value='2' readonly></label><br>
	<label><span>Identifiant</span><input type='text' name='0[login]' value='HerveC'></label><br>
	<label><span>Nom</span><input type='text' name='0[lastname]' value='de la Caze'></label><br>
	<label><span>Prénom</span><input type='text' name='0[firstname]' value='Hervé'></label><br>
	<label><span>Courriel</span><input type='text' name='0[email]' value='herve.delacase@sirep.xx'></label><br>
	<label><span>Niveau d'accès</span><select name='0[rightlevel]'><option value='' label='&lt; ---- &gt;'></option><option value='1' selected='selected'>Invité</option><option value='1' selected='selected'>Invité</option><option value='2'>Utilisateur</option><option value='2'>Utilisateur</option><option value='2'>Utilisateur</option><option value='4'>Webmestre</option></select></label><br>
	<label><span>Banni</span><input type='checkbox' name='0[banned]' value='1' checked></label><br>
	<p>
		<input type="submit" name="save" value="Enregistrer">
		<input type="submit" name="del" value="Supprimer">
		<input type="submit" name="reset" value="Initialiser mot de passe">
	</p>
</form>
<hr><form method="post" class="settings" action="frontend/settings.php">
	<input type="hidden" id="id1" name="1[id]" value="6">
	<input type="hidden" id="order1" name="1[order]">
 
	<label><span>Clef</span><input type='text' name='1[id]' value='6' readonly></label><br>
	<label><span>Identifiant</span><input type='text' name='1[login]' value='sirep'></label><br>
	<label><span>Nom</span><input type='text' name='1[lastname]' value='Guest'></label><br>
	<label><span>Prénom</span><input type='text' name='1[firstname]' value='Guest'></label><br>
	<label><span>Courriel</span><input type='text' name='1[email]' value='guest.guest@sirep.xx'></label><br>
	<label><span>Niveau d'accès</span><select name='1[rightlevel]'><option value='' label='&lt; ---- &gt;'></option><option value='1' selected='selected'>Invité</option><option value='1' selected='selected'>Invité</option><option value='2'>Utilisateur</option><option value='2'>Utilisateur</option><option value='2'>Utilisateur</option><option value='4'>Webmestre</option></select></label><br>
	<label><span>Banni</span><input type='checkbox' name='1[banned]' value='1'></label><br>
	<p>
		<input type="submit" name="save" value="Enregistrer">
		<input type="submit" name="del" value="Supprimer">
		<input type="submit" name="reset" value="Initialiser mot de passe">
	</p>
</form>
<hr><form method="post" class="settings" action="frontend/settings.php">
	<input type="hidden" id="id2" name="2[id]" value="3">
	<input type="hidden" id="order2" name="2[order]">
 
	<label><span>Clef</span><input type='text' name='2[id]' value='3' readonly></label><br>
	<label><span>Identifiant</span><input type='text' name='2[login]' value='GomezE'></label><br>
	<label><span>Nom</span><input type='text' name='2[lastname]' value='Gomez'></label><br>
	<label><span>Prénom</span><input type='text' name='2[firstname]' value='Enrico'></label><br>
	<label><span>Courriel</span><input type='text' name='2[email]' value='enrico.gomez@sirep.xx'></label><br>
	<label><span>Niveau d'accès</span><select name='2[rightlevel]'><option value='' label='&lt; ---- &gt;'></option><option value='1'>Invité</option><option value='1'>Invité</option><option value='2' selected='selected'>Utilisateur</option><option value='2' selected='selected'>Utilisateur</option><option value='2' selected='selected'>Utilisateur</option><option value='4'>Webmestre</option></select></label><br>
	<label><span>Banni</span><input type='checkbox' name='2[banned]' value='1'></label><br>
	<p>
		<input type="submit" name="save" value="Enregistrer">
		<input type="submit" name="del" value="Supprimer">
		<input type="submit" name="reset" value="Initialiser mot de passe">
	</p>
</form>