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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 Expert
    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
    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.

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

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    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/

  4. #4
    Membre émérite 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 : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 165
    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.

  5. #5
    Membre averti
    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
    Par défaut
    Ok, je vais regarder tout ça et je vous tiens au courant
    Merci

  6. #6
    Membre averti
    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
    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 !

  7. #7
    Membre averti
    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
    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

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