Soucis test variable

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 : Soucis test variable

par dunbar » 09 mars 2009, 18:10

Bon en partant de ton idée j'ai céer un tableau associatif
$tableau = array();
               while($p_am = mysql_fetch_assoc($result_amont)){
               $tableau['ampli'] = $p_am['r_ampli'];
               $tableau['aval']  = $p_am['ava_s_noeud'];
               $tableau['topamp']= $p_am['s_noe_topamp'];
               $tableau['amont'] = $p_am['amo_s_noeud'];
               }
Puis dans mon AUTRE boucle
while($p = mysql_fetch_array($resultat)){

               $ampli   = $p['r_ampli'];
               $amont   = $p['amont'];
               $aval    = $p['aval'];
               $topamp  = $p['topamp'];
               $ampli_p = ($p['c_reseau'] =='P')? $ampli :'';
               $ampli_d = ($p['c_reseau'] =='D')? $ampli :'';
               echo '<pre>';
               var_dump($tableau);
               echo '</pre>';
               if (in_array('AP/D/7090/2050', $tableau)) { 
                echo "'AP/D/7090/2050' a été trouvé\n";
                }else{
                	echo 'Pas trouver';
                	}


               $branche = ($aval AND $r_topamp ) ? $ampli : '';
               $feuille = ($aval AND $branche )? $ampli :'';

               echo $ampli .' ++++ '.$branche .'<br>';



               $nbr++;



              }
Ici ilne me trouve pas de correspondance alors qu'il devrais
et comme ceci
if (in_array('AP/D/7090/2050', $tableau['ampli'])) { 
                echo "'AP/D/7090/2050' a été trouvé\n";
                }else{
                	echo 'Pas trouver';
                	}
Là j'ai droit à l'erreur suivante
Warning: in_array() [function.in-array]: Wrong datatype for second argument in E:\Wamp\www\GEOBEL\array.php
Ou j'ai encore commis une erreur ???

merciiii

par Ryle » 09 mars 2009, 18:07

Oki pour l'affichage, j'avais loupé ce point :)

A priori, pour ce que tu souhaites faire, il te faudrait deux boucles... la première te permettrait de constituer un tableau contenant toutes tes valeurs de topamp. Ceci peut très bien être un tableau associatif, te permettant de spécifier d'autres infos liées à l'enregistrement...

La seconde boucle te permettrait ensuite de tester une à une toutes les valeurs de aval, et vérifier pour chacune d'elle si elle est présente dans le tableau précédement généré (un simple in_array()).

Tu pourras ainsi faire tes comparaisons indépendament des itérations de ton while, qui au final ne te serviront qu'à récupérer les données pour générer les tableaux dont tu as besoin :)

par dunbar » 09 mars 2009, 17:36

@Ryle effectivement tu a raison mais comment je dois faire pour aller vérifier la valeur dans les autres 'itération :?:

Quand à l'affichage plus haut il correspond au test que Sodams.be ma demander c'est a dire
echo $aval.' == '.$topamp;
Bon je suis sur cette histoire depuis Vendredi et j'ai essayer beaucoup de solution mais pas encore la bonne.
Comment a votre avis je devrais mis prendre ?

par Ryle » 09 mars 2009, 17:21

mon test lui demande de les afficher cote à cote mais il ne fonctionne pas :evil:
Ah non... pas du tout ! :non:

Ton test compare les aval et le topamp de l'itération courrante... il ne fait en aucun cas référence aux topamp des autres itérations pour vérifier si le aval existe par ailleurs...

De plus, l'affichage ne correspond pas au code donné plus haut. Ta variable $branche contient soit $ampli soit une chaine vide, de même que $amp_r qui contient soit $ampli, soit une chaine vide. Tu ne peux donc pas avoir deux valeurs non vides différentes dans ton echo. Le code :
$amp_r = (!empty($ampli_p)? $ampli : '' ); 
$branche = ($aval == $topamp)? $ampli : ''; 
echo $amp_r .'++++'.$branche .'<br>';
Ne peut en aucun cas produire ce résultat, quelque soit les valeurs de $aval, $topamp ou $ampli_p :

Code : Tout sélectionner

145455++++145454
Soit les deux valeurs sont identiques, soit l'une d'entre elle est vide...

par dunbar » 09 mars 2009, 17:06

Oui mais le test est faux :twisted: :evil:

par Sodams » 09 mars 2009, 16:52

Il affiche bien $branche non?

Je crois que je comprend mal ce que tu veux.

par dunbar » 09 mars 2009, 16:32

Salut
Ci je fais un echo des mes variables il m'affiche bien les données exemple :
145454++++
145455++++145454
145456++++145455
145457++++145456
145458++++145457
145459++++145458
145460++++145459
145461++++145460
145462++++145461
145463++++145462
145464++++145463
145465++++145464
145466++++145465
145524++++145454
145525++++145455
145526++++145455
145527++++145455
145528++++145461
145529++++145461
145530++++145461
145531++++145462
145532++++145462
145533++++145462
145534++++145462
145535++++145466
145536++++145466
145537++++145466
On remarque que par exemple on na bien un aval = 145455 et des topamp = 145455 mon test lui demande de les afficher cote à cote mais il ne fonctionne pas :evil:

par Sodams » 09 mars 2009, 16:26

Qu'est ce qu'il ne fonctionne pas? Le test?

Fais une echo de tes 2 variables pour les vérifier.
echo $aval.' == '.$topamp;

Soucis test variable

par dunbar » 09 mars 2009, 16:19

Bonjour,

Je récupére des données d'une table et dans ma boucle while
while($p = mysql_fetch_array($resultat)){

               $ampli   = $p['r_ampli'];
               $amont   = $p['amont'];
               $aval    = $p['aval'];
               $topamp  = $p['topamp'];
               $ampli_p = ($p['c_reseau'] =='P')? $ampli :'';
               $ampli_d = ($p['c_reseau'] =='D')? $ampli :'';
               $couple_aval = ($aval AND $topamp)? $topamp : '';
               $amp_p = ($couple_aval AND $topamp) ? $ampli_p : '';
               $amp_d = ($couple_aval AND $topamp) ? $ampli_d : '';
               $amp_r = (!empty($ampli_p)? $ampli : '' );


               $branche = ($aval == $topamp)? $ampli : '';

               echo $amp_r .'++++'.$branche .'<br>';


Je lui demande de m'afficher $ampli si $aval correspond à $topamp mais pour une raison que je ne comprend pas cela ne fonctionne pas :!:
ma vérification est ici


               $branche = ($aval == $topamp)? $ampli : '';

               
Quelqu'un aurait t'il une idée :?:

D'avance merci