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 :

[Tableaux] fonction d'affichage de messages stockés dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut [Tableaux] fonction d'affichage de messages stockés dans un tableau
    salutations

    je suis en train de concevoir une petite zone d'administration et il me sera nécessaire d'afficher a quelques endroit des messages selon les résultats et actions réalisées.

    J'avais donc pensé stocker les messages sous la forme d'un tableau en leur donnant un numéro a chacun. le tout dans un fichier externe (ex: messages.php) et inclure ce derniers dans les pages le nécessitant.

    Ne me laissant plus qu'a faire appel au numéro désiré selon le messages ou l'erreur qui devra etre affiché à l'utilisateur.

    fichier : messages.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php 
    // Saisie du Formulaire
    $msgtab[0] = " ";
    $msgtab[1] = "- Vous devez saisir votre Nom !";
    $msgtab[2] = "- Vous devez saisir un @mail valide !"; 
    $msgtab[3] = "- Vous devez saisir correctement 2 fois votre @mail !";
    .... etc
    ?>
    exemple du fichier effectuant la vérification de saisie et devant afficher le OU les messages d'erreurs.
    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
     
    // On effectue une boucle selon l'action réalisée
    switch( $action )
    {
         // Action : vérification saisie et génération licence
         case 'validlicence1':
         if ( !$_POST['nom'] || $_POST['email']!=$_POST['email2']) {
    	if ( !$_POST['nom'] )
    	{
    	     $msg = "1";
    	};
    	if ( $_POST['email'] || $_POST['email2'])
                 {
    	     $msg .= "-2";
    	};
         };
         header("Location: generator1.php?msg=$msg");
         exit();
         .....
    Je recharge donc la page grace la fonction header, avec la variable msg faisant référence aux messages ou erreurs devant etre affiché. Mais c'est la que ca se corse pour moi.

    J'ai écrit une petite fonction qui va donc séparer chaque numéro de message a afficher, faire une boucle afin de stocker ces messages et donc les retourner, mais ca ne semble pas fonctionner :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function affiche_messages($a) {
    	$tab = explode("-",$a);
    	for($i=0;$i<sizeof($tab);$i++)
        { 
    		$m = $tab[$i];
    		$messages = $msgtab[$m]."<br /><br />";
        } 
    	return $messages;
    }
    donc admettons que les messages 1 et 2 doivent s'afficher, la variable msg aura donc la valeur 1-2.

    cependant, l'exécution de la fonction affiche_messages($msg); ne renvoit que les "<br />.
    mais je nage, si quelqu'un peu m'aiguiller ou me donner un tit coup de main

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    es-tu bien sûr que dans ta fonction le tableau $msgtab est connu ?

    il n'est ni déclaré en global ni passé en paramètre...

  3. #3
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Plutot que de concaténer les indices de tes erreur et de les explode ensuite pourquoi ne pas les entrer dans un tableau que tu incrémentes à chaque erreur

    Ensuite dans ta fonction d'affichage tu count ton tableau d'erreurs et tu as tes indices directement !

    Sinon sur le principe global moi je définirai plutot les messages d'erreur comme des constantes et tu les affiches quand tu en as besoin plutot que de t'embeter avec un tableau et tout ça
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par francis m
    es-tu bien sûr que dans ta fonction le tableau $msgtab est connu ?

    il n'est ni déclaré en global ni passé en paramètre...
    le fichier messages.php qui est inclut dans le codes a son appelle contient en fait: les informations contenu dans le tableau et la fonction affiche_message ()

    comment dois je le déclarer dans la fonction pour qu'il puisse le reconnaitre ?

    SInon Guitou, je vais essayé de jeter un coup d'oeil sur ta proposition .

  5. #5
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    En effet, le tableau $msgtab n'est pas connu dans ta fonction, c'est pour ça que ça n'affiche rien. Cela dit, même on peut trouver parfois que c'est lourd, je te conseille d'afficher les notice (dans php.ini) durant le développement, ça t'évitera ce genre de petites bétises

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     function affiche_messages($a) {
       global $msgtab;
       $messages = "";
       $tab = explode("-",$a);
     
       foreach ($indice as $tab)
          $messages .= $msgtab[$indice]."<br /><br />";
     
       return $messages;
    }
    Il y a également un autre problème dans ta fonction, c'est que tu n'allais retenir que le dernier message, car tu ne faisais pas une concaténation .= mais une affectation = à la variable messages. Du coup seul le dernier aurait était retourné

    Je me suis permis de mettre un foreach, je trouve que ça simplifie le traitement !
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/10/2014, 13h19
  2. Réponses: 1
    Dernier message: 26/02/2009, 22h05
  3. Réponses: 1
    Dernier message: 16/08/2007, 17h58
  4. Réponses: 2
    Dernier message: 28/11/2006, 11h20
  5. Réponses: 3
    Dernier message: 06/04/2006, 16h09

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