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 :

Intégration de données venant d'une table dans une autre table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2019
    Messages : 8
    Par défaut Intégration de données venant d'une table dans une autre table
    Bonjour,
    J'ai déjà inséré des données dans une table sql via un formulaire mais je n'y parvient pas cette fois ci.

    La table que je cherche à incrémenter s'appelle menu et contient les champs suivant:
    id
    nommenu
    entree
    plat
    dessert
    voici mon 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
    40
    41
    <form action="insertion8.php" method="post">
    						<label for='nommenu'> nom du menu: </label>
    						<input id='nommenu'type="text" name="nommenu"required ><br/>
    						<label>choisissez une entrée</label>
    						<select name="entree">
     
    							<?php
    							while( $resultat3=$requete3->fetch ())
    							{?>
    							<option value="<?php echo $resultat3 ['nom'];?>"><?php echo $resultat3 ['nom'];?></option>
    							<?php 
    							}
    							?>
     
     
    						</select>
    						<br/>						
    					    <label>choisissez un plat</label>
    						<select name="plat">
    							<?php
    							while( $resultat4=$requete4->fetch ())
    							{?>
    							<option value="<?php echo $resultat4 ['nom'];?>"><?php echo $resultat4 ['nom'];?></option>
    							<?php 
    							}
    							?>
    						</select>
    						<br/>
    						<label>choisissez un dessert</label>
    						<select name="dessert">
    							<?php
    							while( $resultat5=$requete5->fetch ())
    							{?>
    							<option value="<?php echo $resultat5 ['nom'];?>"><?php echo $resultat5 ['nom'];?></option>
    							<?php 
    							}
    							?>
    						</select>
    						<br/>
    						<input type="submit" value="envoyer">	
    					</form>
    Il va chercher les données du menu déroulant dans une autre table via ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
       $bdd3=new PDO('mysql:host=localhost;dbname=mf2019;charset=utf8','root','');
       $requete3=$bdd3->query ("SELECT nom FROM plats WHERE catégorie='entree' ORDER BY 'id' ");
       $requete4=$bdd3->query ("SELECT nom FROM plats WHERE catégorie='plat' ORDER BY 'id' ");
       $requete5=$bdd3->query ("SELECT nom FROM plats WHERE catégorie='dessert' ORDER BY 'id' ");
    ?>
    Le formulaire marche bien
    voici ce que j'obtient avec un var-dump:
    C:\wamp64\www\ESPACE_WEB_MENU_FACILE\DPHP\insertion8.php:2:
    array (size=4)
    'nommenu' => string 'anniversaire' (length=12)
    'entree' => string 'salade grecque' (length=14)
    'plat' => string 'rougaille saucisse' (length=18)
    'dessert' => string 'tiramisu' (length=8)
    ensuite
    je rattache mon formulaire à une autre page sur laquelle j'ai mis le code suivant
    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
    <?php
    var_dump($_POST);
    $objetPdo4=new PDO('mysql:host=localhost;dbname=mf2019;charset=utf8','root','');
    $pdoStat4=$objetPdo4->prepare ('INSERT INTO menu VALUES(NULL,:nommenu,:entree,:plat,:dessert)');
    $pdoStat4->bindValue (':nommenu',$_POST['nommenu'], PDO::PARAM_STR);
    $pdoStat4->bindValue (':entree',$_POST['entree'], PDO::PARAM_STR);
    $pdoStat4->bindValue (':plat',$_POST['plat'], PDO::PARAM_STR);
    $pdoStat4->bindValue (':dessert',$_POST['dessert'], PDO::PARAM_STR);
     
    $insertIsOk=$pdoStat4->execute();
    if($insertIsOk)
    {
    $message4="votre Menu est bien été enregistré";
    }
     
    else
    	{
    $message4="echec de l'enregistrement veuillez réessayer";
    }
     
    ?>
    puis un code htlm ou on retrouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $message4; ?>
    Je n'ai pas de code d'erreur mais je retrouve le message
    "echec de l'enregistrement veuillez réessayer"
    et ma table n'est pas incrémentée je ne comprends pas d'où vient mon erreur

    Quelqu'un pourrait il m'aider?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Vous pouvez essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pdoStat4=$objetPdo4->prepare ('INSERT INTO menu (nommenu,entree,plat,dessert) VALUES (:nommenu,:entree,:plat,:dessert');

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2019
    Messages : 8
    Par défaut problème d'intégration de données venant d'une table dans une autre table
    Citation Envoyé par MaitrePylos Voir le message
    Vous pouvez essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pdoStat4=$objetPdo4->prepare ('INSERT INTO menu (nommenu,entree,plat,dessert) VALUES (:nommenu,:entree,:plat,:dessert');
    Merci de votre réponse mais cela ne change rien malheureusement.
    C'est la première fois que je fais un formulaire qui est incrémenté par une autre table, mon problème pourrait il venir de là?

    Cordialement

  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
    Tu peux commencer par activer les exceptions PDO, histoire d'avoir un chouia plus d'informations sur ce qui plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $objetPdo4=new PDO('mysql:host=localhost;dbname=mf2019;charset=utf8','root','', [PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION]);
    Est-ce qu'il y a des contraintes sur ta table menu ? des clés étrangères vers la table plats par exemple ?
    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2019
    Messages : 8
    Par défaut exceptions PDO
    Citation Envoyé par Celira Voir le message
    Tu peux commencer par activer les exceptions PDO, histoire d'avoir un chouia plus d'informations sur ce qui plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $objetPdo4=new PDO('mysql:host=localhost;dbname=mf2019;charset=utf8','root','', [PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION]);
    Est-ce qu'il y a des contraintes sur ta table menu ? des clés étrangères vers la table plats par exemple ?
    Bonjour,
    je viens d'activer les exceptions PDO, mais je ne sais pas comment récupérer les infos sur ce qui plante.
    Ma table ne comporte as de clé étrangère, mais vous toucher à mon avis le cœur du sujet.
    Dans les faits je cherche justement à incrémenter une table "menu" qui serait composée de clés étrangères entrée, plat, dessert, et si possible id-inscrit.
    je sais créer ce genre de table via MySQL Workbench.

    Je n'ai trouvé aucune information sur des forum ou tutos sur comment alimenter ce genre de table via php. C'est pourquoi j'ai essayé de créer une simple table menu, de récupérer les infos de ma table plat via php dans un formulaire, puis d' essayé de les intégrer dans ma table menu.

    Merci de votre réponse

    Cordialement

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Il y a une erreur de syntaxe grosse comme une maison dans ta requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdoStat4=$objetPdo4->prepare ('INSERT INTO menu VALUES(NULL,:nommenu,:entree,:plat,:dessert');
    Il manque une parenthèse fermante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdoStat4 = $objetPdo4->prepare('INSERT INTO menu VALUES (NULL, :nommenu, :entree, :plat, :dessert)');

    Et pour afficher les éventuelles erreurs d'une instruction SQL, tu peux utiliser PDOStatement::errorInfo():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else {
        $message4 = "échec de l'enregistrement, veuillez réessayer";
        print_r($pdoStat4->errorInfo());
    }

Discussions similaires

  1. Aligner données venant de 3 colonnes dans une listbox
    Par blabla69100 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/09/2016, 12h00
  2. Réponses: 12
    Dernier message: 04/02/2015, 14h07
  3. Afficher dans une liste la donnée liée d'une autre table
    Par Zhebulon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2011, 14h36
  4. [MySQL] Mettre données venant d'une BDD dans "id" d'une balise html
    Par maryooman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/12/2009, 14h25
  5. Mise à jour de données à partir d'une autre table
    Par rsc dans le forum Langage SQL
    Réponses: 7
    Dernier message: 05/04/2006, 10h53

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