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 :

Recherche avec REGEXP [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut Recherche avec REGEXP
    Coucou tout le monde, j'ai un petit souci avec une recherche REGEXP.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql_id = connect() ;
    $query = "SELECT * FROM produit WHERE titre REGEXP \" $expression\"" ;
    $resultat = mysql_query($query) ;
    echo $resultat ;
    if ($resultat) {
    	echo "YES resultat<br />" ;
    	$n = mysql_num_rows($resultat) ;
    	echo $n ;
    }
    else echo "pas de resultat" ;
    mysql_close($sql_id) ;
    Le souci que je rencontre c'est que s'il me trouve un résultat (confirmé en regardant dans la base par moi-même) j'ai les affichages suivants et je ne peux pas utiliser les résultats par la suite :
    echo $resultat => Resource id #27
    YES resultat
    echo $n => 0

    La requête retourne bien un résultat, mais le nombre de lignes trouvées est à 0 et par la suite le résultat est inexploitable.

    Est-ce que quelqu'un aurait une idée ? Merci pour votre aide !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    utiliser mysql_fetch_* après mysql_query.

    http://fr.php.net/manual/fr/function...etch-assoc.php

  3. #3
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    Merci mais quand je le fais ça ne fonctionne pas (c'est pour ça que j'ai dit que le résultat n'était pas exploitable).

    C'est pour ça que j'ai enlevé ma boucle et que j'ai mis en place des tests. un mysql_fetch_* ne fonctionne que si le mysql_num_rows > 0 d'après ce que je sais.

    Mon souci c'est qu'il me sort un nombre de résultats égal à 0 même s'il y en a.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Ben je suis désolé, mais de vous à mysql, je pense que mysql à raison : il y a 0 lignes.

    En principe, on ne fait pas rien quand le résultat de mysql query ne marche pas, et on on appelle mysql_fetch* autant que possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $resultat = mysql_query($sql);
     
    if (!$resultat)
      die(mysql_error());
     
    while ($ligne = mysql_fetch_row($resultat))
    ...
    Et ça, ça marche. Tentez une sortie de la chaîne sql avant query, pour voir si c'est bien la même que celle que vous avez testée.

  5. #5
    Membre confirmé Avatar de dream_of_australia
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 167
    Par défaut
    Mais quand j'affiche $result il me marque un résultat : Resource id #27, et il rentre bien dans le test if($result) ! C'est ça que je ne comprends pas.

    Et la sortie de chaîne, je l'ai déjà testée, mais merci quand même pour l'idée. Là c'est un code simplifié au maximum, et après plein d'essais infructueux de ma part, parce que ma fonction avec une boucle sur un mysql_fetch_assoc ne fonctionnait pas.

    A mes yeux, c'est vraiment illogique que j'ai un résultat, qu'il rentre dans la boucle, puis ne trouve plus de résultat...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Par défaut
    Il y a toujours une ressource retournée par mysql_query quand la requête est correcte. Or une requête correcte peut ne retourner aucune ligne. C'est votre cas.

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

Discussions similaires

  1. REGEXP - Recherche avec ou sans Zéro, suivant une lettre
    Par roseline43 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/10/2009, 21h27
  2. Rechercher avec les RegExp > (padding- ou margin-)
    Par Zineb1987_UNI dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/10/2009, 22h33
  3. Recherche insensible aux accents avec REGEXP
    Par khasyt dans le forum Requêtes
    Réponses: 7
    Dernier message: 10/08/2009, 03h17
  4. Vérification de formulaire avec regexp
    Par Shadow aok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/08/2007, 11h57
  5. Enlever la surbrillance lors d'une recherche avec vi
    Par sekiryou dans le forum Applications et environnements graphiques
    Réponses: 8
    Dernier message: 04/03/2004, 13h55

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