ORDER BY (petit souci)

Résolu/Fermé
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017 - 30 janv. 2014 à 17:53
 Utilisateur anonyme - 31 janv. 2014 à 10:31
Bonjour,

J'ai un souci avec ce code :

// Préparation de la requête
                        $dn = "SELECT id, username, email, "
                            . "DATE_FORMAT( signup_date, '%d/%m/%Y %H:%i:%s') as dt, "
                            . "rang from users ORDER BY 'rang' ASC LIMIT $limit_start,$pagination ";

                        // Requête SQL
                        $resultat = mysql_query($dn);


En faite, ma requête ne trie pas les données et les affiches dans l'ordre d'insertion pouvez-vous m'aider ?

Merci par avance.

6 réponses

Utilisateur anonyme
30 janv. 2014 à 18:05
Bonjour

Mais si, ta requête trie bien les données. Elle les trie par 'rang' croissant. Tu voulais les trier selon quel critère ?
0
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017
30 janv. 2014 à 18:10
Croissant et justement, je sais que la requête trie bien.

Mais lors de l'affichage sur le site, ça m'affiche les données sans prendre en compte le tri.

Une idée ?
0
Utilisateur anonyme
30 janv. 2014 à 18:20
Message initial :
En faite, ma requête ne trie pas les données
Message 2
je sais que la requête trie bien.

Faudrait savoir...

On ne peut rien dire sur ton affichage, on ne voit pas le code. Mais je serais très étonné qu'il mélange les résultats de la requête.
Affiches-tu 'rang' dans tes résultats ?
0
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017
30 janv. 2014 à 18:36
Oui il trie pas lors de l'affichage en faite, je me suis mal exprimé désolé.

Voila mon code de ma page :

<?php
include('config.php');
include('header2.php');
?>
<div id="content">
    <div class="content_item">
        <!-- modifier ci-dessous le titre qui apparaît dans la barre du navigateur entre > et <   -->
        <div id="corps100">
            <div id="users">
            <?php
            //On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
            ?>
                <div id="left">
                    <?php if (isset($_SESSION['username'])): ?>
                        Je te souhaite une bonne visite <?php echo htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8'); ?>
                    <?php else: ?>
                        Bienvenue cher visiteur, inscrivez-vous <a href="sign_up.php">ici</a> ou connectez vous <a href="connexion.php">ici</a>,
                        Bonne visite
                    <?php endif; ?>

                    <?php if (isset($_SESSION['username'])): ?> 
                        <!-- Si lutilisateur est connecte, on lui donne un lien pour modifier ses informations, pour voir ses messages et un pour se deconnecter
                        //On affiche les liens -->
                    <?php else: ?>
                    <!-- Sinon, on lui donne un lien pour sinscrire et un autre pour se connecter -->
                        <br/>
                        <a href="sign_up.php">Inscription</a><br />
                        <a href="connexion.php">Se connecter</a></br></br></br></br>
                    <?php endif; ?>
                </div>
                <div class="content">
                    <mark>Voici la liste des utilisateurs inscrits sur le site : </mark>
                    <table>
                        <tr>
                            <th>Pseudo</th>
                            <th>Rang</th>
                            <th>Date inscription</th>
                        </tr>
                        <?php
                        // Numero de page (1 par <span class="s7p7oe5766j" id="s7p7oe5766j_18">défaut</span>)
                        if (isset($_GET['page']) && is_numeric($_GET['page'])) {
                            $page = $_GET['page'];
                        } else {
                            $page = 1;
                        }

                        // Nombre d'info par page
                        $pagination = 11;
                        // Numéro du 1er enregistrement à lire
                        $limit_start = ($page - 1) * $pagination;

                        // Préparation de la requête
                        $dn = "SELECT id, username, email, "
                            . "DATE_FORMAT( signup_date, '%d/%m/%Y %H:%i:%s') as dt, "
                            . "rang from users ORDER BY 'rang' ASC LIMIT $limit_start,$pagination ";

                        // Requête SQL
                        $resultat = mysql_query($dn);

                        // Traitement et affichage des données
                        ?>
                        
                        <?php while ($dnn = mysql_fetch_assoc($resultat)): ?>
                            <tr>
                                <td class="left"><a href="profile.php?id=<?php echo $dnn['id']; ?>"><?php echo htmlentities($dnn['username'], ENT_QUOTES, 'UTF-8'); ?></a></td>     
                                <td class="left"><?php echo htmlentities($dnn['rang'], ENT_QUOTES, 'UTF-8'); ?>     </td>
                                <td class="left"><?php echo htmlentities($dnn['dt'], ENT_QUOTES, 'UTF-8'); ?>  </td>
                            </tr>
                        <?php endwhile; ?>
                    </table>
                    <?php
                    // Nb d'enregistrement total
                    $nb_total = mysql_query('SELECT COUNT(*) AS nb_total FROM users');
                    $nb_total = mysql_fetch_array($nb_total);
                    $nb_total = $nb_total['nb_total'];

                    // Pagination
                    $nb_pages = ceil($nb_total / $pagination);
                    ?>
                    <p>[ Page :
                    <?php for ($i = 1; $i <= $nb_pages; $i++): ?>
                        <?php if ($i == $page): ?>
                            <?php echo $i; ?>
                        <?php else: ?>
                            <a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a>
                        <?php endif; ?>
                    <?php endfor; ?>
                    ]</p>
                </div>
            </div>
        </div>
    </div>
</div>
<?php include('info-flash.php'); ?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
30 janv. 2014 à 21:00
Si tu as vraiment mis 'rang' entre apostrophes droites dans ta requête (ORDER BY 'rang') alors c'est normal que ça ne trie pas. 'rang' entre apostrophes droites ne désigne pas un champ de ta table, mais le simple texte 'rang'.
Pour parler du champ rang en MySQL, il faut le mettre entre accents graves :
"SELECT id, username, email, "
                            . "DATE_FORMAT( signup_date, '%d/%m/%Y %H:%i:%s') as dt, "
                            . "rang from users ORDER BY `rang` ASC LIMIT $limit_start,$pagination ";

ou même entre rien du tout (s'il n'y a pas de caractères spéciaux genre espace) :
"SELECT id, username, email, "
                            . "DATE_FORMAT( signup_date, '%d/%m/%Y %H:%i:%s') as dt, "
                            . "rang from users ORDER BY rang ASC LIMIT $limit_start,$pagination ";
0
Lucryio Messages postés 204 Date d'inscription samedi 4 janvier 2014 Statut Membre Dernière intervention 4 juin 2017
30 janv. 2014 à 23:35
Ah mais oui bien sûr, que je suis bête, merci beaucoup c'est très gentil de m'avoir fait part de mon erreur.
0
Utilisateur anonyme
31 janv. 2014 à 10:31
De rien :-)
0