[ php / C ] Boucle for et condition if [Résolu/Fermé]

Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
- - Dernière réponse : 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
Afficher la suite 

7 réponses

0
Merci
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;
elmarokinho
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
2 -
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
Merci
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...
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
2
0
Merci
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
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 ?
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
2
0
Merci
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?
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
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
2
0
Merci
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
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
2
0
Merci
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 ..
Messages postés
58
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
6 février 2009
2
0
Merci
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