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 :

Trier des listes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut Trier des listes
    bonjour

    J'ai une page qui affiche la liste des demandes d'interventions extraites à partir d'une table mysql
    elles sont triées par no de demande la plus récente en tête :

    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
     
      <?
      //Récupération de la liste des demandes dans la table T_DI
      $req_di = mysql_query ("SELECT * FROM t_di order by no_di DESC limit $nb_limit");
      $nb_di =  mysql_numrows($req_di);
     
      //Données de chaque demande
      for ($i=0;$i<$nb_di;$i++)
      { 
        $no_di = mysql_result($req_di,$i,"no_di");
        $date_di = mysql_result($req_di,$i,"date_di");
        $etat_di = mysql_result($req_di,$i,"etat_di");
        $no_prior = mysql_result($req_di,$i,"no_prior");
        $mat_app = mysql_result($req_di,$i,"mat_app");
        $req_app = mysql_query ("SELECT * FROM t_util WHERE mat_util='$mat_app'");
        $donnees = mysql_fetch_array ($req_app);
        $pren_app = $donnees['pren_util'];
        $nom_app = $donnees['nom_util'];
        $no_serv = mysql_result($req_di,$i,"no_serv");
        $req_nom_serv = mysql_query ("SELECT * FROM t_serv WHERE no_serv = '$no_serv'");
        $donnees = mysql_fetch_array ($req_nom_serv);
        $nom_serv = $donnees['nom_serv'];
        $descrip_di = mysql_result($req_di,$i,"descrip_di");
      ?>
     
      <!Affichage des DONNEES>
      <!*********************>
     
      <tr><td align="right"><b><? echo $no_di ?></b></td><td align="center"><? echo $date_di ?><td align="center"><? echo $etat_di ?></td><td align="center"><font color = "<? echo $color_prior[$no_prior]; ?>"><b><? echo $no_prior ?></b></font></td><td align="center"><? echo "$nom_app" ?><td align="center"><? echo $nom_serv ?></td><td><? echo $descrip_di ?></td>
      <td><a href="consult_DI.php?no_di=<? echo $no_di ?>">Détail</a>
    je voudrais ajouter trois boutons radio qui me permettraient de trier ma liste par : bouton 1 / no de demande (par défaut) no_di
    bouton 2 / nom appelant nom_app
    bouton 3 / nom de service nom_serv

    mais je ne sais pas du tout comment faire : récupérer la valeur du bouton coché, faire en sorte qu'il reste coché tant que j'en choisi pas un autre, ...
    j'avais commencé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form name = "tri">
    <table>
    <td><input name="CHOIX" value="no_di" type="radio" onClick="document.tri.submit()">Par Numéro</td>
    <td><input name="CHOIX" value="mat_app" type="radio" onClick="document.tri.submit()">Par Demandeur</td>
    <td><input name="CHOIX" value="no_serv" type="radio" onClick="document.tri.submit()">Par Service</td>
    </table>
    </form>
    chaque value c'est le nom d'un champ de la table que je rajouterais dans l'option orderby de ma requête sql
    mais je ne sais pas comment récupérer la valeur du bouton coché, l'affecter à une variable php $ordre pour ensuite avoir ma requête "select ... orderby $ordre"
    qqun peut il m'aider ?

  2. #2
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Bonjour,

    tu as le bon raisonnement.
    Voici une esquisse de 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
    $ma_requete = "SELECT * FROM t_di ";
     
    if (isset($_POST[''CHOIX]))
    {
             switch ($_POST['CHOIX'])
             {
                 case 'no_di':
                       $ma_requete .= " order by ".$_POST['CHOIX']." DESC";
                       break;
                 // pareil pour les autres cas
             }
    }
     
    $ma_requete .= " limit $nb_limit";
    Le but est donc de découper ta requête afin de la construire et l'exécuter ensuite.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    ça marche !!!
    tout à l'heure j'avais un pb d'index "CHOIX" en fait il manquait juste method = "POST" dans la déclaration du formulaire
    vivement que ça se termine ce stage j'ai la tête farcie de php html et javascript !
    hé oui c moi caliméro j'ai envie de me plaindre aujourd'hui
    lol
    merci et bonne journée

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    même pas besoin de découper la requête en fait ça donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    <!formulaire pour entrer une valeur limite et un critère de tri>
     
    <form name="param_DI" method="POST" action="<?php echo($_SERVER['PHP_SELF']); ?>">
    <table cellspacing=10>
     
    <! Nombre limite de demandes à afficher >
    <tr><td><b>Limite :</b></td><td><input type="text" name="limit" value="<? echo $nb_limit ?>" SIZE="8" STYLE="text-align:right"></td></tr>
     
    </table>
     
     
    <!Affiche le TITRE>
    <!---------------->
     
    <center>
    <h1>Liste des demandes</h1>
    <br>
     
     
    <!BOUTONS DE TRI>
    <!-------------->
     
    <table>
    <td><input name="CHOIX" value="no_di" type="radio" onClick="document.param_DI.submit()">Par Numéro</td>
    <td><input name="CHOIX" value="mat_app" type="radio" onClick="document.param_DI.submit()">Par Demandeur</td>
    <td><input name="CHOIX" value="no_serv" type="radio" onClick="document.param_DI.submit()">Par Service</td>
    </table>
     
    <!fin du formulaire de sélection de limite et de tri>
    </form>
    et plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      <?
      if (isset($_POST["CHOIX"]))
      {
        $ordre = $_POST["CHOIX"];
      }
      //Récupération de la liste des demandes dans la table T_DI
      $req_di = mysql_query ("SELECT * FROM t_di order by $ordre DESC limit $nb_limit");
      $nb_di =  mysql_numrows($req_di);
     
      //Données de chaque demande
     ....

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    par contre le bouton radio ne reste pas coché
    c'est pas si grave mais si t'as une idée ...

  6. #6
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 44
    Points
    44
    Par défaut
    rajoute un petit peu de javascript :

    tu fais une boucle for sur les boutons radio. Quand tu trouves celui qui a la bonne valeur(valeur que tu recuperes avec $_POST), tu affectes 'checked' a la propriete checked du bouton radio.

    bon courage

    Gaetan

  7. #7
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Je confirme ce qu'a dit galette.

    En tout cas, ravie de t'avoir aidé.

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    je confirme galette et navis84..
    mais bon est ce qu'on doit nécessairement utiliser le javascript?
    moi j'irais directement en validation php dans la création

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    <td>
      <input name="CHOIX" value="no_serv" <? echo(isset($_POST['CHOIX']) && $_POST['CHOIX'] == "no_serv") ? 'checked' : ''; ?> type="radio" onClick="document.param_DI.submit()">Par Service
    </td>

  9. #9
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 38
    Points : 44
    Points
    44
    Par défaut
    Ca marche aussi , reflexion faite je prefere la solution PHP a la creation.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 40
    Points
    40
    Par défaut
    wouah j'ai affaire à des vrais pro ! je me sens tout petit à coté
    Ca marche nickel la solution php pendant la création des boutons, impeccable ! Avec javascript j'avais un peu peur étant donné que je maitrise très peu
    ben heureusement que vous êtes là, j'aurai fini dans les temps c'est un grand soulagement pour moi
    merci à vous

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

Discussions similaires

  1. trier des listes entières ?
    Par SimonLib dans le forum jQuery
    Réponses: 2
    Dernier message: 31/10/2011, 15h01
  2. Trier des List implementant Comparable
    Par selvie dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 21/10/2007, 13h32
  3. Trier une liste d'objets d'après un champ des objets
    Par gids01 dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 02/07/2007, 09h52
  4. Trier une liste en comparant des doubles
    Par babylone7 dans le forum Langage
    Réponses: 10
    Dernier message: 03/05/2007, 10h38
  5. Trier des listes chaînées
    Par colocolo dans le forum C
    Réponses: 2
    Dernier message: 16/02/2007, 17h40

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