IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Variable qui ne retourne pas ce que je souhaite


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut [Système] Variable qui ne retourne pas ce que je souhaite
    Bonjour, je poste ceci car je ne vois pas ce qui cloche dans ma syntaxe après l'avoir retourner mainte et mainte fois.
    Ce petit bout de code doit me retourner la valeur de $i après calcul, mais il ne le fait pas!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    $log = "/var/log/Matlab/test.txt";
     
     
    function get_info($i, $Application) {
    	$inF = fopen($log,"r");
    	$tableau = file($log);
     
    	foreach ($tableau as $line_num => $line)	{
    		if (stristr($line,'$Application')) {
    		if (stristr($line,'IN'))	{
    			$i = $i-1;
    			fclose($inF);
    		} else if (stristr($line,'OUT')) {
    			$i = $i+1;
    			fclose($inF);
    		}
    	}
    	}
    	return $i;	
    	fclose($inF);
    }
    Le fichier Test sur lequel j'applique ma fonction est ci-joint. Je débute en php et après avoir lu le cours, je n'ai pas trouvé ce qui clochait. Merci de m'aider.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bonjour,

    Ta fonction get_info() retourne bien une valeur pour $i. Mais dans le code que tu nous montres tu définis la fonction get_info(), tu ne l'appelles pas, c'est peut etre pour ca que ca ne fonctionne pas comme tu aimerais.

    Ensuite, tu ouvres le fichier de log avec fopen(), tu le lis avec file() mais tu essaies de le refermer dans plusieurs cas (plusieurs fois dans la boucle), alors qu'une fois qu'il est lu tu peux directement le refermer. En plus, le tout dernier fclose ne sera jamais exécuté vu qu'il est après le "return".

    Voici un exemple qui appelle ta fonction que j'ai un peu corrigée (j'ai rajouté global $log; Pour indiquer à ta fonction que la variable $log existe et a été définie ailleurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
     
    $log = "./test.txt";
     
    function get_info($i, $Application) 
    	{
    	global $log;
     
    	$inF = fopen($log,"r");  // ouvre le fichier
    	$tableau = file($log);   // le lit
    	fclose($inF);   // le referme
     
    	foreach ($tableau as $line_num => $line)	
    		{
    		// ne met pas de quote autour de $Application
    		if (stristr($line,$Application)) 
    			{
    			if (stristr($line,'IN'))	
    				{
    				$i = $i-1;
    				} 
    			else if (stristr($line,'OUT')) 
    				{
    				$i = $i+1;
    				}
    			}
    		}
    	return $i;	
    	}
     
    $returnValue = get_info(0,"MLM");
    echo "Ma valeur de retour est : " . $i;
    ?>

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci pour ton code, Je suis désolé, c'est de ma faute, j'ai oublié un bout de code dans mon premier post.
    J'appelle bien la fonction dans une autre page qui affiche "normalement" son résultat, mais sa ne marche pas.
    Voilà le code de la page qui appelle la fonction de départ.
    J'ai déclaré $info en tant que variable pour stocker le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <TD><CENTER>
    			<?php	
    			$info=get_info("2","\"Signal_Toolbox\"");
    			echo $info;			
    			?>
    			</CENTER></TD>
    Le problème étant que je ne vois tjrs pas ce qui empêche cette valeur de s'afficher.
    P.S : Dans le fichier texte, les MLM ne sont pas importants du tout.

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Quand j'appelle ta fonction avec tes paramètres ca me retourne 1 comme valeur. Donc ta fonction marche bien.

    Par contre il y a peut etre des problèmes avec les chemins (le chemin du fichier texte par exemple).
    Dans ta fonction get_infos(), rajoute des "echo" ou des "var_dump()" pour t'assurer que tu lis bien le fichier texte voulu et essayer de comprendre ce qui cloche.

    Tu dis que l'appel à get_info() n'est pas dans le meme fichier, as-tu bien inclus le fichier qui contient ger_info() ou encore le fichier de logs?

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    J'ai bien tout regarder et je ne vois toujours pas, apparemment ma fonction ne passe pas le "foreach" ;

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    $info=get_info($i,$Application);
    $log = "Matlab/test.txt";
     
     
    function get_info($i, $Application) {
    	$inF = fopen($log,"r");
    	$tableau = file($log);
    	echo "zut" ;
    	fclose($inF);
    	echo"1" ;
    	foreach ($tableau as $line_num => $line) {
    	echo"2" ;
    		if (stristr($line,'$Application')) {
    	echo"3" ;
    		if (stristr($line,'IN'))	{
    	echo"4" ;
    			$i=$i-1;
    		}
    		else {
    		if (stristr($line,'OUT')) 
    	echo "5" ;		
    		{
    			$i=$i+1;			
    		}
    	}}
    	}
    	return $i;
    }

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Plus embêtant et incompréhensible, php me dit que ma variable $log n'est pas défini, alors qu'elle l'est juste au dessus!!!
    Je ne sais plus quoi faire ...

  7. #7
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Tu dois rajouter au début de ta fonction pour qu'il sache que tu fais référence à une variable "globale" et pas une variable locale à la fonction

    De plus, mets des echo plus "parlants" pour comprendre ce qui se passe (affiche la ligne courante du tableau par exemple). Si tu fais tu verras qu'il est vide. C'est normal puisqu'il ne trouve pas le fichier de log il n'a rien a lire et donc rien à mettre dans ton tableau.

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup !!!!!!!!!!!!!!!!! C'était ça, en effet, encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. if qui ne fait pas ce que je souhaite faire.
    Par Antoniom dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 10/12/2010, 12h04
  2. Variable qui ne compte pas ce que je veux
    Par clairenes dans le forum iReport
    Réponses: 0
    Dernier message: 08/11/2007, 11h52
  3. [Système] bouton qui ne fait pas se que je veut
    Par schats dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2007, 11h17
  4. [Système] variable qui ne passe pas !!!
    Par azorol dans le forum Langage
    Réponses: 21
    Dernier message: 20/02/2006, 10h53
  5. Réponses: 18
    Dernier message: 13/12/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo