Verifier les clefs du premier tableau au 2eme tableau

ViPHP
xTG
ViPHP | 7331 Messages

20 mai 2011, 20:41

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. #-o

rimie1
Invité n'ayant pas de compte PHPfrance

20 mai 2011, 21:10

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. #-o
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>

ViPHP
xTG
ViPHP | 7331 Messages

21 mai 2011, 09:24

C'est pas un problème ça. Car faut pas parcourir les deux tableaux lorsque tu formattes l'affichage.
Il ne faut parcourir que le premier et accéder au second.

Ainsi :
foreach($options as $k => $op)
{
    $str .= "<input type=\"text\" name=\"$k\" value=\"$op\"";
    if( !empty($moreOptions[$k]) )
      $str .= "{$moreOptions[$k]} = \"{$moreOptions[$k]}\"";
    $str .= "/>";
}

rimie1
Invité n'ayant pas de compte PHPfrance

22 mai 2011, 20:27

ca marche pas, j'ai essaye par:
<?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>

ViPHP
xTG
ViPHP | 7331 Messages

23 mai 2011, 08:02

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'));

rimie1
Invité n'ayant pas de compte PHPfrance

23 mai 2011, 11:44

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'));
voila le code:
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>

ViPHP
xTG
ViPHP | 7331 Messages

23 mai 2011, 12:57

Avec tous les affichages de debug que tu as je pense que tu es capable de trouver la solution à ton problème... :roll:

rimie1
Invité n'ayant pas de compte PHPfrance

23 mai 2011, 13:24

Avec tous les affichages de debug que tu as je pense que tu es capable de trouver la solution à ton problème... :roll:
oui la valeur2 en doublon:
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>

rimie1
Invité n'ayant pas de compte PHPfrance

24 mai 2011, 12:50

est ce qu'il y a une autre methode afin de me faciliter la tache?

ViPHP
xTG
ViPHP | 7331 Messages

24 mai 2011, 13:07

Tu 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...

rimie1
Invité n'ayant pas de compte PHPfrance

24 mai 2011, 13:35

Tu 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...
je pense que c'est a cause de multitudes foreach :(