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

PHP & Base de données Discussion :

prob d'affichage avec formulaire et mysql


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut prob d'affichage avec formulaire et mysql
    Bonjour,

    Voici mon code un peu dense mais j'ai pas le choix si je veux que vous compreniez ce que je tente de faire.
    En fait j'ai une page qui me demande le nom, le prénom et le type d'affichage; par jour, par mois, par annee, complet. Une fois que je remplie ces champs et que je choisie le type d'affichage par exemple par mois. J'appuie sur ok qui me renvoie sur un formulaire dans la même page pour choisir quel mois je veux . Puis je souhaite afficher les infos correspondant au nom et prenom de la personne ainsi que le mois sélectionné. Mais une fois que j'arrive au 2eme formulaire j'appuie sur le ok et la rien ne s"affiche et aucune erreur apparait.
    Il n'y a que le complet qui fonctionne.
    Pouvez vous m'aider?
    merci

    code php plus 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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
    <form name="insertion" action="" method="POST">
      <table border="0" align="center" cellspacing="2" cellpadding="2" >
      <tr align="center">
          <td>Nom : </td>
          <td><input type="text" name="nom"></td>
        </tr>
      <tr align="center">
          <td>Prenom : </td>
          <td><input type="text" name="prenom"></td>
        </tr>
      <tr align="center">
      <td>Type d'affichage : </td>
      <td><select name="type">
          <option value="jour" >jour</option>
          <option value="mois" >mois</option>
          <option value="annee" >annee</option>
          <option value="complet" >complet</option>
        </select></td></tr>
      <tr align="center">
          <td colspan="2"><input type="submit" value="ok"></td>
        </tr>  
      </table>
    </form>
    </div>
     
     
    <?php
     
    //connection au serveur:
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db = mysql_select_db( "greg" ) ;
     
     
    $nom=""; 
    if(!empty($_POST["nom"]))
       $nom=$_POST["nom"];
     
    $prenom=""; 
    if(!empty($_POST["prenom"]))
       $prenom=$_POST["prenom"];
     
    $type=""; 
    if(!empty($_POST["type"]))
       $type=$_POST["type"];
     
     
     
     
    if($type == "annee"){
      echo "<form name=\"bb\"  method=\"POST\">";
      echo "<table border=\"0\" align=\"center\"\ cellspacing=\"2\" cellpadding=\"2\" >";
      echo "<tr><td>Choisir l'annee : </td><td><select name=\"annee\" >";
            for ($i=2010; $i<2016; $i++){ 
            echo "<option value= $i >",$i,"</option>";}
            echo "</select></td></tr>";
      echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" value=\"ok\"></td></tr>"; 
      echo "</table></form>";
     
    if(!empty($_POST["annee"]))
       $annee=$_POST["annee"];
    $sql="SELECT * FROM agenda WHERE nom='$nom' AND prenom='$prenom' AND annee='$annee' ORDER by mois";
    $requete = mysql_query( $sql, $cnx ) ;
     
    echo "<div  class=\"kuku\">";  
        echo '<table border>';
        echo'<tr><td>date</td><td>heure</td><td>evenement</td></tr>';
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo "<tr><td>".$result->jour."-".$result->mois."-".$result->annee."</td><td>".$result->heure."h".$result->minute."</td><td>".$result->contenu."</td></tr>" ;
        }
        echo "</table>";
        echo "</div>";
    }
     
    //affichage par mois
    elseif ($type =="mois"){ 
      echo "<form name=\"bb\" method=\"POST\">";
      echo "<table border=\"0\" align=\"center\"\ cellspacing=\"2\" cellpadding=\"2\" >";
      echo "<tr><td>Choisir le mois : </td><td><select name=\"mois\" >";
            for ($i=1; $i<13; $i++){ 
            echo "<option value= $i >",$i,"</option>";}
            echo"</select></td></tr>";
      echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" value=\"ok\"></td></tr>"; 
    $mois=""; 
    if(!empty($_POST["mois"]))
       $mois=$_POST["mois"];
    $sql="SELECT * FROM agenda WHERE nom='$nom' AND prenom='$prenom' AND mois='$mois' ORDER by jour";
    $requete = mysql_query( $sql, $cnx ) ;
     
    echo "<div  class=\"kuku\">";  
        echo '<table border>';
        echo'<tr><td>date</td><td>heure</td><td>evenement</td></tr>';
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo "<tr><td>".$result->jour."-".$result->mois."-".$result->annee."</td><td>".$result->heure."h".$result->minute."</td><td>".$result->contenu."</td></tr>" ;
        }
        echo "</table>";
        echo "</div>";
     }
     
    //affichage par jour
    elseif ($type =="jour"){ 
      echo "<form name=\"bb\" method=\"POST\">";
      echo "<table border=\"0\" align=\"center\"\ cellspacing=\"2\" cellpadding=\"2\" >";
      echo "<tr><td>Choisir le jour : </td><td><select name=\"jour\" >";
            for ($i=1; $i<32; $i++){ 
            echo "<option value= $i >",$i,"</option>";}
            echo"</select></td></tr>";
      echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" value=\"ok\"></td></tr>"; 
    $jour=""; 
    if(!empty($_POST["jour"]))
       $jour=$_POST["jour"];
     
    $sql="SELECT * FROM agenda WHERE nom='$nom' AND prenom='$prenom' AND jour='$jour' ORDER by annee";
    $requete = mysql_query( $sql, $cnx ) ;
     
    echo "<div  class=\"kuku\">";  
        echo '<table border>';
        echo'<tr><td>date</td><td>heure</td><td>evenement</td></tr>';
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo "<tr><td>".$result->jour."-".$result->mois."-".$result->annee."</td><td>".$result->heure."h".$result->minute."</td><td>".$result->contenu."</td></tr>" ;
        }
        echo "</table>";
        echo "</div>";
     }
     
     
     
    elseif ($type =="complet"){ 
    $sql="SELECT * FROM agenda WHERE nom='$nom' AND prenom='$prenom'  ORDER by annee";
    $requete = mysql_query( $sql, $cnx ) ;
     
    echo "<div  class=\"kuku\">";  
        echo '<table border>';
        echo'<tr><td>date</td><td>heure</td><td>evenement</td></tr>';
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo "<tr><td>".$result->jour."-".$result->mois."-".$result->annee."</td><td>".$result->heure."h".$result->minute."</td><td>".$result->contenu."</td></tr>" ;
        }
        echo "</table>";
        echo "</div>";
     }
     
     
     
     
    $cnx= mysql_close(); 
    ?>
     
    </body>
    </html>

  2. #2
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    Salut,

    J'ai pas lu tout ton code mais voila :

    Si tu pointes 2 fois sur la même page avec deux formulaires distincts, il faut que tu mémorises le résultat du premier formulaire ($_POST['truc'])dans des variables de session ($_SESSION['truc'] = $_POST['truc']) , sinon au 2eme passage, elles sont NULL. Et auquel cas, tu utilises $_SESSION dans tes tests pour le second formulaire.

  3. #3
    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
    ton "type" que tu choisis dans le premier formulaire, n'existe plus dans le deuxieme, ton retombe donc au début.
    Tu as deux possibilité : stocker tes choix en sessions ou les faire persister par champs hidden.

    Indente proprment ton code et aère le, il sera plus facile à suivre.

    Au passage c'est comme ça qu'il faut écrire :

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Alors je viens d'essayer par exemple au cas si je choisie l'affichage par mois.
    Donc j'ai choisie de passer par des champs hidden car les variables de session ne veulent pas passer dans ma requête.
    Mais je crois que j'ai toujours un soucis pour garder le nom et le prénom de la personne en mémoire d'un formulaire à l'autre car kan j'appuie sur ok dans le 2eme formulaire rien ne s'affiche.

    Voila le code allège:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
     
     
    <form name="insertion" action="" method="POST">
      <table border="0" align="center" cellspacing="2" cellpadding="2" >
      <tr align="center">
          <td>Nom : </td>
          <td><input type="text" name="nom"></td>
        </tr>
      <tr align="center">
          <td>Prenom : </td>
          <td><input type="text" name="prenom"></td>
        </tr>
      <tr align="center">
      <td>Type d'affichage : </td>
      <td><select name="type">
          <option value="jour" >jour</option>
          <option value="mois" >mois</option>
          <option value="annee" >annee</option>
          <option value="complet" >complet</option>
        </select></td></tr>
      <tr align="center">
          <td colspan="2"><input type="submit" value="ok"></td>
        </tr>  
      </table>
    </form>
     
     
     
    <?php
     
    //connection au serveur:
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db = mysql_select_db( "greg" ) ;
     
     
    $nom=""; 
    if(!empty($_POST['nom']))
       $nom=$_POST['nom'];
     
    $prenom=""; 
    if(!empty($_POST['prenom']))
       $prenom=$_POST['prenom'];
     
    $type=""; 
    if(!empty($_POST["type"]))
       $type=$_POST["type"];
     
     
    //affichage par mois
     
    if ($type =="mois"){ 
     
      echo "<form name=\"bb\" method=\"POST\">";
      echo "<table border=\"0\" align=\"center\"\ cellspacing=\"2\" cellpadding=\"2\" >";
      echo "<input type=\"hidden\" name=\"nom\" value='".$nom."' >";
      echo "<input type=\"hidden\" name=\"prenom\" value='".$prenom."'>";
      echo "<tr><td>Choisir le mois : </td><td><select name=\"mois\" >";
            for ($i=1; $i<13; $i++){ 
            echo "<option value= $i >",$i,"</option>";}
            echo"</select></td></tr>";
      echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" value=\"ok\"></td></tr>"; 
     
    $mois=""; 
    if(!empty($_POST['mois']))
       $mois=$_POST['mois'];
     
    $nom=""; 
    if(!empty($_POST['nom']))
       $nom=$_POST['nom'];
     
    $prenom=""; 
    if(!empty($_POST['prenom']))
       $prenom=$_POST['prenom'];
     
    $sql="SELECT * FROM agenda WHERE nom='$nom' AND prenom='$prenom' AND mois='$mois' ORDER by annee";
    $requete = mysql_query( $sql, $cnx ) ;
     
    echo "<div  class=\"kuku\">";  
        echo '<table border>';
        echo'<tr><td>date</td><td>heure</td><td>evenement</td></tr>';
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo "<tr><td>".$result->jour."-".$result->mois."-".$result->annee."</td><td>".$result->heure."h".$result->minute."</td><td>".$result->contenu."</td></tr>" ;
        }
        echo "</table>";
        echo "</div>";
     }
     
     
    mysql_close($cnx); 
    ?>

  5. #5
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    C'est normal, tu n'as pas démarré de session :

    1) Placer en tout début de ta page un démarrage de session : 2) Puis comme je l'ai déjà dit, lors de l'envoi de la nouvelle page, récupérer ce que le user a posté par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['truc'] = $_POST['truc'];
    3) Et conditionner les tests d'accès à ton second formulaire avec cette variable de session $_SESSION['truc'] et non avec une variable qui sera réinitialisée à chaque envoi de formulaire (c'est à dire à chaque renvoi de page par ton serveur au client).

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Ahh mais c'est normal car ce que j'avais envoyé c'etait pour la solution avec les hidden.
    J'ai testé avec les variables de session et il n'y a pas d'erreur d'affichée mais toujours pas d'affichage. Donc encore je pense les variables qui se memorisent mal ou pas.
    Voila ce que j'ai fais.
    Pouvez-vous m'aider?
    merci

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    <form name="insertion" action="" method="POST">
      <table border="0" align="center" cellspacing="2" cellpadding="2" >
      <tr align="center">
          <td>Nom : </td>
          <td><input type="text" name="nom"></td>
        </tr>
      <tr align="center">
          <td>Prenom : </td>
          <td><input type="text" name="prenom"></td>
        </tr>
      <tr align="center">
      <td>Type d'affichage : </td>
      <td><select name="type">
          <option value="jour" >jour</option>
          <option value="mois" >mois</option>
          <option value="annee" >annee</option>
          <option value="complet" >complet</option>
        </select></td></tr>
      <tr align="center">
          <td colspan="2"><input type="submit" value="ok"></td>
        </tr>  
      </table>
    </form>
    </div>
     
     
    <?php
     
    session_start(); 
     
     
     
    $_SESSION['nom']=""; 
    if(!empty($_POST['nom']))
       $_SESSION['nom']=$_POST['nom'];
     
    $_SESSION['prenom']=""; 
    if(!empty($_POST['prenom']))
       $_SESSION['prenom']=$_POST['prenom'];
     
    $_SESSION['type']=""; 
    if(!empty($_POST['type']))
       $_SESSION['type']=$_POST['type'];
     
    //connection au serveur:
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db = mysql_select_db( "greg" ) ;
     
     
     
     
    //affichage par mois
     
    if ($_SESSION['type'] =="mois"){ 
     
      echo "<form name=\"bb\" method=\"POST\">";
      echo "<table border=\"0\" align=\"center\"\ cellspacing=\"2\" cellpadding=\"2\" >";
     
      echo "<tr><td>Choisir le mois : </td><td><select name=\"mois\" >";
            for ($i=1; $i<13; $i++){ 
            echo "<option value= '".$i."' >" .$i. "</option>";}
            echo"</select></td></tr>";
      echo "<tr align=\"center\"><td colspan=\"2\"><input type=\"submit\" value=\"ok\"></td></tr>"; 
    $mois=""; 
    if(!empty($_POST['mois']))
       $mois=$_POST['mois'];
     
     
     
    $sql="SELECT * FROM agenda WHERE nom='".$_SESSION['nom']."' AND prenom='".$_SESSION['prenom']."' AND mois='$mois' ORDER by annee";
    $requete = mysql_query( $sql, $cnx ) ;
     
    echo "<div  class=\"kuku\">";  
        echo '<table border>';
        echo'<tr><td>date</td><td>heure</td><td>evenement</td></tr>';
        while( $result = mysql_fetch_object( $requete ) )
        {
        echo "<tr><td>".$result->jour."-".$result->mois."-".$result->annee."</td><td>".$result->heure."h".$result->minute."</td><td>".$result->contenu."</td></tr>" ;
        }
        echo "</table>";
        echo "</div>";
     }
     
     
    mysql_close($cnx); 
    ?>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Le soucis peut être c'est que lorsque j'appuie sur le ok du 2eme formulaire j'aimerais que ça s'affiche toujours dans la même page. c'est peut être pas possible??

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    En regardant rapidement le code, la partie comportant des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['type']=""; 
    if(!empty($_POST['type']))
       $_SESSION['type']=$_POST['type'];
    Ca sert à quoi ?????
    Autant utiliser directement les $_POST
    Ou alors pas initialiser à chaque fois les $_SESSION à ""

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    je les ai initialisé au début du code autrement easyPHP me dit qu'il y a un problème d'indexage.
    Mais même en retirant ces lignes ça me récupère rien.

Discussions similaires

  1. [AJAX] Formulaire
    Par polak25 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2007, 18h17
  2. Aucun affichage dans formulaire avec onglet
    Par Daniel MOREAU dans le forum Access
    Réponses: 4
    Dernier message: 04/12/2006, 17h59
  3. Prob avec formulaire
    Par poissonsoluble dans le forum Langage
    Réponses: 16
    Dernier message: 19/05/2006, 14h19
  4. Prob avec formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2005, 18h53
  5. Réponses: 6
    Dernier message: 19/05/2005, 11h06

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