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 :

Résultat pour moteur de recherche


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut Résultat pour moteur de recherche
    Bonjour,

    J'ai un problème de résultat de requêtes pour un moteur de recherche, j'explique mon problème.

    j'ai un formulaire de recherche avec des champs, des menus déroulants et des checkbox. de ce coté la tout va bien...

    mon problème sont les checkbox, ce sont des conditionnel de type de recherche.

    checkbox 1 = chien
    checkbox 2 = chat
    checkbox 3 = oiseaux
    checkbox 4 = cochon d'inde


    dans la base j'ai des users qui possèdent soit un chien soit un chat soit les deux... etc

    Suivant les checkbox cochés je désire afficher évidemment les résultats. mon problème est que si la personne coche la checkbox 1 et 2 par exemple, le résultat retournera uniquement ceux qui ont un chien et un chat, et je voudrais la liste de ceux qui ont soit un chat soit un chien ou les deux et ainsi de suite pour les checkbox. ci joint un extrait de ma page de résultat

    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
    27
    28
    $countryLive=$_POST['countryLive'];
    $pseudo2=ucfirst(strtolower($_POST['pseudo']));
     
    $searchingFor01=$_POST['searchingFor01'];
    $searchingFor02=$_POST['searchingFor02'];
    $searchingFor03=$_POST['searchingFor03'];
    $searchingFor04=$_POST['searchingFor04'];
     
    $photo=$_POST['photo'];
    $date_connex=$_POST['date_connex'];
     
    $select = "SELECT coordonnes.pays,users_profils.searchingFor01,users_profils.searchingFor02,users_profils.searchingFor03,users_profils.searchingFor04,users.pseudo,users.date_last_visite FROM coordonnes 
    INNER JOIN users_profils 
    ON coordonnes.refID=users_profils.id_users 
    INNER JOIN users 
    ON coordonnes.refID=users.userID 
    WHERE 
    coordonnes.pays LIKE '%$countryLive%' 
    AND users.pseudo LIKE '$pseudo2%' 
    AND 
    (users_profils.searchingFor01 LIKE '%$searchingFor01%' OR
    users_profils.searchingFor02 LIKE '%$searchingFor02%' OR
    users_profils.searchingFor03 LIKE '%$searchingFor03%' OR 
    users_profils.searchingFor04 LIKE '%$searchingFor04%') 
    AND users.date_last_visite >= '$rech_connexion' ";
     
    $result = mysql_query($select)or die(mysql_error());
    $res01= mysql_numrows($result);
    J’espère avoir été clair dans mes explications j'ai tout essayé avec OR ou AND et je tombe toujours sur un résultat faux.

    Merci de votre aide...

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Et pourquoi tu mets des "LIKE" partout ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    bonjour,

    c'est vrai que cela ne sert a rien sur ces champs, j'ai essayé avec ou sans LIKE, le résultat est identique.

    Pour les autres LIKE cela me permet d'avoir des resultats si les champs ne sont pas renseigné.

    pourquoi tu as une piste a me proposer?

  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
    La structure de ta base de données me fait peur.
    Comment sont alimentées les valeurs des colonnes users_profils.searchingForxx ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    bonjour,

    les données sont numérique int(3), j'ai alimenté les colonnes de la table users_profils par searchingFor01 = 709, searchingFor02 = 710 etc... quand la colonne est vide il y a un 0.

  6. #6
    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
    Donc "chien" sera toujours en colonne searchingFor01 ?
    Et si tu veux avoir un choix "canari" tu vas ajouter une colonne searchingFor05 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    oui exactement, comme se sont des types concernant l'activité cela ne changera jamais. enfin... en principe, j'avais l'option de mettre un bouton radio ou un menu déroulant pour faire la recherche, mais cela oblige a refaire une recherche différente a chaque fois.

  8. #8
    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
    Fait un echo de ta requête pour voir à quoi elle ressemble.

    Au passage on ne met pas directement dans une requête les données venant d'un utilisateur mais on verra ça après.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    l'echo marche correctement il affiche 709 ou 709, 710 bref il passe les bonnes requêtes, c'est au niveau du traitement des résultats que je fais quelque chose qui ne va pas. l'interrogation de la base ne doit pas être correcte. je sens que c'est la que je fais une connerie.

  10. #10
    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
    Si tu executes la requête affichée dans phpmyadmin elle sort les bons résultats ou non ?
    Si non, c'est que le problème est bien dans ta requête.
    D'ailleurs montre nous la requête affichée.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Je n'avais jamais utilisé phpmyadmin pour construire une requête, j’espère que c'est ce que tu veux voir, je vais essayer cela...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT * FROM `coordonnes.refID`, `users`, `users_profils`, `coordonnes`
    WHERE ((`users_profils`.`id_users` =users.userID) OR (`coordonnes`.`refID` =users.userID))
    AND (`coordonnes`.`refID` pays LIKE '%$countryLive%' ))
    AND (`users`.`userID` pseudo LIKE '$pseudo2%' )
    AND (`users`.`userID` date_last_visite >= '$rech_connexion')
    AND   (`users_profils`.`id_users` searchingFor01='$searchingFor01')
    OR   (`users_profils`.`id_users` searchingFor02='$searchingFor02')
    OR   (`users_profils`.`id_users` searchingFor03='$searchingFor03')
    OR   (`users_profils`.`id_users` searchingFor04='$searchingFor04')
    Bon c'est pire que tout, rien ne marche... c’était mieux avant

  12. #12
    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
    Heu non tu fais l'echo de ta requête dans ton code PHP et tu executes cette requête dans PHMyadmin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0007 secondes.), je ne comprend pas grand chose. même pour des requêtes simple qui fonctionnent, soit phpmyadmin signale une erreur ou alors je le fait mal

  14. #14
    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 peux nous montrer la requête ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    C'est plus la peine, je te remercie vraiment beaucoup pour l'effort que tu as fait en m'accordant du temps, mais je suis passé par une autre solution et enfin cela fonctionne.
    cela me prenais trop la tête... j'ai mis des boutons radio et tout marche bien car de toutes les façons dans la fiche du user si tu fais ta recherche sur "chiens" il indique également si il a un chat ou des oiseaux.
    je me suis vraiment prix la tête pour rien et je m'en excuse auprès de vous aussi.

    merci encore pour tout sabotage!

    je clos la discussion

  16. #16
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Au passage, quand sabotage te demandais l'affichage de ta requête c'est pour vérifier qu'elle est bien construite avec les valeurs attendues et que la chaine n'est pas rompue. C'est une des premières choses que l'on fait pour débugguer une requête. On te demandait donc juste de voir ce qu'affiche echo $select;.

    Pour éviter ces problèmes de rupture de chaine et pour protéger d'un piratage (injection sql) on utilise mysql_real_escape_string pour protéger les variables entrées par les visiteurs. Même si tu as réussi à contourner ton problème autrement, n'oublies pas d'utiliser cette fonction pour TOUTES TES REQUETES.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    OK, donc juste pour info en faisant un echo sur ma requête voila ce que j’obtenais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM coordonnes INNER JOIN users_profils ON coordonnes.refID=users_profils.id_users INNER JOIN users ON coordonnes.refID=users.userID WHERE ((`users_profils`.`id_users` =users.userID) OR (`coordonnes`.`refID` =users.userID)) AND ((`users`.`userID` active='1') AND (`coordonnes`.`refID` pays LIKE '%%' )) AND (`users`.`userID` pseudo LIKE '%' ) AND (`users`.`userID` date_last_visite >= '') AND (`users_profils`.`id_users` searchingFor01='709') OR (`users_profils`.`id_users` searchingFor02='710') OR (`users_profils`.`id_users` searchingFor03='711') OR (`users_profils`.`id_users` searchingFor04='712')

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et alors tu ne vois pas comme un problème dans cette partie ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND (`coordonnes`.`refID` pays LIKE '%%' )) AND (`users`.`userID` pseudo LIKE '%' ) AND (`users`.`userID` date_last_visite >= '')

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    pas du tout! car je n'ai pas renseigné ces champs donc c'est normal et c'est voulu. je ne veux pas les rendre obligatoire.

  20. #20
    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
    Les parenthèses ne sont pas les mêmes que dans la requête que tu nous montrais au début.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Structure table pour moteur de recherche
    Par sunshine33 dans le forum Requêtes
    Réponses: 0
    Dernier message: 04/02/2008, 14h32
  2. Dictionnaire sémantique pour moteur de recherche?
    Par Glavio dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 20/07/2007, 11h36
  3. Probleme vba pour moteur de recherche ACCESS
    Par sylvaindenisbe dans le forum Modélisation
    Réponses: 1
    Dernier message: 10/05/2007, 14h30
  4. Algorithme d'indexation pour moteur de recherche
    Par caspertn dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 24/04/2006, 16h57
  5. Problème requete pour moteur de recherche
    Par vincedjs dans le forum Requêtes
    Réponses: 48
    Dernier message: 15/03/2006, 14h47

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