Bonjour,
Voila je rencontre un petit problème avec mon code.
Je fais actuellement un formulaire pour insérer des données dans une table
<?php
session_start();
try{
$bdd = new PDO('mysql:host=stellar2;dbname=projet', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
echo 'Échec de la connexion : ' . $e->getMessage();
exit;
}
if(isset($_POST['formpv'])) {
$unite = ($_POST['unite']);
$pv = ($_POST['pv']);
$annee = ($_POST['annee']);
$cadre = ($_POST['cadre_enquete']);
$ipac = ($_POST['ipac']);
$ide = ($_POST['pseudo']);
$magistrat = ($_POST['magistrat']);
if(!empty($_POST['pv']))
{
$sql = $bdd->prepare("INSERT INTO una (idunite, pv, idannee, idenqueteur, ipac, magistrat, idcadre_enquete,) VALUES(?, ?, ?, ?, ?, ?, ?)");
$req=$sql->execute (array ($_POST['unite'], $_POST['pv'], $_POST['annee'], $_POST['pseudo'], $_POST['ipac'], $_POST['magistrat'], $_POST['cadre_enquete'])) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$win = "Votre scellé a bien été créé !";
}else {
$erreur = "Tous les champs doivent être complétés !";
}
}
?>```
Décrivez ici ce que vous cherchez à obtenir
que les données s'affichent dans ma table et résoudre l'erreur
Ce que que j'obtiens
( ! ) Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe pr�s de ') VALUES('1', '1254', '1', '1', '', 'dsf', '1')' � la ligne 1 in E:\phpmyadmin\stellar2\formpv.php on line 23
Call Stack
# Time Memory Function Location
1 0.0000 366344 {main}( ) ...\formpv.php:0
2 0.0130 383192 execute ( ) ...\formpv.php:23
( ! ) Catchable fatal error: Object of class PDOStatement could not be converted to string in E:\phpmyadmin\stellar2\formpv.php on line 23
Call Stack
# Time Memory Function Location
1 0.0000 366344 {main}( ) ...\formpv.php:0
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
MERCI pour votre aide ;)
Bravo CAROUGE 10 tu a répondu à ma question.
Je me permet maintenant de te demander la cerise sur le gateau:
Actuellement avec ce code la liste déroulante affiche les clés. j'ai testé la table affiche bien les enregistrements tout va bien
MAIS...
Je souhaiterai que les listes déroulantes affichent les valeurs (C'est mieux pour les utilisateurs!!!)
Le problème c'est que quand je remplace id_unite, id_annee etc.... dans mes <option> les valeurs s'affichent bien sur le formulaire mais quand je valide le code plante.
C'est normal car la valeur n'est plus la clé et donc ne peut s'insérer dans dans la table.
Comment afficher les valeurs mais par contre récupérer la clé correspondante afin qu'elle s'insère dans la table au moment de la soumission du formulaire??????
J'ai vu quon pouvait écrire
<option value = " un code qui affiche la clef">mon code php qui affiche la valeur pour les utilisateurs</options>
Si tu réponds à ça tu résouds mon projet ......
Je te joins le code complet
<?php
session_start();
try{
$bdd = new PDO('mysql:host=stellar2;dbname=projet', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
echo 'Échec de la connexion : ' . $e->getMessage();
exit;
}
if(isset($_POST['formpv'])) {
$unite = ($_POST['unite']);
$pv = ($_POST['pv']);
$annee = ($_POST['annee']);
$cadre = ($_POST['cadre_enquete']);
$ipac = ($_POST['ipac']);
$ide = ($_POST['pseudo']);
$magistrat = ($_POST['magistrat']);
if(!empty($_POST['pv']))
{
$sql = $bdd->prepare("INSERT INTO una (idunite, pv, idannee, idenqueteur, id_ipac, magistrat, idcadre_enquete) VALUES(?, ?, ?, ?, ?, ?, ?)");
$req=$sql->execute (array ($_POST['unite'], $_POST['pv'], $_POST['annee'], $_POST['pseudo'], $_POST['ipac'], $_POST['magistrat'], $_POST['cadre_enquete'])) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$win = "Votre scellé a bien été créé !";
}else {
$erreur = "Tous les champs doivent être complétés !";
}
}
?>
<html>
<head>
<title>Scellé</title>
<meta charset="utf-8">
<link rel="stylesheet" media="screen" type= "text/css" href="css/theme.css"/>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
</head>
<h1>PV</h1><br /><br />
<form method="POST" action="formpv.php">
<table>
<tr>
</SELECT>
</td>
</tr>
<tr>
<td align="right">
<label for="unité">Unité</label>
</td>
<td>
<SELECT class="form-control-sm" type="text" id="unite" name="unite"/>
<OPTION></OPTION>
<?php
$reponse = $bdd->query('SELECT * FROM unite');
while ($donnees = $reponse->fetch())
{
echo '<OPTION>'. $donnees['id_unite'] .'</OPTION>';
}
$reponse->closeCursor();
?>
</td>
</tr>
<tr>
<td align="right">
<label for="pv">Numéro :</label>
</td>
<td>
<input type="text" class="form-control-sm" placeholder="pv" id="pv" name="pv" value="<?php if(isset($pv)) { echo $pv; } ?>" />
</td>
</tr>
<tr>
<td align="right">
<label for="annee">Année</label>
</td>
<td>
<SELECT class="form-control-sm" type="text" id="annee" name="annee"/>
<OPTION></OPTION>
<?php
$reponse = $bdd->query('SELECT * FROM annee');
while ($donnees = $reponse->fetch())
{
echo '<OPTION>'. $donnees['id_annee'] .'</OPTION>';
}
$reponse->closeCursor();
?>
</td>
</tr>
</SELECT>
<tr>
<td align="right">
<label for="cadre">Cadre d'enquête</label>
</td>
<td>
<SELECT class="form-control-sm" type="text" id="cadre" name="cadre_enquete"/>
<OPTION></OPTION>
<?php
$reponse = $bdd->query('SELECT * FROM cadre_enquete');
while ($donnees = $reponse->fetch())
{
echo '<OPTION>'. $donnees['idcadre_enquete'] .'</OPTION>';
}
$reponse->closeCursor();
?>
</td>
</tr>
</SELECT>
<tr>
<td align="right">
<label for="ide">Enquêteur</label>
</td>
<td>
<SELECT class="form-control-sm" type="text" id="pseudo" name="pseudo"/>
<OPTION></OPTION>
<?php
$reponse = $bdd->query('SELECT * FROM users');
while ($donnees = $reponse->fetch())
{
echo '<OPTION>'. $donnees['id'] .'</OPTION>';
}
$reponse->closeCursor();
?>
</td>
</tr>
</SELECT>
<tr>
<td align="right">
<label for="ipac">L'IPAC est il créé?</label>
</td>
<td>
<SELECT class="form-control-sm" type="text" id="ipac" name="ipac"/>
<OPTION></OPTION>
<?php
$reponse = $bdd->query('SELECT * FROM ipac');
while ($donnees = $reponse->fetch())
{
echo '<OPTION>'. $donnees['id_ipac'] .'</OPTION>';
}
$reponse->closeCursor();
?>
</td>
</tr>
</SELECT>
<tr>
<tr>
<td align="right">
<label for="magistrat">magistrat :</label>
</td>
<td>
<input type="text" class="form-control-sm" placeholder="magistrat" id="magistrat" name="magistrat" value="<?php if(isset($magistrat)) { echo $magistrat; } ?>" />
</td>
</tr>
<td align="center"><br />
<button type="submit" value="formpv" name="formpv" class="btn btn-primary">Enregistrer !</button>
</td>
</tr>
<tr>
<td></td>
<td align="center"><br />
<a href="index.php">Retour à l'accueil</a>
</td>
</tr>
<div align="center">
<?php
if(isset($win)) {
echo '<div class="alert alert-dismissible alert-success" align="center">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4 class="alert-heading">Bravo!</h4>
<p class="mb-0">'.$win.' </p>
</div>';
}
?>
</div>
</table>
</form>
</html>
option peut avoir une "value" qui sera l'id et tu affiches le nom entre les balises
option
Bonjour,
Comme dit sur l'autre forum, tu as la solution dans l'erreur, il suffit de regarder. "L'erreur est près de ") VALUES ..."
Desole du retard de la reponse je suis a l'étranger ici cest la nuit je testerai ca et je te dirai maimais ça m'étonnerait qu'une si petite erreur fasse cela;)
Toute cette partie est à supprimée car inutile dans ton code :
$unite = ($_POST['unite']);
$pv = ($_POST['pv']);
$annee = ($_POST['annee']);
$cadre = ($_POST['cadre_enquete']);
$ipac = ($_POST['ipac']);
$ide = ($_POST['pseudo']);
$magistrat = ($_POST['magistrat']);
Ensuite, il y a une virgule en trop dans ta requête après le "idcadre_enquete"
Et on écrit pas "$req=$sql->execute" mais juste "$sql->execute", c'est ça dans toutes les requêtes préparées.
option peut avoir une "value" qui sera l'id et tu affiches le nom entre les balises
option