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

Requêtes MySQL Discussion :

Quelle syntaxe par une requête SELECT avec expression régulière ?


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut Quelle syntaxe par une requête SELECT avec expression régulière ?
    j'ai ceci

    $texte = "un|deux|trois";

    comment ecrire le $texte dans le mysql_query ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP '.$texte.' ORDER BY RAND() LIMIT 1");
     
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP $texte ORDER BY RAND() LIMIT 1");
     
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP '$texte' ORDER BY RAND() LIMIT 1");
     
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP ".$texte." ORDER BY RAND() LIMIT 1");
     
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP .$texte. ORDER BY RAND() LIMIT 1");
    ou autre ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    n°3
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    heu je suis pas certain de ta réponse mais merci quand même

    j'ai parcourus les 25 pages mais rien sur le REGEX est le (mot1|mot2) depuis une variable $var

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    pour l'instant le plus logique est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP ( .$texte. ) ORDER BY RAND() LIMIT 1");
    mais ça ne marche pas


  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par rezareza Voir le message
    heu je suis pas certain de ta réponse mais merci quand même

    j'ai parcourus les 25 pages mais rien sur le REGEX est le (mot1|mot2) depuis une variable $var
    Désolé, j'étais pris par le temps, et je t'ai juste répondu "n° 3", ce qui voulais dire dans mon esprit pressé "c'est ta troisième syntaxe qui est la bonne".

    Quant aux "25 pages" dont tu parles, je suppose qu'il s'agit de l'article qui figure dans ma signature... Si la lecture en est passionnante, je crains qu'il ne parle ni de PHP ni des REGEX...
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Citation Envoyé par rezareza Voir le message
    pour l'instant le plus logique est...
    Pas du tout. La requête SQL que tu veux obtenir est :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT texte 
    FROM commentbot 
    WHERE texte REGEXP 'un|deux|trois' 
    ORDER BY RAND() 
    LIMIT 1

    Comment le faire en PHP ? Soit tu utilises l'interprétation des chaînes, autrement dit tu mets ta variable $texte à l'intérieur d'une chaîne entre guillemets, et la variable sera remplacée par sa valeur :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP '$texte' ORDER BY RAND() LIMIT 1");

    Autre possibilité, tu n'utilises pas l'interprétation mais une concaténation, avec l'opérateur . :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = mysql_query("SELECT texte FROM commentbot WHERE texte REGEXP '" . $texte . "' ORDER BY RAND() LIMIT 1");

    A l'inverse, ce que tu trouves logique donnerait la requête suivante, avec deux erreurs de syntaxe (les parenthèses et les points à la place des apostrophes) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT texte FROM commentbot WHERE texte REGEXP ( .un|deux|trois. ) ORDER BY RAND() LIMIT 1
    Antoun
    Expert Tableau, Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 39
    Points : 31
    Points
    31
    Par défaut
    hey au fait
    moi aussi je passe en retard pour dire merci
    donc
    merci beaucoup les amis

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

Discussions similaires

  1. [PDO] comptage des lignes retournées par une requête SELECT un peu complexe
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/02/2015, 21h37
  2. [PDO] compter les lignes retournées par une requête SELECT
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/01/2015, 14h40
  3. Réponses: 4
    Dernier message: 23/08/2013, 15h38
  4. ralentissement d'une requête SELECT avec des triggers en base
    Par nighthammer dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 31/05/2011, 14h39
  5. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 19h38

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