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 :

Bouton de tri [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut Bouton de tri
    Bonjour,

    Je souhaite insérer un bouton de tri sur mon formulaire mais je ne sais pas comment mettre le .$orderby dans la requête. Je ne suis pas à l'aise avec la syntaxe.

    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
    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
     
    <form action="index.php" method="GET">
    				<input type="submit" name="orderby" value="asc" />
     
     
    				<table class="table table-striped table-bordered">
                      <thead>
                        <tr>
                          <th>Code</th>
                          <th>Description</th>
                          <th>Quantité</th>
                          <th>Catégorie</th>
                          <th>Date</th>
                          <th>Actions</th>
                        </tr>
                      </thead>
                      <tbody>
                          <?php
     
                            require 'database.php';
                            $db = Database::connect();
     
    						if(isset($_GET['orderby']) && $_GET['orderby'] == "asc") 
    						{
       							$orderby = 'ASC';
    						}
    						else 
    						{
    					   		$orderby = 'DESC';
    						}
     
     
     
     
     
                            $statement = $db->query("SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.qte_stock, documentation.qte_demande, documentation.date_maj, categories_publications.categorie AS categorie_publication FROM documentation LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id". $orderby);
     
                            while($item = $statement->fetch()) 
                            {
                                echo '<tr>';
                                echo '<td>'. $item['code_publication_doc'] . '</td>';
                                echo '<td>'. $item['description'] . '</td>';
                                //echo '<td>'. number_format($item['qte_stock'], 2, '.', '') . '</td>';
    							echo '<td align="center">'. $item['qte_stock'] . '</td>';
                                echo '<td>'. $item['categorie_publication'] . '</td>';
     
    							$date_d = $item['date_maj'];
    							echo '<td>'. strftime('%d-%m-%Y',strtotime($date_d)) . '</td>';
                                echo '<td width=300>';
                                echo '<a class="btn btn-default" href="view.php?id='.$item['id'].'"><span class="glyphicon glyphicon-eye-open"></span> Voir</a>';
                                echo ' ';
                                echo '<a class="btn btn-primary" href="update.php?id='.$item['id'].'"><span class="glyphicon glyphicon-pencil"></span> Modifier</a>';
                                echo ' ';
                                echo '<a class="btn btn-danger" href="delete.php?id='.$item['id'].'"><span class="glyphicon glyphicon-remove"></span> Supprimer</a>';
                                echo '</td>';
                                echo '</tr>';
                            }
     
     
                            Database::disconnect();
                          ?>
                      </tbody>
                    </table>
     
    				</form>

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    As tu essayé de débugger ta requete dans PHPMYADMIN ?

    Perso, quand j'ai un doute sur une syntaxe de requete tordue, je la lance dans PHPMYADMIN (ou tinker sur LARAVEL) via l'onglet SQL pour voir si je n'ai pas d'erreurs et surtout pour m'assurer si j'ai bien les résultats attendus.

    Par contre je pense que ton erreur se situe sur le fait que tu ne donne pas le nom de la colonne sur laquelle tu veux faire ton ORDER BY.

    VOici un exemple de comment utiliser un ORDER BY :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `chapitres` ORDER BY `id` ASC


    La contrainte ORDER BY se place a la fin de la requete SQL.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    merci c'est bien le order by qui pose problème :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $statement = $db->query("SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.qte_stock, documentation.qte_demande, documentation.date_maj, categories_publications.categorie AS categorie_publication FROM documentation LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id ORDER BY `description`". $orderby);

    par contre, si je veux essayer de trier selon deux champs différents de la table, exemple description et date_maj, je suis de nouveau bloquée, j'ai cette erreur : Fatal error: Call to a member function fetch() on a non-object

    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
    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
     
    <form action="index.php" method="GET">
    				<input type="submit" name="orderby" value="description" />
     
     
    				<table class="table table-striped table-bordered">
                      <thead>
                        <tr>
                          <th>Code</th>
                          <th>Description</th>
                          <th>Quantité</th>
                          <th>Catégorie</th>
                          <th>Date</th>
                          <th>Actions</th>
                        </tr>
                      </thead>
                      <tbody>
                          <?php
     
                            require 'database.php';
                            $db = Database::connect();
     
    						if(isset($_GET['orderby']) && $_GET['orderby'] == "description") 
    						{
       							$orderby = 'description';
    						}
    						else 
    						{
    					   		$orderby = 'date_maj';
    						}
     
     
                            $statement = $db->query("SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.qte_stock, documentation.qte_demande, documentation.date_maj, categories_publications.categorie AS categorie_publication FROM documentation LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id ORDER BY" . $orderby);
     
                            while($item = $statement->fetch()) 
                            {
                                echo '<tr>';
                                echo '<td>'. $item['code_publication_doc'] . '</td>';
                                echo '<td>'. $item['description'] . '</td>';
    			    echo '<td align="center">'. $item['qte_stock'] . '</td>';
                                echo '<td>'. $item['categorie_publication'] . '</td>';
     
    			    $date_d = $item['date_maj'];
    			    echo '<td>'. strftime('%d-%m-%Y',strtotime($date_d)) . '</td>';
                                echo '<td width=300>';
                                echo '<a class="btn btn-default" href="view.php?id='.$item['id'].'"><span class="glyphicon glyphicon-eye-open"></span> Voir</a>';
                                echo ' ';
                                echo '<a class="btn btn-primary" href="update.php?id='.$item['id'].'"><span class="glyphicon glyphicon-pencil"></span> Modifier</a>';
                                echo ' ';
                                echo '<a class="btn btn-danger" href="delete.php?id='.$item['id'].'"><span class="glyphicon glyphicon-remove"></span> Supprimer</a>';
                                echo '</td>';
                                echo '</tr>';
                            }
    	                        Database::disconnect();
                          ?>
                      </tbody>
                    </table>
     
    				</form>

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur BackEnd - FrontEnd
    Inscrit en
    avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur BackEnd - FrontEnd
    Secteur : Services de proximité

    Informations forums :
    Inscription : avril 2015
    Messages : 90
    Points : 136
    Points
    136
    Par défaut
    Je t'invite a consulter ce site en anglais qui explique bien comment utiliser la clause ORDER BY : https://www.tutorialspoint.com/sql/s...ng-results.htm

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    avril 2007
    Messages
    8 627
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 8 627
    Points : 16 359
    Points
    16 359
    Par défaut
    Ou en français et chez nous : Le SQL de A à Z - le simple (?) SELECT et les fonctions SQL > Order By

    Mais en l'occurrence, ce serait sans doute une bonne idée d'ajouter un espace entre le ORDER BY et la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $statement = $db->query("SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.qte_stock, documentation.qte_demande, documentation.date_maj, categories_publications.categorie AS categorie_publication 
    FROM documentation 
    LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id 
    ORDER BY " . $orderby);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Bonjour et merci beaucoup pour votre aide.
    Je vais regarder les liens.
    Bonne journée à vous

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

Discussions similaires

  1. [AC-2000] Création de boutons de tri alphabétique
    Par ThieBEN dans le forum IHM
    Réponses: 22
    Dernier message: 22/10/2010, 13h07
  2. [Vxi3] Bouton de tri dans entête de colonne
    Par GuineaPig74 dans le forum Deski
    Réponses: 1
    Dernier message: 31/05/2010, 11h16
  3. Bouton pour tri croissant
    Par sebinator dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/01/2009, 10h58
  4. Réponses: 5
    Dernier message: 19/11/2007, 12h04
  5. [SQL-Server] Bouton de tri sans requête
    Par babap1 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/07/2007, 07h28

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