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 sur deux tables [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut Recherche sur deux tables
    Bonjour !
    Comme beaucoup je débute en PHP mais en plus ! je ne suis pas programmeur ... et c'est très dur :p,
    je crie au secours au bénévoles cérébrés qui saurraient me sortir de cette impasse de pur débutant.

    voià apres 3 jours de recherche, (vivi) je ne trouve pas, ou ne comprend pas ..
    je dois faire une requete pour chercher des informations dans une DB mais sur 2 tables differentes d'apres le nom de l'objet receuilli par un formulaire.
    (l'objet recherché peut se situer sur 2 tables differentes dans la même DB)

    J'ai pour l'instant créé deux boutons, sur la 1ere page, chacuns renvoyant à une page de traitement dédiée à tel ou tel table .... mais je suis sur qu'il doit être possible de caser tout ca au propre sur la même page (avec votre aide .

    (si vous avez une solution, merci d'etre très explicite et simple car je cherche à comprendre (pas seulement à pomper et je maitrise tout juste les variables, quelques fonctions et la connection requete à mysql).

    merci d'avance

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    SI tu veux de l'aide mets ce dont tu as besoin de faire et on t'indiquera...Comme ca là sans plus d'info on pourra pas avancer

    Ps : une partie de ton code (si ce n'est pas tout) sera necessaire pour la réalisation

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Tes intentions sont bien louables, cher ami.
    Salut et bienvenue !

    Cela risque d'être un peu complexe de le faire en une seule requête, dans la mesure où nous ne savons pas de quelle table nous aurons le résultat (donc de quelle table nous devons sortir les champs). Ainsi, je pense que tu devras faire deux requêtes à la suite.

    Fais une requête sur la première table puis éventuellement la requête sur l'autre table. Je ne sais pas si tu as systématiquement besoin de faire les deux requêtes ou si tu ne dois trouver qu'une seule fois ton résultat, à toi de voir.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Par défaut
    ALors si j'ai bien compris le resultat est soit dans l'une soit dans l'autre des 2 tables mais pas dans les deux c'est ca?

    Mais tu veux faire quoi de ton resultat?

    Un truc bien a faire serait de tester d'abord si c'est dans la premiere table en regardant le nombre de ligne de resultat renvoyé.

    Si c'est egal a 0, tu teste sur la seconde table, sinon tu traites ton resutlat.
    Si c'est egal a 0 donc tu test si y aussi 0 ligne si 0 ligne resultat non trouvé sinon tu traite le resultat venant de la 2ieme table voila

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut
    Re bonjour

    -Ha ! désolé pour le code Kerod, mais vu que ca marchais pas je n 'ai pas sauver l'ancien code :/

    -j avais utilisé UNION pour selectionner les 2 tables , cela ne fonctionnais que SANS le script de recherche c'est a dire que je pouvais faire une recherche dans les 2 DB mais sans le formulaire de recherche j' insserai directement le Mot à rechercher ds le code ..

    - Zulot oui c'est ça les infos sont sur une des 2 tables
    - haaa oui j 'ai vue le test ligne dans mon livre php, je vais donc potasser et tester ton idée, je vous tiens au courant
    merciii beaucouuuup

    ha ben j'ai retrouver le bout de code en fait ...

    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
    <?php
    include("connection.inc.php");
     
    $query_weapon = ("SELECT weapon.name FROM weapon WHERE weapon.name like '%sword%' limit 50 
    UNION
    SELECT armor.name FROM armor WHERE armor.name like '%sword%' limit 50 ");
     
    $result =mysql_query($query_weapon);
    while ($row = mysql_fetch_array($result))
    	{
    	echo''.$row['name'].'<br />';
    }
     
    mysql_close($res);
    ?>
    et là ca fonctionne bien, ac le formulaire de recuperation de txt ça ne fonctionne pas :/

  6. #6
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Par défaut
    Comment tu récupères ton texte?

    En gros, dans ton formulaire tu dois avoir quelque chose qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form methode='post' action='script_de_recherche.php'>
    <input type='texte' name='nom_variable' value=''>
    <input type='submit' name='submit' value='Rechercher'>
    </form>
    A partir de là, dans ton script de recherche, tu récupères le texte à chercher de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte_a_achercher=$_POST['nom_variable'];
    Et là, çe devrait fonctionner en utilisant dans ta requête la variabe $texte_a_chercher.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 46
    Par défaut
    Salut Amahang,

    je te post ton code un peu modifié, ce n'est pas du code très propre car je code que depuis très peu de temps, mais il fonctionne, je pense que les experts d'ici se feront un plaisir de le "nettoyer".

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <html>
    <head>
    <title>Bienvenue</title>
    </head>
    <body>
    <!-- Formulaire de recherche -->
    <form action="union.php" method="get">Rechercher par Noms:<br/><br/>
    <input type="text" name="name"><br/><br/>
    <input type="submit" value="Rechercher">
    </form> 
    <!-- Formulaire de recherche -->
     
    <?php
    require_once("connection.inc.php");  //script de connection
    @$name = $_GET["name"];    //ligne qui récupère le texte que tu as recherché pour recolter les infos de la BDD
    $len=(strlen($name));      //Ligne de vérification de la longueur du mot de recherche dans le formulaire
    if (empty($name)) {        // Si le champ est vide ...
    echo '<b>Entre un texte de recherche</b>';      //... on renvoi ce texte
        exit();               // fermeture du script pour eviter d'afficher quelque chose à cause de la requête sql
        }	
    if (($len<3)) {           // Si le mot fait moins de 3 carateres ... 
    echo '<b>Entrez un mot de plus de 3 caracteres.</b>' ;  //... on renvoi ce texte
        exit();       // fermeture du script pour eviter d'afficher quelque chose à cause de la requête sql
        }
     
    // Requêtes SQL
    $query_weapon = ("SELECT name FROM weapon WHERE weapon.name like '%$name%' 
    UNION
    SELECT name FROM armor WHERE armor.name like '%$name%'
    ORDER by name ASC limit 50");
     
    $result =mysql_query($query_weapon);     // on récolte le résultat
    while ($row = mysql_fetch_array($result))  //... dans une boucle
       {
       $form .=''.$row['name'].'<br />';        // on affiche la colonne Name de la table
    }
    echo $form;   // on affiche le resultat
    mysql_close();
    ?>
    </body>
    </html>
    J'ai commenté un peu, ton problème venait surtout du fait que tu imposé deux fois une limite à la rechercher SQL:

    "Mauvais"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query_weapon = ("SELECT weapon.name FROM weapon WHERE weapon.name like '%sword%' limit 50
    UNION
    SELECT armor.name FROM armor WHERE armor.name like '%sword%' limit 50 ");
    "Bon"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $query_weapon = ("SELECT name FROM weapon WHERE weapon.name like '%$name%' 
    UNION
    SELECT name FROM armor WHERE armor.name like '%$name%'
    ORDER by name ASC limit 50");
    Ensuite dans le script de recherche, tu dois avoir des conditions de limitations sinon en ouvrant ta page la requête SQL t'affichera des resultats sans que tu ne lui demande.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @$name = $_GET["name"];    //ligne qui récupère le texte que tu as recherché pour recolter les infos de la BDD
    $len=(strlen($name));      //Ligne de vérification de la longueur du mot de recherche dans le formulaire
    if (empty($name)) {        // Si le champ est vide ...
    echo '<b>Entre un texte de recherche</b>';      //... on renvoi ce texte
        exit();               // fermeture du script pour eviter d'afficher quelque chose à cause de la requête sql
        }	
    if (($len<3)) {           // Si le mot fait moins de 3 carateres ... 
    echo '<b>Entrez un mot de plus de 3 caracteres.</b>' ;  //... on renvoi ce texte
        exit();       // fermeture du script pour eviter d'afficher quelque chose à cause de la requête sql
        }
    Et si toutes ces conditions sont respectées, le script te renvoi ton résultat de recherche... si résultat il trouve.

    Je suis débutant et il se peut qu'il y est des erreurs de commentaires ou autres... mais le script fonctionne, j'ai testé avec deux tables.

    J'espère t'avoir aidé.

    [edit: typo]

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Par défaut
    Merci héhé !! impec ça, ca tourne impec, j' ai pu qu'a éplucher, exellent les commentaires pour un hyper .... sous debutant comme moi

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

Discussions similaires

  1. [AC-2010] recherche sur deux tables
    Par mcaiki dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/08/2011, 15h24
  2. Jointure et Recherche sur deux tables
    Par fefe69 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/09/2009, 14h11
  3. Recherche sur deux tables simultanément
    Par neojick dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/11/2008, 11h55
  4. Recherche sur deux tables
    Par Kanagawa dans le forum Débuter
    Réponses: 6
    Dernier message: 03/11/2008, 19h35
  5. recherche multicritères sur deux tables
    Par amélie22 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 11h59

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