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:
Citation:
id
nommenu
entree
plat
dessert
voici mon formulaire
Code:
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:
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:
Citation:
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:
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:
<?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
problème d'intégration de données venant d'une table dans une autre table
Citation:
Envoyé par
MaitrePylos
Vous pouvez essayer ceci :
Code:
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
2 pièce(s) jointe(s)
autoincrement + PDOStatement::errorInfo
Citation:
Envoyé par
CosmoKnacki
Et que te renvoie PDOStatement::errorInfo() (voir message précédent)? Est-ce que ta colonne id est bien en autoincrement?
Pièce jointe 482902Pièce jointe 482906Pièce jointe 482902Pièce jointe 482906
Oui ma clé est bien auto incrémenté, je vous ai mis un print écran de ma table, voici également ce que j'obtiens dès que j'essai d'incrémenter ma table.
Je ne constate rien avec PDOStatement::errorInfo(), ou faut il regarder exactement svp?
print_r($pdoStat4->errorInfo(), true)
Citation:
Envoyé par
CosmoKnacki
Je n'en sais rien, c'est pas moi qui ait codé la page. Si tu ne vois rien peut-être que c'est recouvert par quelque chose, auquel cas tu devrais pouvoir le débusquer en affichant le code source de la page dans ton navigateur, ou sinon, tu peux mettre le résultat de PDOStatement::errorInfo() dans ton message en faisant par exemple: $message4 = "échec de l'enregistrement, veuillez réessayer: # " . print_r($pdoStat4->errorInfo(), true) . " #";
Quand je demandait ou il fallait regarder cela concernait les résultats des requêtes print et error info.
J'ai ajouté ces lignes dans mon code et je ne vois rien de plus apparaitre, le code source de ma page ne change pas:
Code:
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
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="../DCSS/MF1.css"/>
<title>Menu Facile</title>
</head>
<body>
<HEADER>
<h1>
Les courses de Mylène <a href="MF_LOG.php"><img src="../DIMG/Register.jpg"width="120"height="100" title="login"></a>
</h1>
</HEADER> <Div id="page">
<SECTION>
<H2>
J'ajoute mes plats
</H2>
<ARTICLE>
<p></p>
<p></p>
<p></p>
<p>echec de l'enregistrement veuillez réessayer</p>
</ARTICLE>
</SECTION>
<NAV>
<p>
<ul>
<li><a href="MF_ACCUEIL.php">Accueil</a></li>
<li><a href="MF_Nos Plat.php">Idées de plats </a></li>
<li><a href="MF_Ajoutez des plats.php">J'ajoute mes plats</a></li>
<li><a href="MF_Composez.php">Je prépare mon menu</a></li>
<li><a href="MF_votre liste des courses.php">J'édite ma liste de courses</a></li>
</ul>
</p>
</NAV>
</Div id="page">
<FOOTER>
<Div id="pied">
<a href="MF_MODE.php">mode d'emploi</a>-<a href="MF_ACCUEIL.php">Accueil</a>-<a href="mailto:xavier.bremaud@2020.icam.fr">Contact</a>
<BODY link="white" vlink="white" alink="white">
</Div>
</FOOTER>
</body>
</html> |