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 :

insert into avec deux select [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut insert into avec deux select
    Bonjour tout le monde,

    j'essaye d'ajouter un nv produit lié à une catégorie et à une marque, mais j'ai une erreur qui vesent ses deux select,
    de l'aide svp
    voilà 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
     
    function sqlAjouterProduit($conn, $nom_produit,$description_produit,$prix_produit,$id_categorie_produit,$id_marque) {
     
        $req = "
     
    	INSERT INTO produits SET id_produit, nom_produit, description_produit, prix_produit, id_categorie_produit, id_marque 
    	";
     
       if (mysqli_query($conn, $req)) {
            return mysqli_affected_rows($conn);
        } else {
            errSQL($conn);
            exit;
        }
    }
    le code du formulaire:

    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
     
    $listeCategories=sqlLireCategorie($conn);
    $listeMarques = sqlListeMarques($conn);
     
    $tri_critere = isset($_POST['trier']) ? trim($_POST['tri_critere']) : "";
     
    $nom_produit = trim($_POST['nom_produit']);
    $description_produit = trim($_POST['description_produit']);
    $prix_produit = trim($_POST['prix_produit']);
    $id_categorie_produit = $_POST['id_categorie_produit'];
    $id_marque = $_POST['id_marque'];
     
    <form action="ajouterProduits.php" method="post">
                <label>Nom du produit</label>
                <input type="text"   name="nom_produit" value="<?php echo isset($nom_produit) ? $nom_produit : "" ?>" required>
                <span><?php echo isset($erreurs['nom_produit']) ? $erreurs['nom_produit'] : "&nbsp;"  ?></span>
     
                <label>Description</label>
                <input type="text"   name="description_produit" value="<?php echo isset($description_produit) ? $description_produit : "" ?>" required>
                <span><?php echo isset($erreurs['description_produit']) ? $erreurs['description_produit'] : "&nbsp;"  ?></span>
     
                <label>Prix</label>
                <input type="text"   name="prix_produit" value="<?php echo isset($prix_produit) ? $prix_produit : "" ?>" required>
                <span><?php echo isset($erreurs['prix_produit']) ? $erreurs['prix_produit'] : "&nbsp;"  ?></span>
     
                <select name="tri_critere"> 
    			 <?php foreach ($listeCategories as $row) : ?>
    			 <option value="<?php echo $row['id_categorie_produit']; ?>"><?php echo $row['nom_categorie_produit']; ?></option> 
    			 <?php endforeach; ?>
    			</select>
     
     
    			 <select name="tri_critere"> 
    			 <?php foreach ($listeMarques as $row) : ?>
    			 <option value="<?php echo $row['id_marque']; ?>"><?php echo $row['nom_marque']; ?></option> 
    			 <?php endforeach; ?>
    			</select>           
                <input type="submit" name="envoi" value="Envoyez"> 
            </form>

  2. #2
    Invité
    Invité(e)

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    j'ai modifié la syntaxe de la requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $req =  "INSERT INTO produits (`nom_produit`,`description_produit`,`prix_produit`,
    		`id_categorie_produit`,`id_marque`)
    				VALUES('$nom_produit','$description_produit','$prix_produit','$id_categorie_produit','$id_marque')";

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web Full-Stack
    Inscrit en
    Mai 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 19
    Points : 31
    Points
    31
    Par défaut
    Peux-tu nous en dire plus sur l'erreur ? Que dit-elle ?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    voila l erreur

    Nom : 3.png
Affichages : 193
Taille : 40,5 Ko

  6. #6
    Invité
    Invité(e)
    Par défaut
    Les messages sont clairs, non ?
    Les index id_categorie_produit et id_marque ne sont pas définis, -> lignes 17 et 18.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    j'ai changé ma requete pour ca, mais rien ne change
    je comprends pas pourquoi
    Undefined index: id_categorie_produit
    et pourtant je fais le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tri_critere = $_POST['id_categorie_produit'];
    $tri_marque = $_POST['id_marque'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req =  "INSERT INTO produits (`nom_produit`,`description_produit`,prix_produit ,
    				id_categorie_produit,id_marque)
    				VALUES('$nom_produit','$description_produit',$prix_produit,
    				(SELECT nom_categorie_produit FROM categories_produits where id_categorie_produit = '$id_categorie_produit'),(SELECT nom_marque FROM marques where id_marque = '$id_marque')
     
    				)";

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    j'ai encore modifié mon 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
    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
     
    $trier_categorie = isset($_POST['trier_categorie']) ? trim($_POST['tri_categorie']) : "";
    $trier_marque = isset($_POST['trier_marque']) ? trim($_POST['tri_marque']) : "";
     
    <select name="tri_categorie"> 
    			 <?php foreach ($listeCategories as $row) : ?>
    			 <option value="<?php echo $row['id_categorie_produit']; ?>"><?php echo $row['nom_categorie_produit']; ?></option> 
    			 <?php endforeach; ?>
    			</select>
     
     
    <select name="tri_marque"> 
    			 <?php foreach ($listeMarques as $row) : ?>
    			 <option value="<?php echo $row['id_marque']; ?>"><?php echo $row['nom_marque']; ?></option> 
    			 <?php endforeach; ?>
    			</select> 
     
    function sqlAjouterProduit($conn, $nom_produit,$description_produit,$prix_produit,$trier_categorie, $trier_marque) {
     
    	$trier_categorie = mysqli_real_escape_string($conn, $trier_categorie);
    	$trier_marque = mysqli_real_escape_string($conn, $trier_marque);
     
     
     
     
        $req =  "INSERT INTO produits (`nom_produit`,`description_produit`,prix_produit ,
    				id_categorie_produit,id_marque)
    				VALUES('$nom_produit','$description_produit',$prix_produit,
    				(SELECT cp.id_categorie_produit FROM categories_produits cp where cp.id_categorie_produit = '$trier_categorie'),
    				(SELECT  m.id_marque FROM marques m where m.id_marque = '$trier_marque')
     
    				)";
     
     
     
     
       if (mysqli_query($conn, $req)) {
            return mysqli_affected_rows($conn);
        } else {
            errSQL($conn);
            exit;
        }
    }

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Salut,
    Tu as tout mélangé .

    On va prendre le code de ton premier post :
    Le formulaire :
    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
    25
    26
    27
    28
    29
    30
    31
     
     
    $listeCategories=sqlLireCategorie($conn);
    $listeMarques = sqlListeMarques($conn);
    <form action="ajouterProduits.php" method="post">
                <label>Nom du produit</label>
                <input type="text"   name="nom_produit" value="<?php echo isset($nom_produit) ? $nom_produit : "" ?>" required>
                <span><?php echo isset($erreurs['nom_produit']) ? $erreurs['nom_produit'] : "&nbsp;"  ?></span>
     
                <label>Description</label>
                <input type="text"   name="description_produit" value="<?php echo isset($description_produit) ? $description_produit : "" ?>" required>
                <span><?php echo isset($erreurs['description_produit']) ? $erreurs['description_produit'] : "&nbsp;"  ?></span>
     
                <label>Prix</label>
                <input type="text"   name="prix_produit" value="<?php echo isset($prix_produit) ? $prix_produit : "" ?>" required>
                <span><?php echo isset($erreurs['prix_produit']) ? $erreurs['prix_produit'] : "&nbsp;"  ?></span>
     
                <select name="categorie"> <!-- ici c'est categorie -->
    			 <?php foreach ($listeCategories as $row) : ?>
    			 <option value="<?php echo $row['id_categorie_produit']; ?>"><?php echo $row['nom_categorie_produit']; ?></option> 
    			 <?php endforeach; ?>
    	    </select>
     
     
    	   <select name="marque"> <!-- ici c'est marque -->
    			 <?php foreach ($listeMarques as $row) : ?>
    			 <option value="<?php echo $row['id_marque']; ?>"><?php echo $row['nom_marque']; ?></option> 
    			 <?php endforeach; ?>
    	   </select>           
                <input type="submit" name="envoi" value="Envoyez"> 
            </form>

    Et le fichier d’insertion :
    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
     
    if(isset($_POST["envoi"])){
       $conn= mysqli_connect(....);//connexion à la base.
       $nom_produit=mysqli_real_escape_string($conn,$_POST['nom_produit']);
       $description_produit=mysqli_real_escape_string($conn,$_POST["description_produit"]);
       $prix_produit=mysqli_real_escape_string($conn,$_POST["prix_produit"]);
       $id_categorie_produit=mysqli_real_escape_string($conn,$_POST["categorie"]);
       $id_marque=mysqli_real_escape_string($conn,$_POST["marque"]);
       if(!empty($nom_produit) && !empty($description_produit) && !empty($prix_produit) && !empty($id_categorie_produit) && !empty($id_marque) ) {//si toutes les valeurs sont définies
           $req = "INSERT INTO produits (nom_produit, description_produit, prix_produit, id_categorie_produit, id_marque) values ('$nom_produit','$description_produit','$prix_produit',' $id_categorie_produit','$id_marque')";
           if (mysqli_query($conn, $req)) {
               echo "insértion terminée avec succès".
           } else {
              errSQL($conn);
              exit;
          }
      }else{//sinon on renvoi ce message.
        echo "Formulaire incomplet ! "; 
      }
    }

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    et voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function sqlAjouterProduit($conn, $nom_produit,$description_produit,$prix_produit,$id_categorie_produit, $id_marque) {
     
        $req =  "INSERT INTO produits (`nom_produit`,`description_produit`,`prix_produit`,
    				`id_categorie_produit`,`id_marque`)
    				VALUES('$nom_produit','$description_produit','$prix_produit','$id_categorie_produit','$id_marque')";
     
       if (mysqli_query($conn, $req)) {
            return mysqli_affected_rows($conn);
        } else {
            errSQL($conn);
            exit;
        }
    }
    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
     
    $listeCategories=sqlLireCategorie($conn);
    $listeMarques = sqlListeMarques($conn);
     
     
    if (isset($_POST['envoi'])) {
     
    	$erreurs = array();
       $nom_produit=mysqli_real_escape_string($conn,$_POST['nom_produit']);
       $description_produit=mysqli_real_escape_string($conn,$_POST["description_produit"]);
       $prix_produit=mysqli_real_escape_string($conn,$_POST["prix_produit"]);
       $id_categorie_produit=mysqli_real_escape_string($conn,$_POST["categorie"]);
       $id_marque=mysqli_real_escape_string($conn,$_POST["marque"]);
     
       if (count($erreurs) === 0) {
     
            if (sqlAjouterProduit($conn, $nom_produit,$description_produit,$prix_produit,$id_categorie_produit,$id_marque) === 1) {
                $retSQL="Ajout effectué.";    
            } else {
                $retSQL ="Ajout non effectué.";    
            }
     
    		 $nom_produit = ""; // réinit pour une nouvelle saisie
    		 $description_produit ="";
    		 $$prix_produit="";
        }
     
     <form action="ajouterProduits.php" method="post">
                <label>Nom du produit</label>
                <input type="text"   name="nom_produit" value="<?php echo isset($nom_produit) ? $nom_produit : "" ?>" required>
                <span><?php echo isset($erreurs['nom_produit']) ? $erreurs['nom_produit'] : "&nbsp;"  ?></span>
     
                <label>Description</label>
                <input type="text"   name="description_produit" value="<?php echo isset($description_produit) ? $description_produit : "" ?>" required>
                <span><?php echo isset($erreurs['description_produit']) ? $erreurs['description_produit'] : "&nbsp;"  ?></span>
     
                <label>Prix</label>
                <input type="text"   name="prix_produit" value="<?php echo isset($prix_produit) ? $prix_produit : "" ?>" required>
                <span><?php echo isset($erreurs['prix_produit']) ? $erreurs['prix_produit'] : "&nbsp;"  ?></span>
     
                <select name="categorie"> <!-- ici c'est categorie -->
    			 <?php foreach ($listeCategories as $row) : ?>
    			 <option value="<?php echo $row['id_categorie_produit']; ?>"><?php echo $row['nom_categorie_produit']; ?></option> 
    			 <?php endforeach; ?>
    	    </select>
     
     
    	   <select name="marque"> <!-- ici c'est marque -->
    			 <?php foreach ($listeMarques as $row) : ?>
    			 <option value="<?php echo $row['id_marque']; ?>"><?php echo $row['nom_marque']; ?></option> 
    			 <?php endforeach; ?>
    	   </select>           
                <input type="submit" name="envoi" value="Envoyez"> 
            </form>
    Merci infiniment Toufik, je peux enfin avancer

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Juste un truc, tu n'as pas vérifié les valeurs des variables avec !empty() pour empêcher l'insertion des valeurs vides.

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 57
    Points : 39
    Points
    39
    Par défaut
    Merci pour la remarque, mais je l'ai fait et j ai ajouté les expressions régulières

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

Discussions similaires

  1. insert into avec le select
    Par vaness303 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/05/2009, 18h53
  2. insert into avec un select
    Par vaness303 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/05/2009, 15h54
  3. INSERT INTO avec un SELECT et SUBQUERY
    Par ruscov dans le forum SQL
    Réponses: 5
    Dernier message: 22/04/2008, 12h22
  4. Insert Into avec un Select
    Par Tintou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/10/2007, 18h07
  5. [Débutant] INSERT INTO avec VALUES + SELECT
    Par Feezdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/06/2006, 11h10

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