Ecrire dans une base de données

raxos Messages postés 652 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 31 juillet 2022 - 19 juin 2017 à 14:53
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 20 juin 2017 à 15:52
Bonjour,

Je viens vous voir car je me heurte à un problème depuis un petit moment maintenant.
Je voulais, lorsque l'on remplisse le formulaire, qu'une fiche soit créé dans la base de donnés.
Le code de recuperation est bon etant donné qu'il m'affiche bien mon echo (tout en bas), mais rien n'est inscrit dans la base de donnée...

recuperation.php

<?php
$titre = $_POST['titre'];
$RNE = $_POST['RNE'];
$etablissement = $_POST['etablissement'];
$probleme = $_POST['probleme'];
$resolution = $_POST['resolution'];
$commentaire = $_POST['commentaire'];
$etat = $_POST['etat'];

try
{
$bdd = new PDO('mysql:host=localhost;dbname=depannage;charset=utf8', 'xxxx', 'xxxx');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$req = $bdd->exec('INSERT INTO Tablette(titre, RNE, etablissement, probleme, resolution, commentaire, etat)');
$req = "INSERT INTO Tablette VALUES('$titre','$RNE','$etablissement','$probleme','$resolution','$commentaire','$etat')";

echo 'La fiche a bien été ajoutée !';

$pdo = null;
?>


index.php

<!DOCTYPE html>
<html>
<head>
<title>Creation fiche</title>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<body>
<img src="logo.png" class="logo">
<center><div class="center-div">
<h1>Formulaire de création de fiches de procédures</h1>

<form action="recuperation.php" method="POST">

<table>
<tr>
<th colspan="3">Informations générales</th> <!-- Section infos générales -->
</tr>
<tr>
<td>Titre : <input type="text" name="titre" id="titre" /></td>
<td>Etablissement : <input type="text" name="etablissement" id="etablissement" /></td>
<td>RNE : <input type="text" name="RNE" id="RNE" /></td>
</tr>
</table>

</br>

<table>
<tr>
<th colspan="3">Description</th> <!-- Section description -->
</tr>
<tr>
<td>Problème(s) rencontré(s) : <br><textarea name="probleme" id="probleme" rows=5 cols=70 placeholder="Description des problèmes"></textarea></td>
</tr>
<tr>
<td>Action(s) réalisée(s) <br><textarea name="resolution" id="resolution" rows=5cols=70 placeholder="Les manipulations effectuées par le dépanneur"></textarea></td>
</tr>
</table>

</br>

<table>
<tr>
<th colspan="3">Information(s) complémentaire(s)</th> <!-- Section infos sup -->
</tr>
<tr>
<td><textarea name="commentaire" id="commentaire" rows=5 cols=70></textarea></td>
</tr>
</table>

</br>

<table>
<tr>
<th colspan="3">Résolu ? <input type="text" name="etat" id="etat" /></th> <!-- Section infos générales -->
</tr>
</table>

</br>

<input type="submit" name="envoi" value="Confirmer l'envoi de la fiche">
</form>
</div>
<div class="bouton">
<p>
<a href="./page1.html" rel="nofollow noopener noreferrer" target="_blank">Retour</a>
</p>
</div>
</center>

</body>
</html>





Voici mes codes, en espérant que quelqu'un me vienne en aide ;) .

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
19 juin 2017 à 18:03
Bonjour,

Commence par ça :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs


Ensuite.. corrige ces lignes
$req = $bdd->exec('INSERT INTO Tablette(titre, RNE, etablissement, probleme, resolution, commentaire, etat)');
	$req = "INSERT INTO Tablette VALUES('$titre','$RNE','$etablissement','$probleme','$resolution','$commentaire','$etat')";
	

par :
$sql = "INSERT INTO Tablette(titre, RNE, etablissement, probleme, resolution, commentaire, etat) 
          VALUES(:titre,:RNE,:etablissement,:probleme,:resolution,:commentaire,:etat)";

$datas = array(':titre'=>$titre,
                ':RNE'=>$RNE,
                ':etablissement'=>$etablissement,
                ':probleme'=>$probleme,
                ':resolution'=>$resolution,
                ':commentaire'=>$commentaire,
                ':etat'=>$etat
                );
                
try{
  $prep = $bdd->prepare($sql);
  $prep->execute($datas);
}catch(Exception $e){
  echo "Erreur :".$e->getMessage();
}


0
raxos Messages postés 652 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 31 juillet 2022 3
20 juin 2017 à 08:43
Bonjour,
Merci pour ton aide, mais toujours la même chose, à savoir le message la fiche a été ajouté, mais rien dans la bdd...
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344 > raxos Messages postés 652 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 31 juillet 2022
20 juin 2017 à 09:12
Peux tu me montrer ton code modifié ?
0
raxos Messages postés 652 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 31 juillet 2022 3 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
20 juin 2017 à 09:35
Voici le code


<?php
$titre = $_POST['titre'];
$RNE = $_POST['RNE'];
$etablissement = $_POST['etablissement'];
$probleme = $_POST['probleme'];
$resolution = $_POST['resolution'];
$commentaire = $_POST['commentaire'];
$etat = $_POST['etat'];

try
{
$bdd = new PDO('mysql:host=localhost;dbname=depannage;charset=utf8', 'xxxx', 'xxxx');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

$sql = "INSERT INTO Tablette(titre, RNE, etablissement, probleme, resolution, commentaire, etat)
VALUES(:titre,:RNE,:etablissement,:probleme,:resolution,:commentaire,:etat)";

$datas = array(':titre'=>$titre,
':RNE'=>$RNE,
':etablissement'=>$etablissement,
':probleme'=>$probleme,
':resolution'=>$resolution,
':commentaire'=>$commentaire,
':etat'=>$etat
);

try{
$prep = $bdd->prepare($sql);
$prep->execute($datas);
}catch(Exception $e){
echo "Erreur :".$e->getMessage();
}

echo 'La fiche a bien été ajoutée !';

$pdo = null;
?>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344 > raxos Messages postés 652 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 31 juillet 2022
20 juin 2017 à 11:53
Tu n'as pas appliqué le contenu du lien que Je t'ai donné. ..
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
Modifié le 20 juin 2017 à 12:01
Ce lien là :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Pour ta connexion... tu dois ACTIVER les erreurs PDO.
try{
  $bdd = new PDO('mysql:host=localhost;dbname=depannage;charset=utf8', 'xxxx', 'xxxx');
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
   $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(Exception $e) {
   die('Erreur : '.$e->getMessage());
}
0
Fruitiss Messages postés 1 Date d'inscription lundi 19 juin 2017 Statut Membre Dernière intervention 20 juin 2017
Modifié le 20 juin 2017 à 15:07
Bonsoir,
Désolée, je suis pas très douée mais peut-être pourriez-vous essayer ceci :

<?php
 $connection = new PDO('mysql:host=localhost;dbname=depannage;charset=utf8', 'xxxx', 'xxxx');
 
 $titre = $_POST['titre'];
 $RNE = $_POST['RNE'];
 $etablissement = $_POST['etablissement'];
 $probleme = $_POST['probleme'];
 $resolution = $_POST['resolution'];
 $commentaire = $_POST['commentaire'];
 $etat = $_POST['etat'];
 
 echo $titre."<br>";
 echo $RNE."<br>";
 echo $etablissement."<br>";
 echo $probleme."<br>";
 echo $resolution."<br>";
 echo $commentaire."<br>";
 echo $etat."<br>";
 
 $req = 'INSERT INTO Tablette(titre, RNE, etablissement, probleme, resolution, commentaire, etat) VALUE(:titre, :RNE, :etablissement, :probleme, :resolution, :commentaire, :etat)';
 $sql = $connection ->prepare($req);
 
try
 {
  $sql ->bindParam(':titre', $titre, PDO::PARAM_INT);
  $sql ->bindParam(':resolution', $resolution, PDO::PARAM_STR); //si char, string ou date
  ...
  
   $sql -> execute();
 }
catch(Exception $e)
{
 die('Erreur SQL'.$sql.'<br>'.$e ->getMessage());
}

?>


EDIT : Ajout des balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45
0
raxos Messages postés 652 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 31 juillet 2022 3
20 juin 2017 à 08:50
Bonjour, merci de ton aide.
J'ai bien fait ton code, en ajoutant dans le try mes champs, et cela a pour conséquence d'afficher les valeurs de mes champs(les echo fonctionnent), et toujours rien dans ma bdd.
J'ai aussi essayé de mettre les echo à la fin du code, même résultat.
0
Rejoignez-nous