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 :

Moteur de recherche


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut Moteur de recherche
    Bonsoir, je viens vous voir avec une énigme qui j'espère trouvera une solution avec vous.
    Voilà j'essaye de rajouter une code sur un script déjà écrit.
    j'aimerai rajouter à la recherche existante une recherche par prix mini et prix maxi.
    Voila un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	if ($text_search <> "") {
    		$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
    	}
    	else
    		//MODIFICATION
    	if (isset($_GET['Prixmini']) && isset($_GET['Prixmaxi'])) { 
    		$search .= " AND a.ad_price > " . $_GET['Prixmini'] . " AND a.ad_price < " . $_GET['Prixmaxi'] ." AND a.published = 1";
    	}
    	else
    	{
    		$search .= " AND a.published = 1";
    	}
    		//FIN MODIFICATION
    La recherche seulement par prix ça fonctionne
    La recherche par prix plus les autres critères ça fonctionne
    MAIS
    Si je fais la recherche avec les autres critères sans les prix mini et maxi ça ne fonctionne plus.

    Merci pour toutes les pistes

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Bonjour,

    C'est parce que tu fais un if .... else if ....

    Si la première condition est remplie au premier if() , le script ne passe pas au suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if ($text_search <> "") {
    $search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') ";
    }
     
    //MODIFICATION
    if (isset($_GET['Prixmini']) && isset($_GET['Prixmaxi'])) { 
    $search .= " AND a.ad_price > '" . $_GET['Prixmini'] . "'  AND a.ad_price < '" . $_GET['Prixmaxi'] ."' ";
    }
     
     
    $search .= " AND a.published = 1";
    Ainsi, si le premier if() est ok, le script entre dedans,
    pareil pour le second,
    et au final tu rajoutes ton dernier AND . (il faut l'enlever dans les 2 requetes précédentes)

    Au passage, tu rajoutes les quotes ' pour $_GET['Prixmini'] et $_GET['Prixmaxi'] ça t'éviteras des erreurs si ce sont des décimaux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Merci pour ton aide je viens de testé le code que tu as envoyé ça fonctionne pas malheureusement et maintenant la recherche par prix ne fonctionne plus tu as une idée...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Excuse si si ça trouve ......Mais le problème est toujours le même

  5. #5
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    C'est peut être parceque si toutes les conditions sont remplies, il faudrait qu'il trouve un résultat ET sur le texte Et sur le prix mini ET sur le prix maxi ET qu'il soit publié ...

    ça fait peut être beaucoup de AND...

    Sinon, il faudrait montrer ta requête depuis le début .

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Fichier presque complet du faite du poids.. mais je pense avoir retiré des trucs qui ne concernent pas mon soucis
    Fichiers attachés Fichiers attachés

  7. #7
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Pffouuu !

    Sympa, merci

    Bon, c'est pas très facile à débugger.

    A la ligne 347 de ce que tu as envoyé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
           "LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search ";
    tu peux faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $query;
    exit;
    pour voir ce que tu envoies à la BDD ?

    $search commencerait pas par AND .... dans ce cas là ???

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Oui je comprends et je te remercie encore de te pencher sur mon sujet

    En remplaçant ce que tu m'as demandé ça donne
    Petites Annonces Vente Maison et Propriété Maison de prestige
    Donc le prix n'est pas inclus.....

  9. #9
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Tu peux faire un echo des $GET pour voir si tu as ce que tu attends ..ça vient peut être de là .

    (Bon, faut j'y aille... a+)

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Comment ça ?
    c'est tu pense sur ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
           "LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search ";
    que ce situe le problème ?

  11. #11
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Juste avant $query (ligne 347) écris ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo "<p>texte : " . $_GET['text_search'] . "</p>"
        . "<p>Prixmini : " . $_GET['Prixmini'] . "</p>"
        . "<p>Primaxi : " . $_GET['Prixmaxi'] . "</p>";
     
    exit;
    Tu remplis ton formulaire, tu le soumets et tu devrais voir ce que tu envoies par le formulaire.
    Peut-être $_GET['quelquechose'] est vide ...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Salut alors j'ai écris ça
    Code : 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
    25
    26
     
    	if ($text_search <> "") {
    		$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
    	}
    	else
    		//MODIFICATION Pascal
    	if (isset($_GET['Prixmini']) && isset($_GET['Prixmaxi'])) { 
    		$search .= " AND a.ad_price > " . $_GET['Prixmini'] . " AND a.ad_price < " . $_GET['Prixmaxi'] ." AND a.published = 1";
    	}
    	else
    	{
    		$search .= " AND a.published = 1";
    	}
    		//FIN MODIFICATION Pascal
     
    	$url .= $url_param;
    	echo "<p>texte : " . $_GET['text_search'] . "</p>"
        . "<p>Prixmini : " . $_GET['Prixmini'] . "</p>"
        . "<p>Primaxi : " . $_GET['Primaxi'] . "</p>";
     
    exit;
     
    	$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
    						 "LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search ";
    	$database->setQuery($query);	
    	$total = count($database->loadObjectList());
    Résultat de l'affichage
    Petites Annonces Vente Maison et Propriété Maison de prestige

    texte :

    Prixmini :

    Primaxi :
    en faisant copier coller j'ai des arrow comme ça
    Petites Annonces arrow Vente arrow Maison et Propriété arrow Maison de prestige
    Peut être un indice ?

    Si je mets des prix dans mini et maxi et que je fais la recherche
    le prix mini s'affiche mais pas le prix maxi

  13. #13
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    C'est pas plutôt :

    $_GET['Prixmaxi']

    C'est moi qui me suis trompé....

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    Ah oui exact moi j'avale toutes tes infos à la lettre...

  15. #15
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Dans ton message de 9h22, je vois que tu utilises encore if ... else if ...

    Si quelqu'un entre un texte dans le champ $text_search ET un $Prixmini ET un $Prixmaxi

    Le $Prixmini et $Prixmaxi ne seront pas pris en compte car le premier if remplit la condition.
    Le script ne passe donc pas dans le else if suivant et ne traite pas $Prixmini et $Prixmaxi

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    oui ct un mauvais copier coller
    J'ai fais avec tes modifications là je suis comme ça :
    Code : 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
    25
     
    if ($text_search <> "") {
    $search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') ";
    }
     
    //MODIFICATION
    if (isset($_GET['Prixmini']) && isset($_GET['Prixmaxi'])) { 
    $search .= " AND a.ad_price > '" . $_GET['Prixmini'] . "'  AND a.ad_price < '" . $_GET['Prixmaxi'] ."' ";
    }
     
     
    $search .= " AND a.published = 1";
     
     
    	$url .= $url_param;
    	echo "<p>texte : " . $_GET['text_search'] . "</p>"
        . "<p>Prixmini : " . $_GET['Prixmini'] . "</p>"
        . "<p>Prixmaxi : " . $_GET['Prixmaxi'] . "</p>";
     
    exit;
     
    	$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
    						 "LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search ";
    	$database->setQuery($query);	
    	$total = count($database->loadObjectList());

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 69
    Par défaut
    j'ai eu cette info mais ça marche pas j'ai une erreur

    Parse error: syntax error, unexpected T_VARIABLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if ($text_search <> "" ) {
    $search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') ";
    }
     
    //MODIFICATION
    if (isset($_GET['Prixmini']) && isset($_GET['Prixmaxi'])) {  
    $search .= " AND a .ad_price between ." $_GET['Prixmini']." and ".$_GET['Prixmaxi'];
    }
     
     $search .= " AND a.published = 1";

  18. #18
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $search .= " AND (a.ad_price BETWEEN '" . $_GET['Prixmini']. "' AND '" . $_GET['Prixmaxi'] . "')";

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 33
    Par défaut
    Tu pourrais noter please l'intro fixe de ta requête...
    on voit que les critères qui sont concaténés...

    A moins que...

  20. #20
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    Citation Envoyé par Chouller Voir le message
    Tu pourrais noter please l'intro fixe de ta requête...
    on voit que les critères qui sont concaténés...

    A moins que...
    Elle est en pièce jointe dans un message plus haut

Discussions similaires

  1. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  2. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 15h07
  3. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41

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