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 :

Deux requêtes en une ligne ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 16
    Par défaut Deux requêtes en une ligne ?
    Bonjour, je souhaite faire apparaître dans un tableau une ligne comprenant des infos de deux tables, produit et famille.
    Tout fonctionnait avec seulement les informations du produit, mais maintenant je veux faire apparaître leur famille à coté avec la colonne famille.nom mais je n'y arrive pas.
    Voici mon 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
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?php
    $localhost = "localhost";
    $username = "root";
    $password = "";
    $dbname = "bon_commande";
    $con = new mysqli($localhost, $username, $password, $dbname);
     
     
    if( $con->connect_error){
        die('Error: ' . $con->connect_error);
    }
     
     
    $sql = "SELECT * FROM produit";
    $sql2 ="SELECT nom FROM famille";
    $recherche ="";
     
    if( isset($_GET['recherche']) ){
        $recherche = mysqli_real_escape_string($con, htmlspecialchars($_GET['recherche']));
        $sql = "SELECT * FROM produit WHERE nomProduit LIKE '%$recherche%'";
        $sql2 ="SELECT nom FROM famille INNER JOIN produit ON famille.id_famille=produit.id_famille;";
    }
     
    $result = $con->query($sql);
    $result2 = $con->query($sql2);
     
    ?>
     
     
    <html>
    <head>
    <title>Recherche de produits</title>
    <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    <body>
        <header>
            <img src="./images/batimans.jpg" alt="" height="80px"/>
        </header>
        <div class="container">
            </br>
            <form method="GET">
                <input type="text" placeholder="que cherchez vous ?" name="recherche">&nbsp;
                <input type="submit" value="Recherche" name="btn" class="btn btn-sm btn-primary">
                <a href="index.php"><button class="btn btn-outline-success" type="button">Retour</button></a>
     
     
     
                <!-- à faire : liste déroulante pour sélection de famille de produits -->
     
     
            </form>
            <h2>Produits proposés</h2>
            <table class="table table-striped table-responsive">
                <tr>
                    <th>ID</th>
                    <th>nom</th>
                    <th>Famille</th>
                    <th>Prix</th>
                </tr>
                <?php
                    while($row = $result->fetch_assoc()){
                        ?>
                            <tr>
                                <td><?php echo $row['id_produit']; ?></td>
                                <td><?php echo $row['nomProduit']; ?></td>                          
                                <td><?php echo $row['prixProduit']; ?>€</td>
                                <td><input type="button" value="Ajouter" name="btn" class="btn btn-sm btn-primary"></td>
                        <?php
                    }
     
                    while($row = $result2->fetch_assoc()){
                        ?>
                                <td><?php echo $row['nom']; ?></td>
                        <?php
                    }
                    ?>           
                            </tr>
     
            </table>
            <?php
            include 'commande.php';
            ?>
        </div>
    </body>
    </html>
    Comme vous pouvez le voir j'ai essayé de créer $sql2 mais je ne sais pas si j'ai besoin d'un deuxième while ou si je peux incorporer famille.nom dans le premier.
    En tout cas pour l'instant c'est sans succès.
    Merci de votre aide.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Bonjour,

    Il faut utiliser Les jointures afin d'avoir une seule requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql="SELECT id_produit,nomProduit,prixProduit,nom FROM produit
    inner join famille on  famille.id_famille=produit.id_famille 
    WHERE nomProduit LIKE '%$recherche%' ;";
    Teste la requête dans phpmyadmin d'abord, en remplaçant $recherche par n'importe quelle valeur et si elle fonctionne, tu l'ajoutes dans php.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 16
    Par défaut
    C'est parfait c'est ce que je cherchais ! Merci à toi.
    En revanche mes lignes s'affiche en triple maintenant, j'ai déjà été face à ce problème mais je ne sais plus comment le résoudre...
    Lorsque je lance une recherche les lignes ne s'affichent plus en triple.

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    La requête de recherche est par jointure, il faut la mettre aussi dans la première requête (quand $_GET['recherche']) n'existe pas).

    as-tu modifier la requête sans le critère de recherche ?

    Sinon il existe distinct ou group by.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 16
    Par défaut
    Ah bah c'est sur que ça marche mieux quand je mets les critères dans la requête de base...
    Merci beaucoup Toufik !

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 496
    Par défaut
    Au plaisir, merci à toi aussi.

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

Discussions similaires

  1. Deux requêtes en une
    Par dam28800 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/01/2009, 11h56
  2. Afficher le résultat d'une requête sur une ligne
    Par cmako dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 12/08/2008, 14h37
  3. Somme de deux requête en une en sql/access
    Par thepunky89 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/09/2007, 14h31
  4. relier deux reseaux par une ligne telephonique?
    Par maamar1979 dans le forum Hardware
    Réponses: 2
    Dernier message: 13/09/2006, 13h41
  5. [Débutant] Aligner deux divs sur une ligne avec inline
    Par Braz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/03/2006, 10h52

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