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] Tableau dynamique


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut [Tableaux] Tableau dynamique
    bonjour
    je souhaiterai creer un tableau dynamique à partir de variables super globales mais malgre differents essai je n'abouti 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
     
    $table = array( $_POST['user'] => 'Vous avez oublié de renseigner votre Pseudo!!',
                    $_POST['email']=> 'Vous avez oublié votre email!!');
    foreach ( $table as $key => $val)
    {
      if(!$key)  
        { 
            echo "<form action=register.php method=post>"; 
            echo "<h1>".$val."</h1>"; 
            echo "<center>"; 
            echo "    <input type=hidden name=user value=$user>";
            echo "    <input type=hidden name=email value=$email>"; 
            echo "    <input type=submit value=\": : Revenir : :\" class=bouton>"; 
            echo "</center>"; 
            echo "</form>";
            exit;
        }
    }
    est ce que somebody à une reponse.
    merci d'avance.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    oula, je ne pense pas que ce que tu tentes de faire soit réalisable comme ça...

    je te conseillerais un truc comme ça :
    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
    <?php
    if(!$_POST['user'])
    {
    echo 'Vous avez oublié de renseigner votre Pseudo!!';
    }
    if(!$_POST['email'])
    {
    echo 'Vous avez oublié votre email!!';
    }
    if(!$_POST['user'] || !$_POST['email'])
    {
            echo "<form action=register.php method=post>"; 
            echo "<center>"; 
            echo "    <input type=hidden name=user value=\"".$_POST['user']."\">";
            echo "    <input type=hidden name=email value=\"".$_POST['email']."\">"; 
            echo "    <input type=submit value=\": : Revenir : :\" class=bouton>"; 
            echo "</center>"; 
            echo "</form>";
            exit;
    }
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $table = array( 'user' => 'Vous avez oublié de renseigner votre Pseudo!!',
                    'email' => 'Vous avez oublié votre email!!');
    foreach ( $table as $key => $val)
    {
      if(!$_POST[$key] || trim($_POST[$key]) == '')  
        { 
            echo "<h1>".$val."</h1>"; 
        }
    }
    Néanmoins je rejoins la suggestion de Swoög

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    Bonjour,
    je vous remercie de vos reponses.
    je vais en rester avec les boucles if .
    cependant ça en fait beaucoup car pour l'exemple j'avais simplifié le formulaire,
    mais en fait il y a 10 champs à verifier!!
    cdlt
    ab

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Dnas ce cas, le plus simple est encore la solution de Mr N.

    Sinon, personnellement pour vérifier les formulaires, ce que je fais c'est vérifier tous les champs et mettre une variable de session à la valeur nécessaire, du style 0x1 => pas de nom d'utilisateur, 0x2 => pas de mail, 0x4 => pas de mot de passe, 0x8 => pas de nom, 0x10 => pas d'âge... etc...

    j'utilise que 1, 2, 4 et 8 comme ça j'utilise la variable comme un "champ de bits" et pour vérifier si une érreur est présente, il me suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(($_SESSION['error'] & 0x1) == 0x1) echo 'Pas de nom d\'utilisateur';
    ensuite, je stocke les paramètres communiqués dans une autre variables de session (c'est très simple, il suffit d'un simple $_SESSION['form'] = $_POST) et je renvoie sur la page du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header('Location: la_page_du_form.html');
    die();
    le traitement finale ressemble à ça :
    sur la page de traitement :
    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
    <?php
    session_start();
    $_SESSION['error'] = 0x00;
    if(!isset($_POST['user']) || trim($_POST['user']) == '') $_SESSION['error'] |= 0x01;
    
    if(!isset($_POST['mail']) || trim($_POST['mail']) == '') $_SESSION['error'] |= 0x02;
    
    if(!isset($_POST['pass']) || trim($_POST['pass']) == '') $_SESSION['error'] |= 0x04;
    
    if(!isset($_POST['name']) || trim($_POST['name']) == '') $_SESSION['error'] |= 0x08;
    
    if(!isset($_POST['old']) || trim($_POST['old']) == '') $_SESSION['error'] |= 0x10;
    
    if($_SESSION['error'] != 0x00)
    {
       $_SESSION['form'] = $_POST;
       hreader('Location: la_page_du_form.php?'.session_name().'='.session_id());
       die();
    }
    
    unset($_SESSION['error']);
    
    // Traitement du formulaire
    sur la page du formulaire :

    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
    35
    36
    37
    38
    39
    40
    41
    <?php session_start(); ?>
    <!-- Début de la page -->
    <?php
    if(isset($_SESSION['error']))
    {
       $error = array();
    
       if(($_SESSION['error'] & 0x01) == 0x01) $error[] = 'Vous n\'avez pas mis de login';
    
       if(($_SESSION['error'] & 0x02) == 0x02) $error[] = 'Vous n\'avez pas mis de mail';
    
       if(($_SESSION['error'] & 0x04) == 0x04) $error[] = 'Vous n\'avez pas mis de mot de pass';
    
       if(($_SESSION['error'] & 0x08) == 0x08) $error[] = 'Vous n\'avez pas mis de nom';
    
       if(($_SESSION['error'] & 0x10) == 0x10) $error[] = 'Vous n\'avez pas mis d\'&acirc;ge';
    
       if(count($error) == 0) $error[] = dechex($_SESSION['error']);
    
       echo '<div class="Error">'.implode('<br />'."\r\n", $error).'<br/>'."\r\n".'<span onclick="this.parentNode.style.display = \'none\'" class="Error">Cliquez ICI pour faire disparaître le message d\'erreur.</span></div>'."\r\n";
       unset($_SESSION['error'], $error);
    }
    ?>
    <?php
    $data = array();
    //éventuellement ajout des valeurs par défaut dans $data
    if(isset($_SESSION['form']))
    {
       $data = $_SESSION['form'];
       unset($_SESSION['form'];
    }
    ?>
    <form action="la_page_de_traitement.php" method="post">
    <div>
    <label for="user">login : </label><input type="text" name="user" id="user" <?php if(isset($data['user'])) echo 'value="'.htmlentities($data['user']).'"'; ?>/><br />
    <label for="mail">mail : </label><input type="text" name="mail" id="mail" <?php if(isset($data['mail'])) echo 'value="'.htmlentities($data['mail']).'"'; ?>/><br />
    <label for="pass">mot de passe : </label><input type="password" name="pass" id="pass" <?php if(isset($data['password'])) echo 'value="'.htmlentities($data['password']).'"'; /* attention, c'est pas conseillé pour un pass ;) */ ?>/><br />
    <label for="name">nom : </label><input type="text" name="name" id="name" <?php if(isset($data['name'])) echo 'value="'.htmlentities($data['name']).'"'; ?>/><br />
    <label for="old">age : </label><input type="text" name="old" id="old" <?php if(isset($data['old'])) echo 'value="'.htmlentities($data['old']).'"'; ?>/><br />
    <input type="submit" value="traiter le formulaire"/>
    </form>
    Voilà, ç'a peut-être l'air d'une usine à gaz vu comme ça mais j'utilise ce système sur tout mes sites, et il est finalement très simple à gérer et permet de tout faire sans que l'utilisateur ne s'en apperçoive, ou presque ^^ en plus c'est super flexible, le champ d'erreur peut tenir sur une valeur prenant jusqu'à 4octets (0x00000000) soient 4*8 (64) erreurs possibles, ça fait déjà un formlulaire assez costaud ^^
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Attention avec 0x10 !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0x2  => 00000010
    0x10 => 00001010
    donc si j'ai pas mis d'âge ton système me diras également que je n'ai pas mis de mail.

    => Faire attention à n'utiliser que des puissances de 2

    Il est mieux aussi de définir des constantes ou un autre moyen afin de rendre moins abstrait ses codes d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($error & ERROR_NO_MAIL)
    est quand même plus lisible que
    Sinon c'est un système efficace en effet.

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par Mr N.
    Attention avec 0x10 !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0x2  => 00000010
    0x10 => 00001010
    donc si j'ai pas mis d'âge ton système me diras également que je n'ai pas mis de mail.

    => Faire attention à n'utiliser que des puissances de 2
    t'as juste oublié un petit truc : 0x => hexa donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0x2 => 00000010 ok
    0x10 => 00010000 ;)
    Citation Envoyé par Mr N.
    Il est mieux aussi de définir des constantes ou un autre moyen afin de rendre moins abstrait ses codes d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($error & ERROR_NO_MAIL)
    est quand même plus lisible que
    sûr, c'est une solution d'abstraction, pas bête ^^

    Citation Envoyé par Mr N.
    Sinon c'est un système efficace en effet.
    Merci ^^
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    shame on me...
    Aux temps pour moi, je raisonnait en binaire(!) et donc j'oubliai complêtement qu'on partait d'un hexadécimal...
    Désolé.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 32
    Points : 13
    Points
    13
    Par défaut
    merci de vos reponses.
    je vais essayer d'utiliser vos methodes de travaiil qui me semblent tres pros et particulierement bien codées.
    cdlt
    ab

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

Discussions similaires

  1. [Tableaux] Tableau dynamique issue d'une requete
    Par JmL40 dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 20h37
  2. [Tableaux] Tableau dynamique avec php
    Par Ricus28 dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 22h46
  3. [Tableaux] Tableau associatif dynamique
    Par popeye82 dans le forum Langage
    Réponses: 5
    Dernier message: 09/02/2006, 15h13
  4. [Tableaux] Tableau HTML dynamique
    Par gunth dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 16h59
  5. [Tableaux] tableau croisé dynamique
    Par flawer dans le forum Langage
    Réponses: 6
    Dernier message: 06/12/2005, 21h38

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