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

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    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
    Points : 44 155
    Points
    44 155
    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
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    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
    Points : 44 155
    Points
    44 155
    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 émérite
    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
    Points : 2 522
    Points
    2 522
    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;' ;
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

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

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    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

  7. #7
    Membre émérite
    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
    Points : 2 522
    Points
    2 522
    Par défaut
    Sans la requête, impossible de répondre.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  8. #8
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    j'ai testé avec ces jeux de données et ça fonctionne
    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
    <?php
     
    $debut = 0;
    $id = 1;
    $col_ordre = 'c.id_type';
    $ordre = 'DESC';
    $nb_affichage = 100;
    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" ;
      print_r($sql2); die();
      $query2 = mysql_query($sql2, $connect) or die(mysql_error()) ;
      $nb_result2 = mysql_num_rows($query2) ;
    }
    Rassure toi que $ordre soit c.nom_champ ou g.nom_champ si c'est un champ de la table type
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Bonsoir,

    Cela ne fonctionne toujours pas car cela doit venir des tables (elles sont correctes) mais comme tu le dis :

    "Rassure toi que $ordre soit c.nom_champ ou g.nom_champ si c'est un champ de la table type ".

    or le tri se fait non pas sur la table type mais sur les noms et adresses qui sont dans la table salle sport…

    Voici les 2 tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `type` (
      `id` int(10) unsigned NOT NULL,
      `type` varchar(100) NOT NULL DEFAULT ''
    ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
     
     
    INSERT INTO `type` (`id`, `type`) VALUES
    (1, 'Fitness'),
    (2, 'Musculation'),
    (3, 'Aquagym') ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE IF NOT EXISTS `sallesport` (
      `id` int(10) unsigned NOT NULL,
      `nom_sallesport` varchar(1000) NOT NULL DEFAULT '',
      `id_type` int(10) unsigned NOT NULL DEFAULT '0',
      `adresse` varchar(1000) DEFAULT 'inconnu',
      `description` varchar(1000) CHARACTER SET latin1 NOT NULL
    ) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
     
    INSERT INTO `sallesport ` (`id`, `nom_sallesport`, `id_type`, `adresse`, `descriptif`) VALUES
    (1, '<b>Salle DUPONT</b><br>10 avenue de la R&eacute;publique<br>35 000 RENNES’, 1, 'Orientis vero limes in longum protentus et rectum ab Euphratis fluminis ripis ad usque supercilia porrigitur Nili, laeva Saracenis conterminans gentibus, dextr.', 'photo DUPONT'),
    (2, '<b>Salle DURAND</b><br>20 rue de Paris<br>35 000 RENNES’, 2, 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud.', 'photo DURAND'),
    (3, '<b> Salle MARTIN</b><br>15 avenue du Roule<br>35 000 RENNES’, 1, 'Pelagi fragoribus patens, quam plagam Nicator Seleucus occupatam auxit magnum in modum, cum post Alexandri Macedonis obitum successorio iure teneret regna Persidis.', 'photo MARTIN'),
    (4, '<b> Salle LEVASSEUR</b><br>14 boulevard des landes<br>35 000 RENNES’, 3, 'Thalassius vero ea tempestate praefectus praetorio praesens ipse quoque adrogantis ingenii, considerans incitationem eius ad multorum augeri discrimina.', 'photo LEVASSEUR');
    You see what I mean ? Car moi, je coule carrément...

    Canaille

  10. #10
    Membre émérite
    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
    Points : 2 522
    Points
    2 522
    Par défaut
    C'est la requête qui tombe en erreur(celle qui contient le limit ) qu'il faut.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par badaze Voir le message
    C'est la requête qui tombe en erreur(celle qui contient le limit ) qu'il faut.
    C'est effectivement le mot "LIMIT" qui apparaît sur ma page. N'étant pas une codeuse, je dois mettre quoi ou enlever quoi ?

  12. #12
    Membre émérite
    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
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu exécutes une requête. Cette requête est stockée dans une variable. Non ?
    il faut que tu fasses un print de cette variable et qu'ensuite tu copies colles ici.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par badaze Voir le message
    Tu exécutes une requête. Cette requête est stockée dans une variable. Non ?
    il faut que tu fasses un print de cette variable et qu'ensuite tu copies colles ici.
    Désolée BADAZE, je suis nulle, je ne comprends pas. Je ne cherche pas à ce que tu me donnes le résultat mais peux-tu me mettre un exemple ?
    (même si cela n'a rien à voir avec les codes de ma page)
    A moi ensuite de le faire dans ma page (c'est comme ça aussi que j'apprendrai).

    Merci


    Canaille

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ce que tu ne comprends pas, c'est qu'on n'a pas accès à ton ordinateur, ni à ta tête...

    Il faut que tu MONTRES :
    • le CODE que TU as écrit !
    • Ainsi que le message d'erreur complet (et c'est bien de le traduire en français pour le COMPRENDRE !)
    • Et si possible, le CODE GENERE de la REQUETE



    (Sauf erreur, le pense que c'est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $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" ;
      print_r($sql2); die();
    print_r($sql2) permet d'afficher la requête.... et donc de VERIFIER si elle est correcte


    N.B. Je ne pense pas que ce soit le moment de :
    • dire que l'API mysql_ est obsolète (et va disparaitre) ?
    • parler de requête préparée ?
    • parler de jointure (INNER JOIN, LEFT JOIN,...) ?

    (corrige déjà celle-ci, on verra après...)


    Pour faire court, et plus "propre" (LISIBLE !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      $sql2 = "SELECT c.nom_sallesport, c.photo, c.adresse 
       FROM sallesport c
       INNER JOIN type g 
          ON g.id = c.id_type
       WHERE c.id_type = $id 
       ORDER BY $col_ordre $ordre
       LIMIT $debut, $nb_affichage";
    Dernière modification par Invité ; 23/05/2017 à 22h30.

  15. #15
    Membre émérite
    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
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu dois avoir ce qui suit dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      $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" ;
    En dessous tu rajoutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "$sql2<br/>";
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  16. #16
    Membre émérite
    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
    Points : 2 522
    Points
    2 522
    Par défaut
    @jreaux62

    $ordre est éventuellement censé contenir DESC. Donc pas de virgule.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Ah, OK !

    Donc (sans virgule ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      $sql2 = "SELECT c.nom_sallesport, c.photo, c.adresse 
       FROM sallesport c
       INNER JOIN type g 
          ON g.id = c.id_type
       WHERE c.id_type = $id 
       ORDER BY $col_ordre $ordre
       LIMIT $debut, $nb_affichage";

  18. #18
    Nouveau membre du Club
    Femme Profil pro
    Webdesigner
    Inscrit en
    Avril 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2008
    Messages : 55
    Points : 30
    Points
    30
    Par défaut MERCI À TOUS
    Bonjour et Merci à tous d'avoir voulu m'aider.

    J'ai toujours l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT c.nom_sallesport, c.photo, c.adresse 
    FROM sallesport c 
    INNER JOIN type g ON g.id = c.id_type 
    WHERE c.id_type = 1 
    ORDER BY c.id_type DESC 
    LIMIT 0, 100
    Pour Jreaux62 : je n'ai PAS écrit ce code (je l'ai bien précisé dans mon 1er message).
    Même si je ne code pas, je cherche, j'apprends par des petits tutos par ci par là mais non, je ne suis pas une codeuse.
    Je cherche TOUJOURS avant de demander et parfois pendant RÉELLEMENT des heures voire des jours.

    Merci quand même je vais essayer de nouveau de trouver sur internet.

    Canaille

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    On a bien compris que tu n'es pas codeuse.

    Mais plusieurs propositions t'ont été faites, et on a besoin de savoir laquelle tu as testée, et quel est le message d'erreur exact et complet.

    Sans quoi, on ne peut pas t'aider efficacement.


    Par ex. dans ton message précédent, tu montres la requête générée * (c'est bien ), mais pas le message d'erreur...

    * Tu peux la tester directement dans phpMyAdmin.

  20. #20
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Je t'ai donné un jeu données pour des tests en boite blanche effectué dans le Génie logiciel
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
    $debut = 0;
    $id = 1;
    $col_ordre = 'c.id_type';
    $ordre = 'DESC';
    $nb_affichage = 100;
    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" ;   print_r($sql2); die();
    A la sortie, tu as une requête que je trouve OK.
    Es-tu vraiment codeuse?
    Soit tu as un problème de transmission de variable, soit c'est dans ta base de données.
    A toi de débuger ton code.
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

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: 07/12/2013, 00h21
  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, 14h05
  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, 14h01
  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, 21h24
  5. Réponses: 3
    Dernier message: 16/10/2003, 11h22

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