Problème d'envoi de valeur vers ma bdd

Fermé
keb - 9 juin 2022 à 10:05
 Utilisateur anonyme - 9 juin 2022 à 15:13
Bonjour, j'ai un problème, je cherche à mettre à jour ma base de donnée à chaque nouvelle entrée. Lorsque j'envoi les valeurs dans ma base de données cette drenière ne se met pas à jour et garde les anciennes valeurs. Ma page se connecte parfaitement à ma base de donnée et les valeurs sont bien prise en compte (j'ai vérifier avec un var_dump()).
voici mon code:

<?php

require('connect.php');

if(!empty($_POST)){
if((isset($_POST[`sys`])) && (isset($_POST[`dia`])) && (isset($_POST[`pls`])) && (isset($_POST[`sat`])) && (isset($_POST[`temp`]))){
if((empty($_POST[`sys`])) && (empty($_POST[`dia`])) && (empty($_POST[`pls`])) && (empty($_POST[`sat`])) && (empty($_POST[`temp`]))){
//Enregistrement dans la base de donnée

$sys = $_POST[`sys`];
$dia = $_POST[`dia`];
$pls = $_POST[`pls`];
$sat = $_POST[`sat`];
$temp = $_POST[`temp`];

$sql = "UPDATE parametre SET sys = :sys, dia = :dia, pls = :pls, sat = :sat, temp = :temp";

$requete = $dbh ->prepare($sql);
$requete->bindValue(`sys`, $sys, PDO::PARAM_STR);
$requete->bindParam(`dia`, $dia, PDO::PARAM_STR);
$requete->bindParam(`pls`, $pls, PDO::PARAM_STR);
$requete->bindParam(`sat`, $sat, PDO::PARAM_STR);
$requete->bindParam(`temp`, $temp, PDO::PARAM_STR);

if(!$requete->execute()){
die ("Une erreur est survenue");
}else{
die ("valeur ajouter");
}

}else{
die("Erreur!");
}
}
}

?>

<!DOCTYPE html>
<html lang="fr" class="bg-black text-white">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="projet.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>Formateur</title>
</head>

<body class="bg-black text-white">
<div>
<?php

if(isset($msgError)){
echo $msgError;
}elseif(isset($msgSuccess)){
echo $msgSuccess;
}

?>
</div>
<div class="container">
<br/>
<br/>
<br/>
<h3 colspan="2">Moniteur multiparametre vital</h3>
<br/>
<br/>
<form name="form" method="POST" action="formateur.php">
<div class="row ok">

<div class="card col-xs-1 col-sm-1 col-md-1 col-lg-1 text-white bg-secondary" style="width: 10rem;">
<img class="card-img-top" src="./image/sys.jpg" alt="Card image cap">
<div class="card-body">
<br/>
<h5 class="card-title">SYS</h5>
<input type="number" placeholder="sys" id="sys" name="sys" min="0.1" max="25.9" step="0.1" required>
</div>
</div>

<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1"></div>

<div class="card col-xs-1 col-sm-1 col-md-1 col-lg-1 text-white bg-secondary" style="width: 10rem;">
<img class="card-img-top" src="./image/sys.jpg" alt="Card image cap">
<div class="card-body">
<br/>
<h5 class="card-title">DIA</h5>
<input type="number" placeholder="DIA" id="dia" name="dia" min="0.1" max="9.9" step="0.1" required>
</div>
</div>

<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1"></div>


<div class="card col-xs-2 col-sm-2 col-md-2 col-lg-2 text-white bg-secondary" style="width: 10rem;">
<img class="card-img-top" src="./image/pls.jpg" alt="Card image cap">
<div class="card-body">
<br/>
<h5 class="card-title">pulse</h5>
<input type="number" placeholder="Pulse" id="pls" name="pls" min="0" max="200" step="0.1" required>
</div>
</div>

<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1"></div>


<div class="card col-xs-1 col-sm-1 col-md-1 col-lg-1 text-white bg-secondary" style="width: 10rem;">
<img class="card-img-top" src="./image/sat.jpg" alt="Card image cap">
<div class="card-body">
<br/>
<h5 class="card-title">SAT</h5>
<input type="number" placeholder="SAT (%)" id="sat" name="sat" min="0" max="100" step="0.1" required>
</div>
</div>

<div class="col-xs-1 col-sm-1 col-md-1 col-lg-1"></div>

<div class="card col-xs-1 col-sm-1 col-md-1 col-lg-1 text-white bg-secondary" style="width: 10rem;">
<img class="card-img-top" src="./image/temp.jpg" alt="Card image cap">
<div class="card-body">
<h5 class="card-title">Temp °C</h5>
<input type="number" placeholder="Temp °C" id="temp" name="temp" min="34" max="42" step="0.1" required>
</div>
</div>
</div>
<br/>
<br/>
<br/>
<input type="submit" name="envoyer" id="envoyer" value="Envoyer">
</form>
</div>
</body>

</html>

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
9 juin 2022 à 11:55
bonjour,
Merci, quand tu postes du code, de suivre la méthode décrite ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Tu as choisi d'utiliser la commande UPDATE, qui devrait modifier tous les enregistrements existants de la table. Es-tu certain qu'elle ne fonctionne pas?
0
Je sais que la commande UPDATE marche mais ma base de donnée ne la prend pas compte, aucun changement n'est effectuer dans ma base de donnée.
0
Ma commande est censé fonctionner mais ma base de donnée ne la prend pas en compte et ne ce modifie pas.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > keb
9 juin 2022 à 12:37
As-tu essayé de mettre le nom de paramètre correct dans
bind_value()
, avec le
:
?
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
9 juin 2022 à 13:08
Bonjour,

Tes conditions sur les paramètres POST ne sont pas correctes : tu vérifies si les paramètres existe avec isset, puis tu vérifies si les paramètres sont vides avec empty. Il faudrait plutôt vérifier que les paramètres ne sont pas vides pour exécuter la requête.

La fonction empty vérifie déjà l'existence de la variable en plus de vérifier si elle est vide, il n'est donc pas nécessaire d'utiliser isset + empty, l'utilisation de empty seule suffit :
if (!empty($_POST) && !empty($_POST['sys']) && !empty($_POST['dia']) && !empty($_POST['pls']) && !empty($_POST['sat']) && !empty($_POST['temp'])) { 
	//Enregistrement dans la base de donnée
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
9 juin 2022 à 14:33
@keb la page affiche bien
valeur ajouter
?
0
Utilisateur anonyme
Modifié le 9 juin 2022 à 15:13
Bonjour,

Tu l'as mis où ton var_dump ? Mets un
die("oui");
juste avant ton update pour voir si tu vas bien dans ta condition.
Et active l'affichage des erreurs PDO si ce n'est pas déjà fait. Procédure ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Dans ton code pour activer les erreurs il suffit d'ajouter cette ligne avant ton prepare :
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

0