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 JOINTURE avec un formulaire [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut INSERT INTO avec JOINTURE avec un formulaire
    Bonjour à tous,

    Voila je veux insérer des données dans ma BDD grace à un formulaire le problème c'est que j'ai mit des clés étrangères pour que la table "Probleme" regroupe plusieurs table de différentes catégories, par exemple "Salle"

    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
     
    CREATE TABLE `Probleme` (
      `idProb` int(11) NOT NULL,
      `idSalle` int(11) NOT NULL,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    ALTER TABLE `Probleme`
      ADD PRIMARY KEY (`idProb`),
      ADD KEY `FK_salleProb` (`idSalle`),
     
    ALTER TABLE `Probleme`
      MODIFY `idProb` int(11) NOT NULL AUTO_INCREMENT;
     
     
     
     
    CREATE TABLE `Salle` (
      `idSalle` int(11) NOT NULL,
      `numSalle` int(11) NOT NULL,
      `lettreBatimentSalle` varchar(50) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
     
    ALTER TABLE `Salle`
      ADD PRIMARY KEY (`idSalle`);
     
     
    ALTER TABLE `Salle`
      MODIFY `idSalle` int(11) NOT NULL AUTO_INCREMENT;
     
     
    ALTER TABLE `Salle`
      ADD CONSTRAINT `FK_salleProb1` FOREIGN KEY (`idSalle`) REFERENCES `declarationProbleme` (`idSalle`);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     $bdd  = include 'conne.php';
     
        $sql = 'INSERT INTO Salle(numSalle,lettreBatimentSalle)
                SELECT :numSalle, :lettre
                FROM Probleme AS dP
                INNER JOIN Salle AS sP ON dP.idSalle = sP.idSalle';
     
    //la ligne qui lance la requête préparée
        $stmt = $bdd->prepare($sql);
        $stmt->execute(array(
            ':numSalle' => $numSalle,
            ':lettre' => $lettre,
        ));
    Je pense que cela vient de mon code avec la requête mais je ne suis pas sur

    N'hésiter pas à me demander plus d'information

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je confirme, ta requête est bizarre Tu essayes d'insérer quoi dans quelle table exactement ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    J'essais de rentrer un nombre et des données dans un select qui seront inséré dans la table "salle" et donc l'idSalle dans la table "Probleme" viendra chercher les données.

    En gros pour ce mettre dans le contexte j'ai un formulaire qui ce suit sur plusieurs page et pour chaque page du formulaire je le fait correspondre à une table pour bien organiser les choses et donc tous ça je voudrais appeler qu'une seule table (Probleme) pour afficher ça dans un tableau

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu veux insérer dans Salle, il faut insérer dans Salle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = 'INSERT INTO Salle(numSalle,lettreBatimentSalle) values (:numSalle, :lettre)';
     
    //la ligne qui lance la requête préparée
        $stmt = $bdd->prepare($sql);
        $stmt->execute(array(
            ':numSalle' => $numSalle,
            ':lettre' => $lettre,
        ));
    A moins que tu ne veuilles vérifier que les données existent dans la table Problème d'abord ?
    Au passage, tu es sûr du sens de tes contraintes ? Est-ce qu'une salle peut appartenir à plusieurs problèmes ? ou est-ce qu'une salle est créé pour chaque problème ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre confirmé Avatar de IamKanagawa
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 114
    Par défaut
    Enfaite j'arrive deja à insérer les données de la salles. ce que je voudrais faire c'est regrouper la table "salle" et d'autre table du même type dans la table problème (la même salle peut être dans plusieurs problème) donc la table problème j'aimerais que par exemple elle a un id = 1 et que idSalle( dans la table problème) appelle toutes les données dans la table salle donc j'ai mis des clés étrangère

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bon, donc tu veux c'est une clé étrangère sur Problème qui pointe vers Salle et non le contraire.
    Donc pour faire l'insertion dans Probleme, tu vas chercher l'id de la Salle cible et tu l'insères dans Probleme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Probleme (idSalle)
    SELECT idSalle
    FROM Salle 
    WHERE numSalle = :numSalle AND lettreBatimentSalle = :lettre
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par IamKanagawa Voir le message
    ...Je sais pas si tu m'as compris ?...
    Non.
    On ne vis pas dans ta tête.


    @Celira
    A partir du moment où on doit "bidouiller" une requête, c'est qu'il y a un souci au niveau de la récupération des données du formulaire, non ?...

    Pourquoi récupérer "numSalle" et "lettre", alors qu'on pourrait récupérer "idSalle" directement depuis le formulaire ?

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

Discussions similaires

  1. INSERT INTO avec jointure
    Par bip-bip dans le forum SQL
    Réponses: 4
    Dernier message: 28/05/2015, 13h27
  2. [AC-2007] Problème de jointure dans INSERT INTO avec INNER JOIN
    Par andy331 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 16/03/2010, 15h59
  3. [AC-2007] Insert into avec paramètre depuis un formulaire
    Par ZeDave dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/01/2010, 22h21
  4. [MySQL] Php et INSERT INTO, avec variables
    Par Djwaves dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 20/02/2006, 13h53
  5. INSERT INTO avec une valeur numéroauto
    Par priest69 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 08/11/2005, 15h39

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