Verifier les clefs du premier tableau au 2eme tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Verifier les clefs du premier tableau au 2eme tableau

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 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 :(

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 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...

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 24 mai 2011, 12:50

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

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 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>

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 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:

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 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>

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 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'));

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 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>

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 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 .= "/>";
}

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 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>

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 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

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 20 mai 2011, 18:14

Euh ok mais quelle relation y-a-t-il entre ton premier array et le second ?
Tu as fait un code vérifiant une égalité des valeurs entre les deux mais dans tes exemples je ne vois qu'un array semblant présenter l'attribut value du champ et le second qui présente des attributs tels que selected ou disabled.
ce que je veux faire est le suivant, je donne un exemple simple:
$frm->addSelect('selectName', array(
'clef1'=>'valeur1',
'clef2'=>'valeur2',
'clef3'=>'valeur3',
'clef4'=>'valeur4',
'clef5'=>'valeur5',
'clef6'=>'valeur6'
),

array(
'clef1'=>'DISABLED',
'clef2'=>'SELECTED',

 

+ je prends le 2eme array avec sa valeur 'DISABLED', sa clef et 'clef1',
+ je cherche la valeur de la clef du premier tableau, au 2eme tableau 'valeur1',
+ je l'insere dans l'option,
+ soit mon code HTML
<select ....>
<option value="valeur1' DISABLED="DISABLED">clef1</option>
<option value="valeur2'>clef2</option>
<option value="valeur3'>clef3</option>
..
</select>
j'espere que l'idee est claire :)

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 20 mai 2011, 18:03

Euh ok mais quelle relation y-a-t-il entre ton premier array et le second ?
Tu as fait un code vérifiant une égalité des valeurs entre les deux mais dans tes exemples je ne vois qu'un array semblant présenter l'attribut value du champ et le second qui présente des attributs tels que selected ou disabled.

Re: Verifier les clefs du premier tableau au 2eme tableau

par rimie1 » 20 mai 2011, 09:49

Donc si je comprends bien $options c'est un array fixe. Pourquoi le passer en paramètre ? Il devrait être stocké dans l'objet ??
Et $moreOptions est donc la saisie de l'utilisateur, et il faut vérifier que ces options existent en regardant dans $options ?
les 2 sont modifiables par l'utilisateur, il peut ajouter n'importe quel nombre d'options:
$frm->addSelect('selectName', array(
'clef1'=>'valeur1',
'clef2'=>'valeur2',
'clef3'=>'valeur3',
'clef4'=>'valeur4',
'clef5'=>'valeur5',
'clef6'=>'valeur6'
),

array(
'clef1'=>'DISABLED',
'clef2'=>'SELECTED',

Re: Verifier les clefs du premier tableau au 2eme tableau

par xTG » 20 mai 2011, 07:59

Donc si je comprends bien $options c'est un array fixe. Pourquoi le passer en paramètre ? Il devrait être stocké dans l'objet ??
Et $moreOptions est donc la saisie de l'utilisateur, et il faut vérifier que ces options existent en regardant dans $options ?