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 :

parcourir un tableau


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 399
    Points : 5 754
    Points
    5 754
    Billets dans le blog
    1
    Par défaut parcourir un tableau
    Le titre semble relever du B-A BA; et pourtant, je suis coincé :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    include("message.php");
    //foreach ($messages as $key => $value){
    foreach ($messages as $value){
    	echo " val=".$value."<br>";
    	//echo(getMessage($key));echo "<br>";
    }

    et message.php :
    Code php : 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
    <?php
    header('Content-type: text/html; charset=UTF-8');
     
    $messages=null;
     
    function loadMessages()
    {
    	global $messages;
    	$messages=array();
     
    	$path="./messages.txt";
     
    	if (file_exists($path)) $txt=file_get_contents($path, FILE_USE_INCLUDE_PATH); else exit("file doesn't exist");
    	$tab=explode("\n",$txt);
    	foreach($tab as $line){
    		$s=explode("=",$line);
    		$messages[$s[0]]=$s[1];
    	}
    }
     
    function getMessage($key)  {
    	global $messages;
    	if ($messages==null)
    		loadMessages();
     
    	$msg=$messages[$key];
     
    	return $msg;
    }
    ?>
    et j'ai
    Warning: Invalid argument supplied for foreach() in C:\wamp\www\classe17\getmessage.php on line 5
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu n'appelles pas tes fonctions, $messages est NULL.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 399
    Points : 5 754
    Points
    5 754
    Billets dans le blog
    1
    Par défaut
    Merci pour l'explication (très rapide) ; ça tombe bien que je connaisse le contenu de "message.txt" pour appeler "getMessage" mais en supposant que je ne connaisse pas "message.txt" , y avait-il un moyen de s'en sortir ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    T'en sortir pour obtenir quoi ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    - explique exactement ce que ce code est censé faire
    - donne-nous un extrait du fichier message.txt (qu'on puisse tester)
    - et quand tu as un message d'erreur "....on line 5" : indique-nous quelle est la ligne en question

    En l'occurence, ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(is_array($messages)){
      foreach ($messages as $key => $value){
        // .......
      }
    }
    Ca ne résoud pas ton problème de conception.
    Ca permet juste d'éviter le message d'erreur.

    Je t'invite même à relire ta propre "signature" :
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
    J'ai notamment du mal à comprendre l'intérêt d'écrire des fonctions ici, et ta logique.

    J'ajouterai pour finir que ta méthode pour parcourir les lignes d'un fichier (ici avec file_get_contents(...) et explode(..... '\n') n'est peut-être pas la meilleure.
    Dernière modification par Invité ; 30/07/2013 à 09h59.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 399
    Points : 5 754
    Points
    5 754
    Billets dans le blog
    1
    Par défaut
    Désolé de répondre si tardivement, mais avant, j'ai pas eu de temps.

    Un peu de précision : je viens de commencer un bouquin : http://www.amazon.fr/PHP-MySQL-Entra.../dp/2746040573 qu'on m'avait recommandé y a un bout de temps (en janvier dernier !), le but étant de réviser des notions que j'avais vues lors d'une formation (sur le MVC). Ce bouquin a un format curieux : en gros, une série d'exercices, et ils précisent qu'il est mieux de les faire tous...Donc le code n'est pas de moi (à part la ligne pour le mettre en utf-8 et le rajout du "if file-exist" et du coup l'utilisation d'un chemin relatif) ; c'est la solution d'un exercice, juste le fichier "message.php" et "message.txt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    titre=bienvenue
    invite=Quel est votre nom ?
    En gros, qu'est-ce que fait ce code : 2 fonctions :
    - loadMessages() qui lit le fichier "message.txt" (qui contient une liste clé/valeur (clé=valeur)) et fabrique un tableau PHP associatif $messages dans lequel on retrouve ces associations (clé/valeur )

    - getMessage($key) qui doit retourner la valeur asssociée à la clé passée en argument (dans le tableau $messages).

    Et ce que je voudrais obtenir, c'est d'abord de créer le tableau $messages puis de l'afficher (mais en supposant ne pas connaître "message.txt").

    Et la ligne de l'erreur (ligne 5) correspond à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($messages as $value){
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    c'est d'abord de créer le tableau $messages
    Je repete : étant donné que c'est la fonction loadMessages() qui créé ce tableau, il faut qu'elle soit appellée quelque part avant le foreach.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 399
    Points : 5 754
    Points
    5 754
    Billets dans le blog
    1
    Par défaut
    Ca semble évident :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    include("message.php");
    loadMessages();
    foreach ($messages as $key => $value){
    	echo(getMessage($key));echo "<br>";
    }
    ?>
    Merci Sabotage
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

Discussions similaires

  1. Parcourir un tableau?
    Par kanzarih dans le forum Oracle
    Réponses: 2
    Dernier message: 19/01/2006, 19h45
  2. Meilleure Méthode pour parcourir un tableau
    Par KPitN dans le forum MFC
    Réponses: 7
    Dernier message: 24/02/2005, 16h19
  3. Comment parcourir un tableau
    Par petitsims dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/01/2005, 14h33
  4. parcourir un tableau aléatoirement
    Par khayyam90 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 01/12/2004, 13h44
  5. [langage] Parcourir un tableau
    Par Jibees dans le forum Langage
    Réponses: 13
    Dernier message: 22/04/2003, 14h18

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