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 :

ORDER BY OK en console, KO avec php


Sujet :

PHP & Base de données

  1. #1
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut ORDER BY OK en console, KO avec php
    J'avais un souci de MATCH AGAINST en fulltext que j'ai réussi à solutionner mais du coup il me reste un petit souci de ORDER sur ma requête:

    C'est une requête concaténée dynmaiquement en fonction d'un array de mots, je vous en montre un exemple de génération
    voici le type de requête
    Code sql : 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
     SELECT * FROM (SELECT id_art AS idprod,
    	art.des1_art AS desi,
    	art.desc_art AS descr,
    	art.util_art AS util,
    	cap.caption_rub AS mainrub,
    	rub.caption_rub AS subrub,
    	(des1_art LIKE  "%ris p%")  *10000 +
    	MATCH ( des1_art ) AGAINST ( "ris +p" ) *1000 +
    	MATCH ( keywords_art ) AGAINST ( "ris" ) *100 +
    	MATCH ( desc_art ) AGAINST ( "ris" ) *10 +
    	MATCH ( util_art ) AGAINST ( "ris"  ) AS Rank
    FROM articles AS art
    	LEFT OUTER JOIN rubriques AS rub ON art.rub_art = rub.id_rub
    	LEFT OUTER JOIN rubriques AS cap ON cap.id_rub = rub.principal_rub
    WHERE 
            MATCH ( des1_art, desc_art, util_art, keywords_art ) AGAINST ( "ris" IN BOOLEAN MODE )
    		    OR  art.des1_art LIKE "%ris%" 
    	) T 
    ORDER BY 
            Rank DESC 
    LIMIT 50

    Je couvre le WHERE avec un like pour étendre à la chaine complète et je rajoute aussi un like * 10000 au Rank.
    En console Mysql ça marche parfaitement
    Le souci maintenant c'est que sur le site au travers de php il ne tient pas comte de l'ORDER by Rank

    j'ai 4 enregistrements dans mon résultat de requête.

    En console mes enregistrements sont bien ordonnés
    10000
    0
    0
    0

    Mais, lorsque je boucle dessus avec php pour afficher le Rank j'obtiens
    0
    10000
    0
    0


    Je ne m'explique absolument pas ce comportement
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tiens, une grenouille

    Avec quoi exécutes-tu ta requête ? PDO ?
    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]

  3. #3
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    Hello,
    ca ne serait pas un problème de référence ? t'as essayé pour lui spécifier où il trouve ses billes ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Quel est l'intérêt de faire SELECT * FROM (/* une sous-requête */) ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/11/2004, 10h12
  2. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03
  3. [débutant] choix de postgre avec php / migration
    Par bilbon.S dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 23/03/2004, 14h05
  4. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 13h10

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