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 :

pagination,formulaire dynamique et session


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut pagination,formulaire dynamique et session
    Je fais un formulaire dynamique des 2 tables dans un système de pagination(7 question par pages).

    Je veux que l'internaute remplit les champs de texte ou coche ce qu'il veut dans chaque page et qu'il avance par suivant ou recule par précédent dans le formulaire et qu'il valide juste après dans une page de traitement donc il faut que la récupération des données entré par l'internaute soit conservé dans des variables session.

    Mon problème je n'arrive pas a récupérer mes variables. Voila 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
    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
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    <?php
    session_start();
      foreach($_POST as $k => $v){
    $_SESSION[$k]=$v;
    }  
    print_r($_SESSION);
     
     
    ?>
     
     
    <?php
    // Numero de page (1 par défaut)
     
    $db_host="localhost";
    $db_username="root";
    $db_name="navigateursweb";
    $db_password="";
     
     
            //Connexion à la BDD  
            $connect = mysql_connect($db_host,$db_username,$db_password) or die("Erreur de connexion au serveur");
    mysql_select_db($db_name,$connect) or die("Erreur de connexion à la base de données");
     
     
     
    $sql = "SELECT * FROM question WHERE id_categorie='1'";
    $resultat = mysql_query($sql);
    $count=mysql_num_rows($resultat);/*pour afficher le dernier form*/
     
     
    if(isset($_GET['page']) && is_numeric($_GET['page']) && (int)$_GET['page'] > 1){
    $page = $_GET['page'];
    }else{
    $page=1;
    }
    $nb_total = mysql_query('SELECT COUNT(*) AS id_question FROM question WHERE id_categorie = 1 ');
    $nb_total = mysql_fetch_array($nb_total);
    $sql = "SELECT count(id_question) FROM question Where id_categorie='1' ";
    		   $req = mysql_query($sql) or die (mysql_error());
    		   $nb_questions = mysql_fetch_row($req);
    $i=1;
    while($i<=$nb_questions[0]){
    	if(isset($_POST['question' . $i]) )
    	{
      		$_SESSION['question' . $i]= $_POST['question' . $i];
    	}
     
    	  	$i++;
    }
    print_r($_POST);
     
    $nb_total = $nb_total['id_question'];
    // Pagination
    // Nombre d'info par page
    $pagination = 7;
    // Numéro du 1er enregistrement à lire
    $limit_start = ($page - 1) * $pagination;
    $nb_pages = ceil($nb_total / $pagination);
     
     
    ?>
    <table align="center">
    <tr><td>
    <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <input type="hidden" name="page" value="<?php if(($_GET['page']+1)<= ($nb_pages+1)) echo ($_GET['page']+1); else{"disabled";} ?>">
    <input type="submit" name="BT1" value="PAGE SUIVANTE">
    </form>
    </td><td>
    <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>">
    <input type="hidden" name="page"  value="<?php 
    if(($_GET['page']-1)>1) echo ($_GET['page']-1); ?>">
    <input type="submit" name="BT2" value="PAGE PRECEDENTE">
    </form>
    </td></tr>
    </table>
    <?php
    echo '<h1>'.$page .'</h1>';
     
    if($limit_start<=$count){
    // Préparation de la requête
     
    $sql = "SELECT * FROM question WHERE id_categorie='1' LIMIT $limit_start, $pagination";
     
     
    // Requête SQL
    $resultat = mysql_query($sql);
    // Traitement et affichage des données
    while ( $donnee = mysql_fetch_assoc($resultat) ) {
    echo"<div id='question73'>";
    echo"<table width='75%' align='center' border='1' style='border-collapse: collapse' bordercolor='#0099CC' bgcolor='white'>";
    echo"<tr>";
    echo"<td align='center'>";
    echo"<table width='100%' cellspacing='0'>";
    echo"<tr>";
    echo"<td align='center' bgcolor='#E5F9FF'>";
    echo"<font size='2' color='#0033CC'><b><label for='5X21X73'>".$donnee['libelle_quest']."</br><font size='2' color='#0099FF'>(".$donnee['remarques'].")</i><b/></label>";
    echo"</tr>";
    echo"<tr>";
    echo"<td align='center'>";
     
    $query_rep = "SELECT *
    
    FROM reponse
    WHERE id_question = ".$donnee['id_question']." ORDER BY id_question";
     
     
     
    $result = mysql_query($query_rep) OR die("Erreur");
    echo"<table class='question'>";
     
     
    while ( $reponse = mysql_fetch_array($result) )
    {
    echo"<tr>";
    echo"<td>&nbsp;</td>";
    echo"<td align='left' class='answertext'>";
    if($donnee['type']=="Multichoix")
    {
     
    echo"<input type=\"checkbox\" name=\"question".$donnee['id_question']."[]\"value=\"".$reponse['libelle_rep']."\" />";
    echo"<label class=\"answertext\">".$reponse['libelle_rep']."</label>";
    echo "<br />";
    }
    else if($donnee['type']=="choix unique")
    {
    $inputhidden="";
    foreach($_SESSION as $k => $v){
    $inputhidden.='<input type="hidden" name="'.$k.'" value="'.$v.'" />';	
    echo "<INPUT TYPE=\"radio\" NAME=\"question".$donnee['id_question']."\"  VALUE=\"".$reponse['libelle_rep']."\"";
    if(isset($_SESSION['question' . $donnee['id_question']]) AND $_SESSION['question' . $donnee['id_question']]===$reponse['libelle_rep']) {echo "checked";} }
    echo "/>";
    echo $reponse['libelle_rep']."<BR>";
    }
    }//fin while reponses
    if($donnee['type']=="champs texte")
    echo"<td align=\"center\"/><input type=\"text\" class=\"text\" name=\"question".$donnee['id_question']."\" size=\"8\"/>";
    else if($donnee['type']=="textarea")
    {
    echo "<td align=\"center\"/><textarea name=\"question".$donnee['id_question']."\" class=\"textarea\" rows=\"5\" cols=\"40\"></textarea>";
    }echo "<br />";
    echo"</td>";
    echo"<td>&nbsp;</td>";
    echo"</tr>";
    echo"</table>";
    echo"</td>";
    echo"</tr>";
    echo"<tr>";
    echo"<td align='center' bgcolor='#E5F9FF'>";
    echo"<font size='1'></font>";
    echo"</td>";
    echo"</tr>";
    echo"</table>";
    echo"</td>";
     
     
    echo"</tr>";
    echo"</table>";
    echo"<table>";
    echo"<tr>";
    echo"<td height='1'></td>";
    echo"</tr>";
    echo"</table>";
    echo"</div>";
     
    //fin while question
     
     
     
    /* ICI VOTRE CODE NORMAL */
    /* Affichage d'un élément */
    }
     
    // Nb d'enregistrement total
     
     
    }else{
    echo '<pre>';
    print_r($_SESSION);
    echo '</pre>';
     
    $inputhidden="";
    foreach($_SESSION as $k => $v){
    $inputhidden.='<input type="hidden" name="'.$k.'" value="'.$v.'" />';
    }
     
    echo '<form method="post" action="essai.php">
    
    '.$inputhidden.'
    <input type="submit" value="traitement">
    </form>';
    echo '<pre>';
    print_r($_SESSION);
    echo '</pre>';
     
    //fin
    }
    ?>
    Merci
    a++

  2. #2
    Membre éprouvé Avatar de Pierrot2Mars
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    Salut,

    Je ne comprend pas très bien ta question.
    Tu n'arrives pas à récupérer tes valeurs envoyées en GET ?
    Où est ton code de traitement ?

    Pour la déclaration de tes formulaires, spécifie le nom de ton formulaire ainsi que l'encode utilisé, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="form" method="get" action="<?php echo htmlentities($_SERVER["PHP_SELF"]);?>" enctype="multipart/form-data">

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut
    bonjour
    oui j'arrive pas à récupérer mes valeurs saisie ou cochés
    et j'ai pas trouver une idée pour la session dans la pagination et désolé j'ai pas compris votre proposition j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $sql = "SELECT count(id_question) FROM question Where id_categorie='1' ";
    		   $req = mysql_query($sql) or die (mysql_error());
    		   $nb_questions = mysql_fetch_row($req);
    $i=1;
    while($i<=$nb_questions[0]){
    	if(isset($_POST['question' . $i]) )
    	{
      		$_SESSION['question' . $i]= $_POST['question' . $i];
    	}
     
    	  	$i++;
    }
    print_r($_POST);
    ne donne rien et j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['question']) && !empty($_POST['question'])){ 
    $_SESSION['question'] = $_SESSION['question']+$_POST['question'];}
    print_r($_SESSION);
    dans l’affichage me donne Array ( [question] => 0 ) sans valeur toujours 0
    comment la corriger merci.

  4. #4
    Membre éprouvé Avatar de Pierrot2Mars
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    Tu utilises la méthode GET pour envoyer tes données.
    Donc tu récupères tes données sous la forme $_GET['question'].

    Change de méthode dans ta balise <form method ..></form>:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="form" method="post" action="<?php echo htmlentities($_SERVER["PHP_SELF"]);?>" enctype="multipart/form-data">
    Tu pourras alors récupérer tes données sous la forme $_POST['question'] comme tu le fais.

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut
    voila j'ai essayé dan l'affichage pour testet que ce qu'il prend l me donne le numéro de page et le non de button que je clique Array ( [page] => 7 [BT1] => PAGE SUIVANTE ) precedenet ou suivant mai ne m'afiche pa les valeu que j'ai cocher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_GET['question']) && !empty($_GET['question'])){ 
    $_SESSION['question'] = $_SESSION['question']+$_GET['question'];}
    print_r($_GET);

  6. #6
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 26
    Par défaut
    j'ai changer tout avec get et comme tu m'a dit

  7. #7
    Membre éprouvé Avatar de Pierrot2Mars
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Par défaut
    J'ai relu ton code dans ton premier post.
    --> Tes input ne sont pas inclus dans un formulaire.
    Tu as deux balises <form> au début pour page suivante/précédente puis en bas tu as un formulaire content uniquement un bouton submit et un champ hidden.
    Revoie ton code en incluant tes champ input dans un formulaire pour que les données soient envoyées !

Discussions similaires

  1. Pagination d'un tableau formulaire dynamique
    Par Argol dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 19/03/2009, 16h03
  2. [JSF] Implémentation d'un formulaire dynamique
    Par Fleep dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2005, 19h00
  3. pb access formulaire dynamique
    Par jibouze dans le forum IHM
    Réponses: 3
    Dernier message: 12/01/2005, 09h39
  4. formulaire dynamique
    Par shirya dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/10/2004, 16h13
  5. [struts]Formulaire dynamique
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 28/05/2004, 16h35

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