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 :

[PHP4] Recherche sur deux mots [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut [PHP4] Recherche sur deux mots
    Bonjour,
    J'ai cette petite requête pour faire une recherche qui fonctionne lorsque je recherche un seul mot mais pas si j'en rentre deux.
    Est-ce que quelqu'un peut m'aider ? Cela vient-il de la gestion du mot trop court ?
    Merci

    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
     
    //MOT_COURT = gérer mot trop court
    define("MOT_COURT", 1);
    $keys = explode(" ", $search);
    $andOr = "and"; // ou "or" selon un test, une préférence....
    $sql_val = "select * from produits where ";
    $max = count($keys) - 1;
     
    $and = false;
     
    for ($i = 0; $i < $max; $i++) 
    {
    	if (strlen($keys[$i]) > MOT_COURT) 
    	{
    		$and = true;
    		$sql_val .= "(Nom2 like  \"$keys[$i]%\") $andOr ";
    		//$sql_val .= "$andOr"; 
    	}
    }
    if (strlen($keys[$i]) > MOT_COURT) 
    {
    	$and = true;
    	$sql_val .= "(Nom2 like \"$keys[$i]%\")";
    }

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca ne marche pas car tu n'a mis qu'un % après le mot.

    Mais ta méthode est mal écrite et pas sécurisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    define("MOT_COURT", 1);
     
    $words = explode(" ", $search);
    foreach ($words as $word) {
        if (strlen($word) > MOT_COURT) {
            $param[] = "%$word%";
        }
    }
     
    $andor = "and"; // ou "or" selon un test, une préférence....
     
    $sql = "select * from produits where " . implode(" $andor ", array_fill(0, count($param), 'Nom2 LIKE ?'));
    $sth = $pdo->prepare($sql);
    $sth->execute($param);

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup mais est-ce que tu peux m'expliquer ton code, je ne peux pas l'adapter, je n'ai pas encore la possibilité d'utiliser PDO.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu utilises quoi ?

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    php 4 pour l'instant

  6. #6
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    PHP 4 !!!!
    ~ Celira fait une attaque ~

    Tu as une vraie bonne raison d'utiliser PHP 4 ? Parce que bon, PHP 4 n'est plus supporté depuis août 2008, soit près de 10 ans. C'est comme si tu m'annonçais que tu utilisais un PC sous Windows 98.
    La version actuelle de PHP est la 7.2, avec un support de sécurité sur 5.6.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Projet en intranet hébergé sur une machine assez ancienne mais qui va évoluer.

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pff... Je te conseille instamment de faire tout ce que tu peux pour motiver la migration du serveur. Explique que tout ce que tu codes est sujet à des failles de sécurité et à des bugs à cause de la vétusté du matériel et de la technologie, et que plus vite la migration est faite, moins tu auras de code à adapter/réécrire après la migration. Essaye au moment d'obtenir une date (de préférence par écrit) et une version cible, parce qu'une fois qu'une date est fixée, c'est toujours plus facile de relancer si elle n'est pas respectée et une version cible te permettra éventuellement d'évaluer les dégâts.

    Dans l'intervalle, je suppose que tu utilises l'API mysql (les fonctions mysql_xxxxx) pour interroger la base. Dans ce cas, il faut utiliser mysql_real_escape_string pour échapper les chaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    define("MOT_COURT", 1);
     
    $words = explode(" ", $search);
    $search_params = array();
    foreach ($words as $word) {
        if (strlen($word) > MOT_COURT) {
            // pour chaque mot, on construit la chaine de recherche
            $search_params[] = " Nom2 LIKE '%".mysql_real_escape_string($word)".%' ";
        }
    }
     
    $andor = "and"; // ou "or" selon un test, une préférence....
     
    $sql = "select * from produits where " . implode(" $andor ", $search_params);
    Pour info, l'API mysql est obsolète à partir de PHP 5.5 et supprimée en PHP 7.

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par Celira Voir le message
    Je te conseille instamment de faire tout ce que tu peux pour motiver la migration du serveur. Explique que tout ce que tu codes est sujet à des failles de sécurité et à des bugs à cause de la vétusté du matériel et de la technologie, et que plus vite la migration est faite, moins tu auras de code à adapter/réécrire après la migration. Essaye au moment d'obtenir une date (de préférence par écrit) et une version cible, parce qu'une fois qu'une date est fixée, c'est toujours plus facile de relancer si elle n'est pas respectée et une version cible te permettra éventuellement d'évaluer les dégâts.
    Peine perdu . J'imagine déjà la réponse du genre: "Oui, on va voir ça mais fait d'abord ces modifs, c'est urgent", un an après le mec est toujours là pour l'évolution de l'appli


  10. #10
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2017
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci en attendant

  11. #11
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bon courage ! N'hésites pas à préciser que tu travailles en PHP4 tout de suite si tu poses d'autres questions.

    Citation Envoyé par andry.aime Voir le message
    J'imagine déjà la réponse du genre: "Oui, on va voir ça mais fait d'abord ces modifs, c'est urgent",
    Et un jour, le serveur fait crunch, on demande à un admin d'installer un nouveau serveur, l'admin installe la dernière version de PHP disponible et là ya c'est le drame.

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

Discussions similaires

  1. [MySQL] Recherche sur plusieurs mots clés
    Par loupsolitaire dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/10/2008, 17h48
  2. Recherche sur des mots accentués avec collation en utf8
    Par pgilbert dans le forum Installation
    Réponses: 12
    Dernier message: 15/01/2008, 18h38
  3. Recherche sur plusieurs mots-clés
    Par Freedolphin dans le forum Installation
    Réponses: 3
    Dernier message: 10/12/2007, 02h11
  4. recherche sur un mot ou partie d un mot
    Par fsautejeau dans le forum Access
    Réponses: 6
    Dernier message: 29/08/2006, 17h25
  5. [MySQL] Recherche sur deux tables
    Par Amahang dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 27/03/2006, 19h46

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