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 :

Amélioration de formulaire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut Amélioration de formulaire
    Bonjour à tous, je suis nouveau sur ce forum et j'espère être dans la bonne rubrique pour vous soumettre mon problème.
    Voilà malgrés mes connaissances limitées en programmation et avec un peu d'aide, j'ai crée un formulaire en PHP avec 2 listes déroulantes récupérant chacune un champs d'une BDD MYSQL + un bouton submit qui m'affiche les résultats sur la même page. Il sagit d'une base contenant des modèles de bateaux et les chantiers nautiques associé.
    Ce que je souhaite améliorer c'est:
    1- lorsque je selectionne un chantier nautique dans la premiere liste, que la seconde me filtre uniquement les modeles du chantier
    2- que les valeurs choisies restent en mémoire
    3- que lorsqu'il y a plus de 5 résultat, que je puisse afficher un menu de navigation pour faire défiler les résultats par groupe de 5.
    Vous trouverez le code ci-dessous, je suis tout à fait conscient qu'il est perfectible, donc n'hésitez pas !
    D'avance merci pour votre aide.

    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
    <?php require_once('connections/connection.php'); ?>
    <?php
    mysql_select_db($database_connection, $connection);
    $query_Recordset1 = "SELECT DISTINCT constructeur FROM voilier ORDER BY constructeur";
    $Recordset1 = mysql_query($query_Recordset1, $connection) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
     
    mysql_select_db($database_connection, $connection);
    $query_Recordset3 = "SELECT DISTINCT modele FROM voilier ORDER BY modele";
    $Recordset3 = mysql_query($query_Recordset3, $connection) or die(mysql_error());
    $row_Recordset3 = mysql_fetch_assoc($Recordset3);
    $totalRows_Recordset3 = mysql_num_rows($Recordset3);
     
    $var_constructeur = "tous";
    if (isset($_POST['sel_constructeur'])) {
      $var_constructeur = (get_magic_quotes_gpc()) ? $_POST['sel_constructeur'] : addslashes($_POST['sel_constructeur']);
    }
    $var_modele = "tous";
    if (isset($_POST['sel_modele'])) {
      $var_modele = (get_magic_quotes_gpc()) ? $_POST['sel_modele'] : addslashes($_POST['sel_modele']);
    }
     
    mysql_select_db($database_connection, $connection);
    $query_select = "SELECT * FROM voilier" ;
    $query_where = " WHERE 1 = 1 ";
    if ($var_constructeur <> "tous")
    {
       $query_where .= " AND constructeur = '".$var_constructeur."'";
    }
     
    if ($var_modele <> "tous")
    {
       $query_where .= " AND modele = '".$var_modele."'";
    }
     
    $query_Recordset2 = $query_select.$query_where.$query_order." ORDER BY RAND() ASC LIMIT 5";
    $Recordset2 = mysql_query($query_Recordset2, $connection) or die(mysql_error());
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    $totalRows_Recordset2 = mysql_num_rows($Recordset2);
    ?>
     
     
    <body>
       <form action="" method="post" name="filtre" target="_self" id="filtre">
              <table>
                <tr>
                  <td>Recherche</td>
                </tr>
                <tr>
                  <td>
                    Modele:
                  </td>
                  <td>
                    <select name="sel_modele" id="sel_modele">
                      <option value="tous">TOUS</option>
                      <?php do { ?>
                      <option value="<?php echo strtoupper($row_Recordset3['modele']); ?>"><?php echo strtoupper($row_Recordset3['modele']); ?></option>
                      <?php
                      } while ($row_Recordset3 = mysql_fetch_assoc($Recordset3));
                      $rows = mysql_num_rows($Recordset3);
                      if($rows > 0) {
                      mysql_data_seek($Recordset3, 0);
    	              $row_Recordset3 = mysql_fetch_assoc($Recordset3);
                      }
                      ?>
                     </select>
                   </td>
                  </tr>
                <tr>
                  <td>
                    Chantier:
                  </td>
                  <td>
                    <select name="sel_constructeur" id="sel_constructeur">
                    <option value="tous">TOUS</option>
                    <?php
                    do {  
                    ?>
                    <option value="<?php echo $row_Recordset1['constructeur']?>"><?php echo $row_Recordset1['constructeur']?></option>
                    <?php
                    } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
                    $rows = mysql_num_rows($Recordset1);
                    if($rows > 0) {
                    mysql_data_seek($Recordset1, 0);
    	            $row_Recordset1 = mysql_fetch_assoc($Recordset1);
                    }
                    ?>
                    </select>
                    </td>
                  </tr>
                <tr>
                  <td>                 
                    <input type="submit" name="Submit" value="Trouver" > </td>
                  </tr>
             </table>
         </form>
              <?php if ($totalRows_Recordset2 > 0) { // Show if recordset not empty ?>
               <?php do { ?>
             <table width="300" border="5px">
                 <tr>
                    <td>Modèle:
                     <?php echo strtoupper($row_Recordset2['modele']); ?></td>
                  </tr>
                  <tr>
                    <td>Chantier:
                    <?php echo $row_Recordset2['constructeur']; ?></td>
                  </tr>
               </table>
                  <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
                  <?php }else{
                    echo "Désolé, il n'y a pas de bateau correspondant à votre requête.";
                    } ?>
    </body>
    </html>
    <?php
    mysql_free_result($Recordset2);
    ?>

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    question 1/
    malheureusement ce n'est pas possible uniquement en php.

    si tu veux filtrer par catégorie il faut nécessairement faire appel à 2 pages en php/html pur soit en 1 page en php serveur, et Javascript sur le document html..

    Sinon dans ton select tu peux utiliser optgroup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <select name="variable">
    <optgroup label="catégorie1">
    <option>choix 11</option>
    <option>choix 12</option>
    <option>choix 13</option>
    </optgroup>
    <optgroup label="catégorie2">
    <option value="21">choix 21</option>
    <option value="22">choix 22</option>
    <option value="23" selected="selected">choix 23</option>
    </optgroup>
    </select>
    question 2/
    renseigne toi sur session_start() et session_destroy()

    autres questions... pas compris.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse
    en effet s'il faut ajouter du JavaScript je ne suis pas contre, le seul pb c'est que je n'y connait rien !
    Concernant le 3ieme point, c'est que je limite mon affichage à 5 résultats
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query_Recordset2 = $query_select.$query_where.$query_order." ORDER BY RAND() ASC LIMIT 5";
    $Recordset2 = mysql_query($query_Recordset2, $connection) or die(mysql_error());
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    $totalRows_Recordset2 = mysql_num_rows($Recordset2);
    et que je souhaite donner la possibilité au visiteur de voir les résultats suivant avec un menu de navigation

  4. #4
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Je pense que j'ai la réponse pour la question 3
    Un système de pagination :

    http://antoine-herault.developpez.co...atique-en-php/

  5. #5
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    Pr la Q1 : AJAX est probablement la meilleur solution,

    en full php tu peux creer un 1er bouton qui recharge la page et envoi la requête generant le deuxieme champs mais AJAX reste plus ergonomique t evite de recharger la page.

    il va falloir t'y mettre (http://siddh.developpez.com/articles/ajax/ ^^)

    Pr la Q2 la réponse de GENE69 me parait une bonne solution

    Pr la Q2 la réponse de Meloo.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Ok, je vais regarder tout ça et je vous tiens au courant
    Merci

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Bon ben après avoir bien regardé je n'y arrive vraiment pas !

    pour les points 1 et 2, je laisse tomber pour le moment, mais il faudrait vraiment que je puisse résoudre le point 3 : afficher un menu "précédent" et "suivant" pour permettre de faire défiler mes résultats par groupe de 5.
    J'ai essayé de mettre en place ça sur Dreamweaver mais comme le jeu d'enregistrement Recordset2 est le résultat des jeux Recordset1 et Recordset3, il ne m'affiche pas le menu !

  8. #8
    Membre actif Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Points : 288
    Points
    288
    Par défaut
    Pourrais tu nous montrer le code pour le système de pagination ?

  9. #9
    Membre éprouvé Avatar de gretch
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2006
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    Points : 1 250
    Points
    1 250
    Par défaut
    si tu doit faire au plus vite, il existe une librairie nommer " Pager "

    suit le lien de melooo chapitre 5

    j'ai jamais tester mais bon .... sinon chapitre 4 pour le codé à main

  10. #10
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    pour la question 1, tu ajoutes Prototype / Jquery à tes pages. Ensuite tu ajoute un observateur "onchange" sur le select de la catégorie, et tu fais Ajax.updater() sur le contenu du 2e select.

    Je ne sais pas faire de javascript mais utiliser ces librairies est TRES simple.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    gene69, j'ai bien peur de ne pas savoir modifier mon code à la main, je suis vraiment débutant. par contre en regardant à droite et a gauche, j'ai quand même l'impression que pour créer des menus déroulant imbriqué, il faut avoir au moins 2 bases et je n'en ai qu'une !

    Meloooo, je t'envoie le code que me génère DW ce soir, je pense qu'il doit être adaptable mais mon niveau ne me permets pas de le faire

    en tout cas je suis heureux de voir qu'il y a encore des personnes qui s'intéressent aux problèmes des autres dans ce monde que l'on dit "individualiste"

  12. #12
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    pour ta question 1, voici un exemple vite fait à partir du lien que Sabotage t'a donné dont tu peux t'inspirer.

    index.html
    Code html : 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
     
    <html>
     
    	<head>
     
    		<script type='text/JavaScript'>
             
                            function getXhr(){
                    
                                    var xhr = null; 
                                    
                                    if(window.XMLHttpRequest)
                                       xhr = new XMLHttpRequest(); 
                                    else if(window.ActiveXObject){ 
                                       try {
                                            xhr = new ActiveXObject("Msxml2.XMLHTTP");
                                        } catch (e) {
                                            xhr = new ActiveXObject("Microsoft.XMLHTTP");
                                        }
                                    }
                                    else { 
                                       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
                                       xhr = false; 
                                    } 
                    
                                    return xhr;
                            }
                    
                            function getListe(listeAAfficher){
                                    
                                    var xhr = getXhr();
                                    var param = null; 
                                    var listeDestination = null;
                                    
                                    if(listeAAfficher == 'modeles'){
                                            param = document.getElementById('chantiers').value;
                                            document.getElementById('modeles').style.visibility = 'visible';
                                            document.getElementById('sous_modeles').style.visibility = 'hidden';
                                            document.getElementById('modeles').innerHTML = 'loading';
                                            listeDestination = document.getElementById('modeles');
                                    }else{
                                            param = document.getElementById('modeles').value;
                                            document.getElementById('sous_modeles').style.visibility = 'visible';
                                            document.getElementById('sous_modeles').innerHTML = 'loading';
                                            listeDestination = document.getElementById('sous_modeles');
                                    }
                                                                                            
                                    xhr.open("GET", "getListe.php?liste="+listeAAfficher+"&param="+param, true);
                                    
                                    xhr.onreadystatechange = function(){
                                            
                                            if(xhr.readyState == 4 && xhr.status == 200)
                                                    listeDestination.innerHTML = xhr.responseText;
                                            
                                    }
                                    
                                    xhr.send(null);
                            }
                            
                    </script>
     
    		<style>
                            
                            #modeles, #sous_modeles{
                                    visibility: hidden;
                            }
                    
                    </style>
     
    	</head>
     
     
    <body>
     
     
    <form>
    	<select id="chantiers" onChange="getListe('modeles');">
    		<option value="C1">Chantier1</option>
    		<option value="C2">Chantier2</option>
    		<option value="C3">Chantier3</option>
    	</select>
     
    	<select id="modeles" onChange="getListe('sous_modeles');"></select>
     
    	<select id="sous_modeles"></select>
     
    </form>
     
     
     
    </body>
     
     
    </html>

    getListe.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
    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
     
    <?php
     
    	$liste = $_GET['liste'];
    	$param = $_GET['param'];
     
    	$retour = '';
     
    	// Ici à toi de constituer dynamiquement tes retours en fonction de la liste et du param de la liste via une requête SQL par exemple
     
    	if($liste == 'modeles'){
     
    		switch ($param) {
    			case 'C1':
    				$retour .= '<option value="C1_M1">chantier 1 modele 1</option>';
    				$retour .= '<option value="C1_M2">chantier 1 modele 2</option>';
    				$retour .= '<option value="C1_M3">chantier 1 modele 3</option>';
    				break;
    			case 'C2':
    				$retour .= '<option value="C2_M1">chantier 2 modele 1</option>';
    				$retour .= '<option value="C2_M2">chantier 2 modele 2</option>';
    				$retour .= '<option value="C2_M3">chantier 2 modele 3</option>';
    				break;
    			case 'C3':
    				$retour .= '<option value="C3_M1">chantier 3 modele 1</option>';
    				$retour .= '<option value="C3_M2">chantier 3 modele 2</option>';
    				$retour .= '<option value="C3_M3">chantier 3 modele 3</option>';
    				break;
    		}		
     
    	}else{
     
    		switch ($param) {
    			case 'C1_M1':
    				$retour .= '<option value="C1_M1_S1">chantier 1 modele 1 sous modele 1</option>';
    				$retour .= '<option value="C1_M1_S2">chantier 1 modele 1 sous modele 2</option>';
    				$retour .= '<option value="C1_M1_S3">chantier 1 modele 1 sous modele 3</option>';
    				break;
    			case 'C1_M2':
    				$retour .= '<option value="C1_M2_S1">chantier 1 modele 2 sous modele 1</option>';
    				$retour .= '<option value="C1_M2_S2">chantier 1 modele 2 sous modele 2</option>';
    				$retour .= '<option value="C1_M2_S3">chantier 1 modele 2 sous modele 3</option>';
    				break;
    			case 'C1_M3':
    				$retour .= '<option value="C1_M3_S1">chantier 1 modele 3 sous modele 1</option>';
    				$retour .= '<option value="C1_M3_S2">chantier 1 modele 3 sous modele 2</option>';
    				$retour .= '<option value="C1_M3_S3">chantier 1 modele 3 sous modele 3</option>';
    				break;
    			case 'C2_M1':
    				$retour .= '<option value="C2_M1_S1">chantier 2 modele 1 sous modele 1</option>';
    				$retour .= '<option value="C2_M1_S2">chantier 2 modele 1 sous modele 2</option>';
    				$retour .= '<option value="C2_M1_S3">chantier 2 modele 1 sous modele 3</option>';
    				break;
    			case 'C2_M2':
    				$retour .= '<option value="C2_M2_S1">chantier 2 modele 2 sous modele 1</option>';
    				$retour .= '<option value="C2_M2_S2">chantier 2 modele 2 sous modele 2</option>';
    				$retour .= '<option value="C2_M2_S3">chantier 2 modele 2 sous modele 3</option>';
    				break;
    			case 'C2_M3':
    				$retour .= '<option value="C2_M3_S1">chantier 2 modele 3 sous modele 1</option>';
    				$retour .= '<option value="C2_M3_S2">chantier 2 modele 3 sous modele 2</option>';
    				$retour .= '<option value="C2_M3_S3">chantier 2 modele 3 sous modele 3</option>';
    				break;
    			case 'C3_M1':
    				$retour .= '<option value="C3_M1_S1">chantier 3 modele 1 sous modele 1</option>';
    				$retour .= '<option value="C3_M1_S2">chantier 3 modele 1 sous modele 2</option>';
    				$retour .= '<option value="C3_M1_S3">chantier 3 modele 1 sous modele 3</option>';
    				break;
    			case 'C3_M2':
    				$retour .= '<option value="C3_M2_S1">chantier 3 modele 2 sous modele 1</option>';
    				$retour .= '<option value="C3_M2_S2">chantier 3 modele 2 sous modele 2</option>';
    				$retour .= '<option value="C3_M2_S3">chantier 3 modele 2 sous modele 3</option>';
    				break;
    			case 'C3_M3':
    				$retour .= '<option value="C3_M3_S1">chantier 3 modele 3 sous modele 1</option>';
    				$retour .= '<option value="C3_M3_S2">chantier 3 modele 3 sous modele 2</option>';
    				$retour .= '<option value="C3_M3_S3">chantier 3 modele 3 sous modele 3</option>';
    				break;
    		}
     
    	}
     
     
    	echo $retour;
     
    ?>

    te voilà avec 3 listes liées

    Ceci dit c'est sur que l'inclusion du framework JQuery simplifierait les choses...

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Meloooo Voir le message
    Pourrais tu nous montrer le code pour le système de pagination ?
    Voici le code que m'a généré DW pour un jeu d'enregistrement simple avec affiche des 5 premiers résultats + lien de navigation

    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
    <?php require_once('connections/connection.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $currentPage = $_SERVER["PHP_SELF"];
     
    if (isset($_GET['pageNum_Recordset1'])) {
      $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
    }
    $startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
     
    $maxRows_Recordset1 = 5;
    $pageNum_Recordset1 = 0;
    if (isset($_GET['pageNum_Recordset1'])) {
      $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
    }
    $startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;
     
    mysql_select_db($database_connection, $connection);
    $query_Recordset1 = "SELECT DISTINCT voilier.constructeur FROM voilier ORDER BY voilier.constructeur";
    $query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
    $Recordset1 = mysql_query($query_limit_Recordset1, $connection) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
     
    if (isset($_GET['totalRows_Recordset1'])) {
      $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
    } else {
      $all_Recordset1 = mysql_query($query_Recordset1);
      $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
    }
    $totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
     
    $queryString_Recordset1 = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_Recordset1") == false && 
            stristr($param, "totalRows_Recordset1") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_Recordset1 = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_Recordset1 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset1, $queryString_Recordset1);
    ?>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <?php do { ?>
      <table width="300" border="5px">
        <tr>
          <td>Chantier: <?php echo $row_Recordset1['constructeur']; ?></td>
        </tr>
      </table>
      <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
    <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, max(0, $pageNum_Recordset1 - 1), $queryString_Recordset1); ?>">Précédent</a>
    <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, min($totalPages_Recordset1, $pageNum_Recordset1 + 1), $queryString_Recordset1); ?>">Suivant</a>
    </body>
    </html>
    <?php
    mysql_free_result($Recordset1);
    ?>
    sauf que dans ce cas là, si je mets une liste déroulante, il me limite aussi les résultats dans la liste ....

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    J'avance, maintenant je sais afficher le menu de navigation !!!
    Sauf que....il me l'affiche même quand il y a moins de 5 résultats et lorsqu'il y a + de 5 résultats suite à une requete, il m'affiche des résultats en ignorant ma requete, vu que j'ai rechargé ma page et que le menu déroulant s'est remis par défaut à "TOUS" !!!

    Voici le 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
    <?php require_once('connections/connection.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    mysql_select_db($database_connection, $connection);
    $query_Recordset1 = "SELECT DISTINCT constructeur FROM voilier ORDER BY constructeur";
    $Recordset1 = mysql_query($query_Recordset1, $connection) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
     
    mysql_select_db($database_connection, $connection);
    $query_Recordset3 = "SELECT DISTINCT modele FROM voilier ORDER BY modele";
    $Recordset3 = mysql_query($query_Recordset3, $connection) or die(mysql_error());
    $row_Recordset3 = mysql_fetch_assoc($Recordset3);
    $totalRows_Recordset3 = mysql_num_rows($Recordset3);
     
    $currentPage = $_SERVER["PHP_SELF"];
     
    if (isset($_GET['pageNum_Recordset2'])) {
      $pageNum_Recordset2 = $_GET['pageNum_Recordset2'];
    }
    $startRow_Recordset2 = $pageNum_Recordset2 * $maxRows_Recordset2;
     
    $maxRows_Recordset2 = 5;
    $pageNum_Recordset2 = 0;
    if (isset($_GET['pageNum_Recordset2'])) {
      $pageNum_Recordset2 = $_GET['pageNum_Recordset2'];
    }
    $startRow_Recordset2 = $pageNum_Recordset2 * $maxRows_Recordset2;
     
    $var_constructeur = "tous";
    if (isset($_POST['sel_constructeur'])) {
      $var_constructeur = (get_magic_quotes_gpc()) ? $_POST['sel_constructeur'] : addslashes($_POST['sel_constructeur']);
    }
    $var_modele = "tous";
    if (isset($_POST['sel_modele'])) {
      $var_modele = (get_magic_quotes_gpc()) ? $_POST['sel_modele'] : addslashes($_POST['sel_modele']);
    }
     
    mysql_select_db($database_connection, $connection);
    $query_select = "SELECT * FROM voilier" ;
    $query_where = " WHERE 1 = 1 ";
    if ($var_constructeur <> "tous")
    {
       $query_where .= " AND constructeur = '".$var_constructeur."'";
    }
     
    if ($var_modele <> "tous")
    {
       $query_where .= " AND modele = '".$var_modele."'";
    }
     
    $query_Recordset2 = $query_select.$query_where.$query_order." ORDER BY RAND() ASC LIMIT 5";
    $query_limit_Recordset2 = sprintf("%s LIMIT %d, %d", $query_Recordset2, $startRow_Recordset2, $maxRows_Recordset2);
    $Recordset2 = mysql_query($query_Recordset2, $connection) or die(mysql_error());
    $row_Recordset2 = mysql_fetch_assoc($Recordset2);
    $totalRows_Recordset2 = mysql_num_rows($Recordset2);
     
    if (isset($_GET['totalRows_Recordset2'])) {
      $totalRows_Recordset2 = $_GET['totalRows_Recordset2'];
    } else {
      $all_Recordset2 = mysql_query($query_Recordset2);
      $totalRows_Recordset2 = mysql_num_rows($all_Recordset2);
    }
    $totalPages_Recordset2 = ceil($totalRows_Recordset2/$maxRows_Recordset2)-1;
     
    $queryString_Recordset2 = "";
    if (!empty($_SERVER['QUERY_STRING'])) {
      $params = explode("&", $_SERVER['QUERY_STRING']);
      $newParams = array();
      foreach ($params as $param) {
        if (stristr($param, "pageNum_Recordset2") == false && 
            stristr($param, "totalRows_Recordset2") == false) {
          array_push($newParams, $param);
        }
      }
      if (count($newParams) != 0) {
        $queryString_Recordset2 = "&" . htmlentities(implode("&", $newParams));
      }
    }
    $queryString_Recordset2 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset2, $queryString_Recordset2);
    ?>
     
     
    <body>
       <form action="" method="post" name="filtre" target="_self" id="filtre">
              <table>
                <tr>
                  <td>Recherche</td>
                </tr>
                <tr>
                  <td>
                    Modele:
                  </td>
                  <td>
                    <select name="sel_modele" id="sel_modele">
                      <option value="tous">TOUS</option>
                      <?php do { ?>
                      <option value="<?php echo strtoupper($row_Recordset3['modele']); ?>"><?php echo strtoupper($row_Recordset3['modele']); ?></option>
                      <?php
                      } while ($row_Recordset3 = mysql_fetch_assoc($Recordset3));
                      $rows = mysql_num_rows($Recordset3);
                      if($rows > 0) {
                      mysql_data_seek($Recordset3, 0);
    	              $row_Recordset3 = mysql_fetch_assoc($Recordset3);
                      }
                      ?>
                     </select>
                   </td>
                  </tr>
                <tr>
                  <td>
                    Chantier:
                  </td>
                  <td>
                    <select name="sel_constructeur" id="sel_constructeur">
                    <option value="tous">TOUS</option>
                    <?php
                    do {  
                    ?>
                    <option value="<?php echo $row_Recordset1['constructeur']?>"><?php echo $row_Recordset1['constructeur']?></option>
                    <?php
                    } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
                    $rows = mysql_num_rows($Recordset1);
                    if($rows > 0) {
                    mysql_data_seek($Recordset1, 0);
    	            $row_Recordset1 = mysql_fetch_assoc($Recordset1);
                    }
                    ?>
                    </select>
                    </td>
                  </tr>
                <tr>
                  <td>                 
                    <input type="submit" name="Submit" value="Trouver" > </td>
                  </tr>
             </table>
         </form>
              <?php if ($totalRows_Recordset2 > 0) { // Show if recordset not empty ?>
               <?php do { ?>
             <table width="300" border="5px">
                 <tr>
                    <td>Modèle:
                     <?php echo strtoupper($row_Recordset2['modele']); ?></td>
                  </tr>
                  <tr>
                    <td>Chantier:
                    <?php echo $row_Recordset2['constructeur']; ?></td>
                  </tr>
               </table>
                  <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
                  <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, max(0, $pageNum_Recordset2 - 1), $queryString_Recordset2); ?>">Précédent</a>
                  <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, min($totalPages_Recordset2, $pageNum_Recordset2 + 1), $queryString_Recordset2); ?>">Suivant</a>
                  <?php }else{
                    echo "Désolé, il n'y a pas de bateau correspondant à votre requête.";
                    } ?>
    </body>
    </html>
    <?php
    mysql_free_result($Recordset2);
    ?>

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 15
    Points : 4
    Points
    4
    Par défaut
    Pour l'affichage ou non du menu de navigation des résultats, je pensais faire un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
                  <a href="<?php printf("%s?pageNum_Recordset2=%d%s", $currentPage, max(0, $pageNum_Recordset2 - 1), $queryString_Recordset2); ?>
    			  <?php if($pageNum_Recordset2 > 1 AND $pageNum_Recordset2 < $totalPages_Recordset2) echo "Précédent"; ?></a>
    mais il doit manquer quelque chose

Discussions similaires

  1. amélioration validation formulaire
    Par cuddy dans le forum Débuter
    Réponses: 6
    Dernier message: 12/10/2012, 15h54
  2. Améliorer un formulaire
    Par patriciaprovence dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2008, 00h53
  3. améliorer mon formulaire
    Par lenissart dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/08/2008, 14h55
  4. Amélioration du formulaire pour poster
    Par Space Cowboy dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 10/01/2007, 17h49
  5. Réponses: 10
    Dernier message: 10/11/2005, 16h04

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