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 :

un tri asc et desc sur un même mot


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut un tri asc et desc sur un même mot
    Bonjour à toutes et à tous !

    J'ai trouvé ce script sur internet et j'ai un petit souci. Il marche très bien mais par contre quand je veux trier une colonne ce script a un "+" et un "+" à côté de "nom".
    or, je souhaiterais qu'en cliquant une première fois sur "nom", ma colonne soit triée en "asc" et quand je reclique une seconde fois, ma colonne soit triée en "desc".

    Est-ce possible ? Merci par avance de votre aide.

    Indicana.

    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
     
    // paramètres de connection à la base
    $hostname = "localhost" ; //nom pour ce connecter à mysql
    $database = "base" ; // nom de la base
    $username = "root" ; // utilisateur
    $password = "root" ; // mot de passe
     
    // connection et sélection de la base
    $connect = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR) ;
    mysql_select_db($database, $connect) ;
     
    // lien du formulaire
    $link = $_SERVER['PHP_SELF'] ;
     
    // récupère l'identifiant de la liste déroulante
    if(isset($_GET['type']) && !empty($_GET['type'])) {
      $id = $_GET['type'] ;
    }
    else {
      $id = 0 ;
    }
     
    // récupère le n° de page de navigation
    if(isset($_GET['debut']) && !empty($_GET['debut'])) {
    	$debut = $_GET['debut'] ;
    }
    else {
    	$debut = '0' ;
    }
     
    // récupère l'ordre d'affichage
    if(isset($_GET['ordre']) && !empty($_GET['ordre'])) {
    	$ordre = $_GET['ordre'] ;
    }
    else {
    	$ordre= 'nom_sallesport asc' ;
    }
     
     
    // Nombre de résultats à afficher par page
    $nb_affichage = 100 ;
     
    // requête pour la navigation entre les enregistrements
    $query_total = "SELECT * FROM sallesport WHERE id_type=$id" ;
    $res_total = mysql_query($query_total, $connect) or die(mysql_error()) ;
    $nb_total = mysql_num_rows($res_total) ;
     
     
    // requête pour la liste de choix
    $sql1 = "SELECT id , type FROM type" ;
    $query1 = mysql_query($sql1 , $connect) or die(mysql_error()) ;
    $nb_result = mysql_num_rows($query1) ;
     
    if(isset($debut)) {
      // requête pour les résultats
      // dépend du choix de la liste déroulante et de l'ordre de tri
      $sql2 = "SELECT c.nom_sallesport , c.photo , c.adresse FROM type g , sallesport c WHERE g.id = c.id_type AND c.id_type = $id ORDER BY $ordre LIMIT $debut, $nb_affichage" ;
      $query2 = mysql_query($sql2, $connect) or die(mysql_error()) ;
      $nb_result2 = mysql_num_rows($query2) ;
    }
     
     
     
    ?>
     
    <html>
    <head>
      <title>sallesport</title>
     
      <script type="text/javascript">
      <!--
      function jumpmenu(targ,selObj,restore){
        eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
        if (restore) selObj.selectedIndex=0;
      }
      //-->
      </script>
      <link href="tableau-themes.css" rel="stylesheet">
     
     
     
     
      </head>
     
    <body>
     
    <!-- DEBUT DE LISTE DEROULANTE -->
     
    <form name="form1" action="#" method="get" enctype="multipart/form-data">
     
      <h3>s&eacute;lectionnez un sallesport : </h3>
     
      <select name="type" onChange="jumpmenu('parent',this,1)">
        <option value="<?php print $link; ?>">choisir</option>
     
        <?php
        while($result1 = mysql_fetch_object($query1)) {
          print '<option value="'.$link.'?type='.$result1->id.'"' ;
          if($id == $result1->id) {
            // si on a sélectionner un genre, on garde le choix dans la liste
            print 'selected = "selected"' ;
          }
          print '>'.$result1->type.'</option>' ;
        }
        if($nb_result > 0) {
          mysql_data_seek($query1, 0) ;
          $result1 = mysql_fetch_assoc($query1) ;
        }
        ?>
      </select>
     
    </form>
    </p>
    <!-- FIN DE LISTE DEROULANTE -->
     
     
    <!-- DEBUT AFFICHAGE DES RESULTATS SELON LE CHOIX -->
    <p>
    <?php
      if($nb_result2 > 0) {
    ?>
     
        <table width="929px"  height="160" border="0" cellpadding="0" cellspacing="0" align="center">
           <tr>
    <td class="trier-par">Trier par :&nbsp;&nbsp;</td>
    <td class="espace-titres">&nbsp;&nbsp;</td>
     <td class="tri-note">note</td>           
    <td class="espace-titres">&nbsp;&nbsp;</td>
    <td class="tri-nom-div">NOM<a href="<?php echo $link,'?type=',$id,'&ordre=nom_sallesport asc&debut=',$debut; ?>" title="trier" class="tri-nom" >&nbsp;&nbsp;+</a>
                <a href="<?php echo $link,'?type=',$id,'&ordre=nom_sallesport desc&debut=',$debut; ?>" title="trier" class="tri-nom">&nbsp;&nbsp;-</a>
    <td class="espace-titres">&nbsp;&nbsp;</td>
    <td class="tri-descriptif">DESCRIPTIF<a href="<?php echo $link,'?type=',$id,'&ordre=adresse asc&debut=',$debut; ?>" title="trier">&nbsp;&nbsp;+</a>
                <a href="<?php echo $link,'?type=',$id,'&ordre=adresse desc&debut=',$debut; ?>" title="trier">&nbsp;&nbsp;-</a></th>
    </tr>
    <tr>
     
    <?php
            while($result2 = mysql_fetch_object($query2)) {
     
    			print '<tr><td class="ligne-titres" width="900" colspan="7"></td><tr>' ;
              print '<tr><td class="photo"><img src="photo-sallesport.gif" width="200" height="160"  alt=""/></td>' ;
    		  print '<td class="espace-blanc"></td>' ;
    		  print '<td class="note"><img src="rating1.gif" width="152" height="29"  alt=""/></td>' ;
    		  print '<td class="espace-blanc"></td>' ;
              print '<td class="descriptif">'.$result2->nom_sallesport.'</td>' ;
    		  print '<td class="espace-blanc"></td>' ;
              print '<td class="descriptif">'.$result2->adresse.'</td><tr>' ;
    		  print '<tr><td class="ligne-blanche" width="929" colspan="7"></td><tr>' ;
     
        }
        print '</table>' ;
     
     
     // barre de navigation
      if($debut != 0) {
        echo '<a href="',$link,'?type=',$id,'&ordre=',$ordre,'&debut=0">D&eacute;but</a>&nbsp;&nbsp;' ;
        echo '&nbsp;&nbsp;<a href="',$link,'?type=',$id,'&ordre=',$ordre,'&debut=' ;
        $resultat = ($debut - $nb_result2) ;
        if($resultat < 0) {
          $resultat = 0 ;
        }
        echo $resultat ;
        echo '">Page pr&eacute;c&eacute;dente</a>&nbsp;&nbsp;' ;
      }
      if(($debut + $nb_result2) < $nb_total) {
        echo '<a href="',$link,'?type=',$id,'&ordre=',$ordre,'&debut=' ;
        $final = ($debut + $nb_result2) ;
        if($final >= $nb_total) {
          $final = ($nb_total - $nb_result2) ;
        }
        echo $final ;
        echo '">Page suivante</a>&nbsp;&nbsp;' ;
        $derniere = ($nb_total - $nb_result2) ;
        echo '<a href="',$link,'?type=',$id,'&ordre=',$ordre,'&debut=',$derniere ;
        echo '">Fin</a></p>' ;
      }
      // FIN DE BARRE DE NAVIGATION DES ENREGISTREMENTS
     
      }
    ?>
     
     
    </p>
    <!-- FIN AFFICHAGE DES RESULTATS SELON LE CHOIX -->
     
     
    <tr></body>
    </html>

  2. #2
    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
    Par défaut
    Essaie comme ç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
    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
     
    <?php
     
    // paramètres de connexion à la base
    $hostname = "localhost" ; //nom pour ce connecter à mysql
    $database = "base" ; // nom de la base
    $username = "root" ; // utilisateur
    $password = "root" ; // mot de passe
     
    // connection et sélection de la base
    $connect = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR) ;
    mysql_select_db($database, $connect) ;
     
    // lien du formulaire
    $link = $_SERVER['PHP_SELF'] ;
     
    // récupère l'identifiant de la liste déroulante
    if(isset($_GET['type']) && !empty($_GET['type'])) {
      $id = $_GET['type'] ;
    }
    else {
      $id = 0 ;
    }
     
    // récupère le n° de page de navigation
    if(isset($_GET['debut']) && !empty($_GET['debut'])) {
    	$debut = $_GET['debut'] ;
    }
    else {
    	$debut = '0' ;
    }
     
    $allowed_col_order = array('nom_sallesport', 'adresse');
    $col_order = (isset($_GET['col_ordre'])  && in_array($_GET['col_ordre'], $allowed_col_order)) ? $_GET['col_ordre'] : 'nom_sallesport';
    $ordre = (isset($_GET['ordre']) && $_GET['ordre'] == 'ASC') ? 'ASC' : 'DESC';
    $new_order = $ordre == 'ASC' ? 'DESC' : 'ASC';
     
    // Nombre de résultats à afficher par page
    $nb_affichage = 100 ;
     
    // requête pour la navigation entre les enregistrements
    $query_total = "SELECT * FROM sallesport WHERE id_type=$id" ;
    $res_total = mysql_query($query_total, $connect) or die(mysql_error()) ;
    $nb_total = mysql_num_rows($res_total) ;
     
     
    // requête pour la liste de choix
    $sql1 = "SELECT id , type FROM type" ;
    $query1 = mysql_query($sql1 , $connect) or die(mysql_error()) ;
    $nb_result = mysql_num_rows($query1) ;
     
    if(isset($debut)) {
      // requête pour les résultats
      // dépend du choix de la liste déroulante et de l'ordre de tri
      $sql2 = "SELECT c.nom_sallesport , c.photo , c.adresse FROM type g , sallesport c WHERE g.id = c.id_type AND c.id_type = $id ORDER BY $col_ordre $ordre LIMIT $debut, $nb_affichage" ;
      $query2 = mysql_query($sql2, $connect) or die(mysql_error()) ;
      $nb_result2 = mysql_num_rows($query2) ;
    }
     
     
     
    ?>
     
    <html>
    <head>
      <title>sallesport</title>
     
      <script type="text/javascript">
      <!--
      function jumpmenu(targ,selObj,restore){
        eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
        if (restore) selObj.selectedIndex=0;
      }
      //-->
      </script>
      <link href="tableau-themes.css" rel="stylesheet">
     
     
     
     
      </head>
     
    <body>
     
    <!-- DEBUT DE LISTE DEROULANTE -->
     
    <form name="form1" action="#" method="get" enctype="multipart/form-data">
     
      <h3>s&eacute;lectionnez un sallesport : </h3>
     
      <select name="type" onChange="jumpmenu('parent',this,1)">
        <option value="<?php print $link; ?>">choisir</option>
     
        <?php
        while($result1 = mysql_fetch_object($query1)) {
          print '<option value="'.$link.'?type='.$result1->id.'"' ;
          if($id == $result1->id) {
            // si on a sélectionner un genre, on garde le choix dans la liste
            print 'selected = "selected"' ;
          }
          print '>'.$result1->type.'</option>' ;
        }
        if($nb_result > 0) {
          mysql_data_seek($query1, 0) ;
          $result1 = mysql_fetch_assoc($query1) ;
        }
        ?>
      </select>
     
    </form>
    </p>
    <!-- FIN DE LISTE DEROULANTE -->
     
     
    <!-- DEBUT AFFICHAGE DES RESULTATS SELON LE CHOIX -->
    <p>
    <?php
      if($nb_result2 > 0) {
    ?>
     
        <table width="929px"  height="160" border="0" cellpadding="0" cellspacing="0" align="center">
           <tr>
    		<td class="trier-par">Trier par :&nbsp;&nbsp;</td>
    		<td class="espace-titres">&nbsp;&nbsp;</td>
    		<td class="tri-note">note</td>           
    		<td class="espace-titres">&nbsp;&nbsp;</td>
    		<td class="tri-nom-div"><a href="<?php echo $link,'?type=',$id,'&col_ordre=nom_sallesport&ordre=' . $new_order . '&debut=',$debut; ?>" title="trier" class="tri-nom" >NOM</a></td>
    		<td class="espace-titres">&nbsp;&nbsp;</td>
    		<td class="tri-descriptif"><a href="<?php echo $link,'?type=',$id,'&col_ordre=adresse&ordre=' . $new_order . '&debut=',$debut; ?>" title="trier">DESCRIPTIF</a></td>
    	</tr>
    <tr>
     
    <?php
            while($result2 = mysql_fetch_object($query2)) {
     
    		  print '<tr><td class="ligne-titres" width="900" colspan="7"></td><tr>' ;
              print '<tr><td class="photo"><img src="photo-sallesport.gif" width="200" height="160"  alt=""/></td>' ;
    		  print '<td class="espace-blanc"></td>' ;
    		  print '<td class="note"><img src="rating1.gif" width="152" height="29"  alt=""/></td>' ;
    		  print '<td class="espace-blanc"></td>' ;
              print '<td class="descriptif">'.$result2->nom_sallesport.'</td>' ;
    		  print '<td class="espace-blanc"></td>' ;
              print '<td class="descriptif">'.$result2->adresse.'</td><tr>' ;
    		  print '<tr><td class="ligne-blanche" width="929" colspan="7"></td><tr>' ;
     
        }
        print '</table>' ;
     
     $link_ordre = '&col_ordre=',$col_ordre,'&ordre=',$ordre;
     // barre de navigation
      if($debut != 0) {
        echo '<a href="',$link,'?type=',$link_ordre,'&debut=0">D&eacute;but</a>&nbsp;&nbsp;' ;
        echo '&nbsp;&nbsp;<a href="',$link,'?type=',$id,$link_ordre,'&debut=' ;
        $resultat = ($debut - $nb_result2) ;
        if($resultat < 0) {
          $resultat = 0 ;
        }
        echo $resultat ;
        echo '">Page pr&eacute;c&eacute;dente</a>&nbsp;&nbsp;' ;
      }
      if(($debut + $nb_result2) < $nb_total) {
        echo '<a href="',$link,'?type=',$id,,'&debut=' ;
        $final = ($debut + $nb_result2) ;
        if($final >= $nb_total) {
          $final = ($nb_total - $nb_result2) ;
        }
        echo $final ;
        echo '">Page suivante</a>&nbsp;&nbsp;' ;
        $derniere = ($nb_total - $nb_result2) ;
        echo '<a href="',$link,'?type=',$id,$link_ordre,'&debut=',$derniere ;
        echo '">Fin</a></p>' ;
      }
      // FIN DE BARRE DE NAVIGATION DES ENREGISTREMENTS
     
      }
    ?>
     
     
    </p>
    <!-- FIN AFFICHAGE DES RESULTATS SELON LE CHOIX -->
     
     
    <tr></body>
    </html>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut
    Bonsoir Sabotage et merci pour ta réponse. Il semblerait qu'il y ait un souci à la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $link_ordre = '&col_ordre=',$col_ordre,'&ordre=',$ordre;
    Ma page s'affiche totalement blanche sous le web...

  4. #4
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $link_ordre = '&col_ordre='.$col_ordre.'&ordre='.$ordre;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Le paramètre type n'a pas de valeur. Il devrait être égal à $id.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     $link_ordre = '&col_ordre=',$col_ordre,'&ordre=',$ordre;
     // barre de navigation
      if($debut != 0) {
        echo '<a href="',$link,'?type=',$link_ordre,'&debut=0">D&eacute;but</a>&nbsp;&nbsp;' ;

  6. #6
    Membre averti
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Par défaut
    Bonjour Badaze, merci aussi de ton aide mais quand j'upload ma page voici l'erreur qui est sur cette page :


    "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc LIMIT 0, 100' at line 1"

    kezako ?

    Canaille

Discussions similaires

  1. Je cherche a avoir 2 tri différents sur une même colonne
    Par snooky147 dans le forum Requêtes
    Réponses: 0
    Dernier message: 06/12/2013, 23h21
  2. Tri numérique et alphabétique sur la même colonne
    Par vichenze dans le forum Requêtes
    Réponses: 9
    Dernier message: 30/04/2009, 13h05
  3. [newbie]comment faire un mouseon/mouseover qui tri par ASC ou DESC?
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/06/2006, 13h01
  4. [CR6][CR8] cohabitation sur un même poste
    Par obi dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 27/11/2003, 20h24
  5. Réponses: 3
    Dernier message: 16/10/2003, 10h22

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