Waterlevel with php

Hi, i'm doing a water level project. I've done it succesfully on xampp local server and now i want to make it with my awardspace free server account, but i face this problem.

post your php code...

<?php require 'data.php'; // connexion avec la db $konek = mysqli_connect("host", "username", "password", "dbname"); //lire la valeur de hauteur envoyée par nodemcu $hauteur = $_GET["hauteur"]; //sauvegarder et update la hauteur dans la table mysqli_query($konek, "UPDATE tb_réservoir SET hauteur='$hauteur'"); ?>

Please do your part and provide the necessary info in a readable way...

what's in data.php? where is that file located?

please format the text and use code tags. I would expect the first post to look like this

<?php
require 'data.php';

// Connexion avec la db
$konek = mysqli_connect("host", "username", "password", "dbname");

// Lire la valeur de hauteur envoyée par nodemcu
$hauteur = $_GET["hauteur"];

// Sauvegarder et mettre à jour la hauteur dans la table
mysqli_query($konek, "UPDATE tb_réservoir SET hauteur='$hauteur'");
?>

which is way more readable

(note that you have a risk of SQL injection by writing the code this way)


➜ please read How to get the best out of this forum and post accordingly (including code tags and necessary documentation for your ask).

ok, i will upload all the codes.

i've difficulty to put the codes in a more readable way, can i upload the php files directly ?

just copy & paste and add a few carriage returns here and there... it's not rocket science

then select the code part and press the <code/> icon in the tool bar to mark it as code.

index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Visualisation du niveau d'eau</title>
    <!--include the 2 js files and the css file  -->
    <link rel="stylesheet" href="text/css" href="bootstrap.min.css">
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javasript" src="bootstrap.min.js"></script>

<style type="text/css">
.réservoir{
    border-style: solid;  /* la ligne après visualisation du niveau d'eau*/
    width: 300px;  /*largeur du réservoir */
    height: 300px; /*hauteur du réservoir */
    left: 50%; /* position par rapport à la gauche*/
    transform: translate(-50%); /*mouvement de translation vers la gauche */
    position: sticky; /*remet le réservoir au centre */
    border-bottom-left-radius: 20px; /*change le bord gauche  du bas du réservoir en arc de cercle */
    border-bottom-right-radius: 20px; /*change le bord droit  du bas du réservoir en arc de cercle */
}

.eau{
    /* on peut mettre ces 2 en bas dans la classe eau
    width: 100%;  /*largeur de l'eau: 100% pour épouser parfaitement les bords du réservoir */
    /* height: 100%; /*la hauteur de l'eau */ 

    left: 50%; /* position par rapport à la gauche*/
    bottom: 0px; /*pour que ça remplisse du bas vers le haut */
    transform: translate(-50%); /*mouvement de translation vers la gauche */
    position: absolute; /*aligne l'eau sur le réservoir au centre */
    border-bottom-left-radius: 20px; /*change le bord gauche  du bas de l'eau en arc de cercle */
    border-bottom-right-radius: 20px; /*change le bord droit  du bas de l'eau en arc de cercle */
    background-color: blue;
}

.fermeture{
    border-style: solid;  /* frontière*/
    width: 300px;  /*largeur de la fermeture */
    height: 40px; /*hauteur de la fermeture */
    left: 50%; /* position par rapport à la gauche*/
    transform: translate(-50%); /*mouvement de translation vers la gauche */
    position: sticky; /*remet le réservoir au centre */
    border-top-left-radius: 20px; /*change le bord gauche  du haut de la fermeture en arc de cercle */
    border-top-right-radius: 20px; /*change le bord droit  du haut de la fermeture en arc de cercle */

}

.poignée{
    border-style: solid;  /* la ligne après visualisation du niveau d'eau*/
    width: 40px;  /*largeur du réservoir */
    height: 20px; /*hauteur du réservoir */
    left: 50%; /* position par rapport à la gauche*/
    transform: translate(-50%); /*mouvement de translation vers la gauche */
    position: sticky; /*remet le réservoir au centre */
    border-top-left-radius: 20px; /*change le bord gauche  du bas du réservoir en arc de cercle */
    border-top-right-radius: 20px; /*change le bord droit  du bas du réservoir en arc de cercle */
}



</style>

<!--  processus temps réel-->
<script type="text/javascript">
    $(document).ready(function() {
       setInterval(function(){
           $("#data").load('data.php')
       }, 1000);
    });
</script>

</head>
<body>

<div class="container" style="text-align: center;">
<img src="/SEEG_logo.jpg" style="width: 120px; margin-top: 25px;">
<h3>Système de visualisation du niveau d'eau </h3>
<div style="font-size: 20px;">Réservoir d'eau (Hauteur Max: 3 Meter)</div>

<div id="data"></div>

<!-- logo -->
<img src="/iot1.jpg" style="margin-top: 15px; width: 100px;">


</div>
    
</body>
</html>

data.php

<?php
require 'index.php';
// connexion avec la db
$konek = mysqli_connect("host", "username", "password", "dbname");


// lire le contenu du tableau des réservoirs
$sql = mysqli_query($konek, "SELECT * FROM tb_réservoir");
$data = mysqli_fetch_array($sql);

$hauteur_max = 6.6; //hauteur du réservoir en cm
$rayon = 1; // en m
$phi = 3.14 ;  // volume = phi*r**2*hauteur

//mesure du niveau d'eau
$hauteur_eau = $hauteur_max - $data['hauteur'];
//pourcentage de hauteur d'eau
$pourcentage_hauteur_eau = ($hauteur_eau/$hauteur_max)*100; // pourcentage de rendement
//calcul du volume d'eau
$volume = $phi * ($rayon*$rayon) * ($hauteur_eau/100); // en m*3
//calcul du nombre de litres d'eau 1m*3=1000L
$litre = $volume * 1000 ;
?>

<!-- poignée de la fermeture -->
<div class="poignée"></div>
<!-- fermeture du réservoir -->
<div class="fermeture"></div>
<!-- corps du réservoir d'eau -->
<div class="réservoir">
    <!--vue de l'eau -->
    <div class="eau" style=" width: 100%; height: <?php echo $pourcentage_hauteur_eau; ?>%; color: white;">
<!-- affichage de la hauteur et du volume en m*3 et en L -->
<?php  
  echo  "Hauteur d'eau :" .($hauteur_eau/100)." m " ;
  echo "<br>";
  echo  "Volume en m*3 :" .($volume)." m3" ;
  echo "<br>";
  echo  "Volume en L :" .number_format($litre)." L" ;
  echo "<br>";
  echo "Pourcentage d'eau:"  .($pourcentage_hauteur_eau)."%" ;

?>
</div>
</div>

senddata.php

<?php
require 'data.php';
// connexion avec la db
$konek = mysqli_connect("host", "username", "password", "dbname");


//lire la valeur de hauteur envoyée par nodemcu
$hauteur = $_GET["hauteur"]; 
//sauvegarder et update la hauteur dans la table
mysqli_query($konek, "UPDATE tb_réservoir SET hauteur='$hauteur'");
        
?>

This is the part likely not working

either this was not executed correctly

$sql = mysqli_query($konek, "SELECT * FROM tb_réservoir");
$data = mysqli_fetch_array($sql);

➜ mysqli_query returns false if it failed, so check that

or there is no column called hauteur in the database.

Note that your table name includes an accent, depending on the back end database and how it's configured (mysqli_set_charset)

you can add to your script

printf("Jeu de caractère initial : %s\n", $mysqli->character_set_name());

to see what's currently being used.

and you might have to escape the parameters with mysqli_real_escape_string()

I removed the accent in the table and i checked again the column 'hauteur' in tb-reservoir.
But the result is still the same.

did you do this?

like that? there are more errors

<?php
require 'data.php';


// lire le contenu du tableau des réservoirs
$sql = mysqli_query($db,"SELECT * FROM tb_reservoir");
$data = mysqli_fetch_array($sql);



//lire la valeur de hauteur envoyée par nodemcu
 $hauteur = $_GET['hauteur']; 

//sauvegarder et update la hauteur dans la table
mysqli_query($db,"UPDATE tb_reservoir SET hauteur='$hauteur'");

printf("Jeu de caractère initial : %s\n", $mysqli->character_set_name());
mysqli_real_escape_string();
mysqli_query returns false;


?>

I was more thinking of something like

$sql = mysqli_query($db, "SELECT * FROM tb_reservoir");
if ($sql) {
    $data = mysqli_fetch_array($sql);
} else {
    echo "Erreur lors de la requête SELECT : " . mysqli_error($db);
}

ou

if (isset($_GET['hauteur'])) {
    $hauteur = $_GET['hauteur'];
    echo "La hauteur reçue est : " . $hauteur;
    // OK ....

} else {
    echo "erreur de lecture sur hauteur.";
}

etc ➜ testez les appels pour voir ce qui ne fonctionne pas

<?php
require 'data.php';


// lire le contenu du tableau des réservoirs
if (isset($_GET['hauteur'])) {
    $hauteur = $_GET['hauteur'];
    echo "La hauteur reçue est : " . $hauteur;

//sauvegarder et update la hauteur dans la table
mysqli_query($db,"UPDATE tb_reservoir SET hauteur='$hauteur'");

    // OK ....

} else {
    echo "erreur de lecture sur hauteur.";
}



?>
![erreur de lecture|690x345](upload://mPkIhF8VzrcRjIhI1t7xtSeJWTU.png)

message: erreur de lecture sur hauteur

So this was the right guess

Explore manually on your server what’s going on