Problème d'envoi de valeur vers ma bdd

keb -  
 Utilisateur anonyme -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. keb
       
      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
    2. keb
       
      Ma commande est censé fonctionner mais ma base de donnée ne la prend pas en compte et ne ce modifie pas.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > keb
         
        As-tu essayé de mettre le nom de paramètre correct dans
        bind_value()
        , avec le
        :
        ?
        0
  2. Pitet Messages postés 2845 Statut Membre 530
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      @keb la page affiche bien
      valeur ajouter
      ?
      0
  3. Utilisateur anonyme
     
    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