[ php / C ] Boucle for et condition if

Résolu/Fermé
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 - 21 avril 2008 à 10:54
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 - 21 avril 2008 à 12:49
Bonjour,
je realise un script qui énumere les differents port d'un routeur.

je voudrais que la page affiche un message si le port est de type Fa0/i (i allant de 1 a 49) et un autre message dans un autre cas .

Voila ce que j'ai fait mais cela m'affiche 49 ligne avec le meme resultat.
<?php for ($i=1; $i<49; $i++) {
	$test = "Fa0/$i";
	
	if ($result_port=="$test") { ?>
	blabla... port : <font color="#FF0000"><?php echo "$result_port"; ?></font> ...blabla
  
<?php    
} 
else { ?>
blabla... port <font color="#FF0000"><?php echo "$result_port"; ?></font> 

  
<?php }


}
?>


merci de votre aide
A voir également:

7 réponses

Bonjour,

je voudrais pas dire une connerie, mais c'est peut etre normal que tu aies 49 fois la meme chose si l'instruction est la meme dans le if et dans le else...
De plus, j'aurais écrit

$test = "Fa0/".$i;
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 4
21 avril 2008 à 11:16
oui merci mais cette modif je l'avais déja fait en fait. :p

mais dans le if et le else ce n'est pas la meme chose, c'est juste que je n'ai pas tout mis ici.

mais le probleme n'est pas la , je ne devrait avoir qu'un seul résultat non?

par exemple si le
port=Fa0/12 ->instruction du if
= Gi0/1 -> else

tu vois ce que je veux dire?
merci
0
Ben je connais pas la maniere dont tu calcules, mais mettons que $result_port = Fa0/1
Ca rentre dans la boucle, ca rentre dans le if, ca exécute les instructions, ca boucle, et ensuite ca tombe 48 fois dans le else avant de sortir du for...
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 4
21 avril 2008 à 11:42
oui peut etre je m'y prend mal désolé ...
en fait je voudrais un truc comme sa :
si le port est de type Fa0/x :
" c'est un port fast-ethernet"
sinon " c'est un port d'interconnexion" ..

donc comme les num de port vont de 1 a 48, je pense qu'il faut testé pour chaque numéro.

je me trompe?

que proposerait tu pour faire ça?
merci
0
Ben euh mettons que t'aies un code comme ca

blah blah
$result_port=....
blah blah

<?php
for ($i=1; $i<49; $i++)
{
$test = "Fa0/".$i;

if ($result_port=="$test")
{
$fast_ethernet = true
}
}?>

<?php if($fast_ethernet == true): ?>
<?php echo "Ceci est un port Fast Ethernet ?>



Modulo les erreurs de php que j'ai pu faire, mais ca donne un truc du genre du coup ce que tu veux non? Enfin là c'est crado parce que je fais plein de boucles pour rien, mais c'est le genre de trucs dont t'as besoin, tu testes tous les ports Fast Ethernet existants pour voir si le port que tu cherches en fait partie ?
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 4
21 avril 2008 à 11:50
en fait si j'enleve la partie Else .. ça marche a moitié.
-> si je teste le port Fa0/14
j'ai ce message :
" La machine se trouve sur le port Fa0/14 du
La machine est branchée directement sur ce switch"

c'est exactement ce que je recherche.

si je teste une machine sur le port Gi0/1 je n'ai evidement rien...
mais comment inclure juste un phrase dans ce else?
0
Bah du coup tu reprends mon code tout moche au dessus et tu rajoutes un else sur la condition sur le booléen fast_ethernet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 4
21 avril 2008 à 12:01
ouais en fait moi sa marche avec ce bout de code a la barbare

<?php 
for ($i=1; $i<49; $i++)
{
$test = 'Fa0/'.$i;
if ($result_port == $test)
{ ?>
	
  La machine est branchée directement sur ce switch  
<?php }
}
for ($i=1; $i<3; $i++)
{
$test = 'Gi0/'.$i;
if ($result_port == $test)
{ ?>
	
  Interconnexion  
<?php }
}
?>


mais parfois (rarement) il ya des port types "vl1" donc si le script en trouve un c'est foutu. je vais testé le tien.

merci
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 4
21 avril 2008 à 12:22
Voila je teste ça ,

<?php
for ($i=1; $i<49; $i++)
{
$test = 'Fa0/'.$i;
if ($result_port == $test)
{
$fa = true ;
}
else
{
$fa = false;
}
}
if ($fa == true)
{ ?>

La machine est branchée directement sur ce switch
<?php }

else
{ ?>
Il s'agit d'un port d'interconnexion
<?php }
}
?>

mais je ne comprends pas. Si je test une machine sur le port Fa0/14 ou Gi0/1 j'ai le meme message
" Il s'agit d'un port d'interconnexion"

vraiment désolé mais je ne maitrise pas trop le php ..
0
elmarokinho Messages postés 58 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 6 février 2009 4
21 avril 2008 à 12:49
En fait j'ai laissé tombé cette méthode , plus simple :
je test les 2 premiere lettres :
Fa -> ok
else ->interconnexion

voila sa marche,

parfois c'est tout con mais jme prend la tete pour rien lol

merci
0