Suffit juste d'afficher les valeurs.
et si un utilisateur fait entrer par exemple: DISABLE=>cles200, alors que cles200 n'existe pas, vous allez me dire s'il n'existe pas on va pas l'afficher, alors c'est dans ce cas je voudrais verifier si cles200 existe sinon on affiche un message d'erreur, dans le premier cas, on affiche: <option.... DISABLED>..</option>L'idée est claire mais ton code précédent est complètement à côté de la plaque... Pourquoi tu fais des recherches dans tes tableaux si tu n'as rien à rechercher ?
Suffit juste d'afficher les valeurs.
foreach($options as $k => $op)
{
$str .= "<input type=\"text\" name=\"$k\" value=\"$op\"";
if( !empty($moreOptions[$k]) )
$str .= "{$moreOptions[$k]} = \"{$moreOptions[$k]}\"";
$str .= "/>";
}<?php
foreach($options as $key => $val)
{
echo $key.$val.'<br>';
if(array_key_exists($key, $moreOptions))
{
echo $moreOptions[$key].'<br>';
$select .= '<option value="'.$key.'" '.$moreOptions[$key].'>'.$val.'</option>';
}
else
{
$select .= '<option value="'.$key.'">'.$val.'</option>';
}
}
?>
alors le seul soucis est si jamais je fais la meme option en DISABLED et SELECTED, ca me donne le dernier choix:<?php
$frm->addSelect('selectName', array(
'clef1'=>'valeur1',
'clef2'=>'valeur2',
'clef3'=>'valeur3'),
array(
'clef2'=>'DISABLED',
'clef2'=>'SELECTED'
)
?>
<select name="selectName"><option value="clef1">valeur1</option><option value="clef2" SELECTED>valeur2</option><option value="clef3">valeur3</option>
array('clef2' => array('DISABLED', 'SELECTED'));voila le code:C'est normal... L'index d'un tableau doit être unique, c'est une clé, un identifiant !
Créés un tableau avec deux clés de même valeur et tu verras qu'un var_dump de ton array n'affichera pas la première clé.
Fais un tableau d'attributs :array('clef2' => array('DISABLED', 'SELECTED'));
foreach($options as $key => $val)
{
echo $key.$val.'<br>';
if(array_key_exists($key, $moreOptions))
{
echo $moreOptions[$key].'<br>';
var_dump($moreOptions);
$select .= '<option value="'.$key.'" '.$moreOptions[$key].'>'.$val.'</option>';
}
else
{
$select .= '<option value="'.$key.'">'.$val.'</option>';
}
}
$frm->addSelect('selectName', array(
'clef1'=>'valeur1',
'clef2'=>'valeur2',
'clef3'=>'valeur3'),
array(
'clef2'=>array('DISABLED','SELECTED')
)
et le resultat:<select name="selectName"><option value="clef1">valeur1</option><option value="clef2" Array>valeur2</option><option value="clef3">valeur3</option>
oui la valeur2 en doublon:Avec tous les affichages de debug que tu as je pense que tu es capable de trouver la solution à ton problème...
foreach($options as $key => $val)
{
echo $key.$val.'<br>';
if(array_key_exists($key, $moreOptions))
{
echo $moreOptions[$key].'<br>';
var_dump($moreOptions);
foreach($moreOptions as $cl=>$va)
{
echo 'cl'.$cl.'va'.$va.'<br>';
foreach($va as $x=>$y)
{
echo 'x'.$x.'y'.$y.'<br>';
$select .= '<option value="'.$key.'" '.$y.'>'.$val.'</option>';
}
}
//$select .= '<option value="'.$key.'" '.$moreOptions[$key].'>'.$val.'</option>';
}
else
{
$select .= '<option value="'.$key.'">'.$val.'</option>';
}
}
<select name="selectName"><option value="clef1">valeur1</option><option value="clef2" DISABLED>valeur2</option><option value="clef2" SELECTED>valeur2</option><option value="clef3">valeur3</option>
je pense que c'est a cause de multitudes foreachTu as de sérieux soucis de logique...
Avant de programmer faut bosser l'algorithme, cela ne peut que faire du bien.
Et tu verrais ainsi pourquoi ton code génère X fois le même champ avec X étant le nombre d'option...