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 :

Ordonner résultats requête par ID décroissant


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Par défaut Ordonner résultats requête par ID décroissant
    Bonjour,

    Je travaille sur une page php avec une requete MySQL qui s'execute et qui genere des resultats d'offres d'emploi. Mon souhait est que les resultats soient affichés par offres.ID decroissant mais j'ai des soucis à le faire.
    Pourriez-vous m'assister ? Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $SearchOffer = new WA_MySQLi_RS("SearchOffer",$conn_i,20);
    $SearchOffer->setQuery("SELECT offres.ID, offres.Internal_ID, offres.Title, offres.Location, offres.Country, offres.Validity, offres.Status, infos_firm.email, infos_firm.nom, infos_firm.photo, pays_world.flag, offres.secteur, offres.Logo_Firm FROM offres, infos_firm, pays_world WHERE infos_firm.email=offres.Email AND offres.Status = 'APPROVED' AND DATEDIFF(offres.Validity,CURDATE()) > 0 AND offres.Country = CONCAT(pays_world.fr,' - ',pays_world.en)");
    if (sizeof($keyArr) > 0) $SearchOffer->Statement .= " AND (";
    for ($x=0; $x<sizeof($keyArr); $x++) {
        if ($x>0) $SearchOffer->Statement .= " AND ";
        $SearchOffer->Statement .= "(CONCAT(offres.Internal_ID, ' ', infos_firm.nom, ' ', offres.Title, ' ', offres.`Description`, ' ', offres.secteur, ' ', offres.Location, ' ', offres.Country) LIKE ?)";
        $SearchOffer->bindParam("c", "".($keyArr[$x])  ."", " "); //colname
    }
    if (sizeof($keyArr) > 0) $SearchOffer->Statement .= ")";
    $SearchOffer->execute(); 
    ?>

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 313
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 313
    Billets dans le blog
    17
    Par défaut
    Il faut ajouter à ta requête SQL une clause ORDER BY :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ...
    FROM ...
    WHERE ...
    ORDER BY offres.ID DESC
    Je suppose que tu veux afficher tes offres de la plus récente à la plus vieille. Pour cela il faudrait mieux utiliser un champ DATETIME de création.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Par défaut
    Bonjour Séb,

    Justement à quel niveau mettre le ORDER BY. J'ai essayé de le mettre après le "LIKE ?" mais ca ne marche pas.
    Pourrais-tu préciser stp ? Merci.

  4. #4
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    C'est mieux de donner le code complet de la requête que vous avez essayée.

    En effet, vous dites l'avoir mis après LIKE ?.
    Est-ce donc LIKE ?) ORDER BY offres.ID DESC ou LIKE ? ORDER BY offres.ID DESC).

    Car dans votre exemple, le LIKE est directement suivit d'une parenthèse.
    Or si vous l'écrivez comme le 2e cas, c'est incorrect car la parenthèse est liée au WHERE et doit donc être fermée AVANT l'utilisation de ORDER BY.

    N'hésitez pas également à citer les erreurs que vous recevez lors de vos tests. Les boules de cristal de ne sont pas courantes malheureusement.
    Si ça se trouve, votre erreur se situe totalement ailleurs.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Par défaut
    Bonsoir darkstar123456,

    Le 2ieme cas ne marche pas effectivement. J'ai essayé le premier cas avec ORDER BY après la parenthèse et j'ai cherche le terme "Administration". Voici le message d'erreur que j'ai:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT offres.ID, offres.Internal_ID, offres.Title, offres.Location, offres.Country, offres.Validity, offres.Status, infos_firm.email, infos_firm.nom, infos_firm.photo, pays_world.flag, offres.secteur, offres.Logo_Firm FROM offres, infos_firm, pays_world WHERE infos_firm.email=offres.Email AND offres.Status = 'APPROVED' AND DATEDIFF(offres.Validity,CURDATE()) > 0 AND offres.Country = CONCAT(pays_world.fr,' - ',pays_world.en) AND ((CONCAT(offres.Internal_ID, ' ', infos_firm.nom, ' ', offres.Title, ' ', offres.`Description`, ' ', offres.secteur, ' ', offres.Location, ' ', offres.Country) LIKE ? ) ORDER BY offres.ID DESC )
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ORDER BY offres.ID DESC ) LIMIT 20' at line 1

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 169
    Par défaut
    Je pense que tu as une parenthèse de trop à la fin de la requête si j'ai bien vu.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Par défaut
    Bonjour Christophe,

    J'ai bien regarde mais je ne vois pas le paramètre de trop. Aurais-tu une idée ?
    Merci.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 169
    Par défaut
    ton ORDER BY ne doit pas être entre parenthèse, c'est pour ça que j'ai cru que la dernière parenthèse fermante était en trop.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 210
    Par défaut
    Salut, j'ai pu résoudre le problème en enlevant des parenthèse inutile après le AND au niveau de la ligne 5, avant le CONCAT et après le LIKE ? a la ligne 9 et enfin a la ligne 11.
    Voici le code. Merci à vous tous et passez un excellent weekend.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $SearchOffer = new WA_MySQLi_RS("SearchOffer",$conn_i,20);
    $SearchOffer->setQuery("SELECT offres.ID, offres.Internal_ID, offres.Title, offres.Location, offres.Country, offres.Validity, offres.Status, infos_firm.email, infos_firm.nom, infos_firm.photo, pays_world.flag, offres.secteur, offres.Logo_Firm FROM offres, infos_firm, pays_world WHERE infos_firm.email=offres.Email AND offres.Status = 'APPROVED' AND DATEDIFF(offres.Validity,CURDATE()) > 0 AND offres.Country = CONCAT(pays_world.fr,' - ',pays_world.en)");
    if (sizeof($keyArr) > 0) $SearchOffer->Statement .= " AND ";
    for ($x=0; $x<sizeof($keyArr); $x++) {
        if ($x>0) $SearchOffer->Statement .= " AND ";
        $SearchOffer->Statement .= "CONCAT(offres.Internal_ID, ' ', infos_firm.nom, ' ', offres.Title, ' ', offres.`Description`, ' ', offres.secteur, ' ', offres.Location, ' ', offres.Country) LIKE ? ORDER BY offres.ID DESC ";
        $SearchOffer->bindParam("c", "".($keyArr[$x])  ."", " "); //colname
    }
    if (sizeof($keyArr) > 0) $SearchOffer->Statement .= "";
    $SearchOffer->execute(); 
    ?>

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

Discussions similaires

  1. Ordonner résultat requête par Date
    Par lemzo84 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 05/11/2020, 13h48
  2. [X3-V6] Export résultat requête par workflow
    Par digitfree dans le forum SAGE
    Réponses: 3
    Dernier message: 29/11/2016, 11h49
  3. Résultat requête par défaut
    Par bronon dans le forum Requêtes
    Réponses: 6
    Dernier message: 14/10/2013, 21h09
  4. [SSIS] [2K8] Envoyer résultat requête par mail
    Par StitchP dans le forum SSIS
    Réponses: 1
    Dernier message: 14/05/2010, 16h51
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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