Ecrire dans une base de données

raxos
Messages postés
656
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
16 mai 2022
- 19 juin 2017 à 14:53
jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
- 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
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356
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
656
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
16 mai 2022
1
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
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356 > raxos
Messages postés
656
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
16 mai 2022

20 juin 2017 à 09:12
Peux tu me montrer ton code modifié ?
0
raxos
Messages postés
656
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
16 mai 2022
1 > jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022

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
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356 > raxos
Messages postés
656
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
16 mai 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
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022
356 > jordane45
Messages postés
35415
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 mai 2022

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
656
Date d'inscription
lundi 29 décembre 2014
Statut
Membre
Dernière intervention
16 mai 2022
1
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