Problème affichage valeur sur site web

Résolu
Amos54 -  
 Utilisateur anonyme -
Bonjour,
Je suis actuellement en terminal STI2D et je devais faire un site web qu devais afficher des variables récupérés sur une base de données.

Tous ce passais bien quand tout à coups mon site web affiche mon Auto incrément partout comme ceci :

Numéro de la dernière ligne de la BDD: 1534
Date de la dernière ligne de la BDD: 1534
Stock du trémie: 1534 PLEIN
Stock de gobelet: 1534 PLEIN
Niveau d'eau: 1534 PLEIN
Porte de la machine: 1534 OUVERTE

Avec mon code :

LA BASE DE DONNEES :

<?php

//Connexion au serveur MySQL si la connexion échoue il sera impossible de se connecter au serveur.
mysql_connect("127.0.0.1", "root", "") or die(mysql_error());

//Sélection de la base de données si la selection est inéxistante il sera impossible de se connecter a la base de données.
mysql_select_db('projet_db') or die(mysql_error());

//Requete de récuperation des variables de la base de données.
//MACHINE 1
$variable_de_la_BDD_auto_incrementer = mysql_query("SELECT ID FROM projet_table");

$variable_de_la_BDD_PORTE = mysql_query("SELECT C_PORTE FROM projet_table");

$variable_de_la_BDD_GOBLET = mysql_query("SELECT C_GOBLET FROM projet_table");

$variable_de_la_BDD_TREMIS = mysql_query("SELECT C_TREMIS FROM projet_table");

$variable_de_la_BDD_EAU = mysql_query("SELECT C_EAU FROM projet_table");

$variable_de_la_BDD_DATE = mysql_query("SELECT DATE FROM projet_table");

?>

LE PROGRAMME :

<?php

$auto_incremente = mysql_num_rows($variable_de_la_BDD_auto_incrementer);
$date = mysql_num_rows($variable_de_la_BDD_DATE);
$capteur_de_la_tremis = mysql_num_rows($variable_de_la_BDD_TREMIS);
$capteur_de_goblet = mysql_num_rows($variable_de_la_BDD_GOBLET);
$etat_du_servomoteur = mysql_num_rows($variable_de_la_BDD_PORTE);
$capteur_de_niveau_eau = mysql_num_rows($variable_de_la_BDD_EAU);

print "<br >";print "<br >";
print "<font size='28'>Machine MOSELLE</font><br >";
print "<u> Numero de la derniere ligne de la BDD:</u> $auto_incremente<br >";
print "<u> Date de la derniere ligne de la BDD:</u> $date<br >";

//*******************************************************************************************
echo "<u> Stock du trémie:</u>";
print " $capteur_de_la_tremis";
if( $capteur_de_la_tremis <= 18 ){$valeur_de_la_tremis_sur_le_web = " VIDE";}
else{$valeur_de_la_tremis_sur_le_web = " PLEIN";}
print $valeur_de_la_tremis_sur_le_web;
echo "<br />";
//*******************************************************************************************
echo "<u> Stock de goblet:</u>";
print " $capteur_de_goblet";
if( $capteur_de_goblet <= 0 ){$valeur_du_capteur_de_goblet_sur_le_web = " VIDE";}
else{$valeur_du_capteur_de_goblet_sur_le_web = " PLEIN";}
print $valeur_du_capteur_de_goblet_sur_le_web;
print "<br >";
//*******************************************************************************************
echo "<u> Niveau d'eau:</u>";
print " $capteur_de_niveau_eau";
if( $capteur_de_niveau_eau = 1 ){$valeur_du_capteur_de_niveau_eau_sur_le_web = " PLEIN";}
else{$valeur_du_capteur_de_niveau_eau_sur_le_web = " VIDE";}
print $valeur_du_capteur_de_niveau_eau_sur_le_web;
echo "<br />";
//*******************************************************************************************
echo "<u> Porte de la machine:</u>";
print " $etat_du_servomoteur";
if( $etat_du_servomoteur = 0 ){$etat_du_servomoteur_sur_le_web = " FERMER";}
else{$etat_du_servomoteur_sur_le_web = " OUVERTE";}
print $etat_du_servomoteur_sur_le_web;
?>

Je suis désespérer aidez moi svp c'est pour mon BAC !!!

4 réponses

  1. Utilisateur anonyme
     
    salut,

    tu indique :

     $capteur_de_la_tremis = mysql_num_rows($variable_de_la_BDD_TREMIS);
     $capteur_de_goblet = mysql_num_rows($variable_de_la_BDD_GOBLET);
     $etat_du_servomoteur = mysql_num_rows($variable_de_la_BDD_PORTE);
     $capteur_de_niveau_eau = mysql_num_rows($variable_de_la_BDD_EAU); 
    


    c'est à dire que tu récupère le nombre d'occurence de ta table qui en toute logique, s'il n'y a pas eu de DELETE, est égal au dernier incrément utilisé.

    à mon avis c'est "mysql_num_rows" qui n'est pas adapté

    ce que je veux dire par là, c'est que ton code et ton affichage correspondent bien, mais c'est peu être pas l'information que tu souhaitais.

    naga
    0
  2. Pitet Messages postés 2845 Statut Membre 530
     
    Salut,

    Le numéro affiché correspond au nombre de ligne dans ta table.

    Il y a effectivement plusieurs erreurs :

    Requête sql SELECT : tu utilises une requêtes pour chaque paramètre ce qui n'est pas du tout optimisé. Tu peux tout simplement récupérer toutes les infos en une seule requête comme ceci :
    mysql_query("SELECT ID, C_PORTE, C_GOBLET, C_TREMIS, C_EAU, DATE FROM projet_table")

    La fonction mysql_query ne retourne pas directement la valeur de tes champs, elle te renvoie une ressource que tu dois parcourir pour récupérer tes infos.

    La fonction mysql_num_rows te renvoie le nombre de ligne de ta requête (d'où le fait que tu vois ce nombre partout).

    Pour toute cette partie concernant la BDD, je t'invite à reprendre un tutoriel récent, si possible en évitant d'utiliser les fonctions mysql_* qui sont obsolètes et ne devrait plus être utilisé. Préfère PDO ou Mysqli (ce dernier ressemble beaucoup aux fonctions mysql_*)

    Bonne journée
    0
  3. Amos54
     
    Merci pour les infos, même mon prof n'as pas trouvé au bouts de 4 semaines ou je l'ai eu 9h00 par semaines... mdr

    Je répond quand tout fonctionne ! :)
    0
    1. Utilisateur anonyme
       
      ahahah ca serai pas un développeur windev à la base par hasard ? ^^ (ne lui dis pas, il risquerai de mal le prendre ^^)
      0
    2. Amos54
       
      Si si ! xD
      Mais je n'ais toujours pas reussi, je cherche coment afficher mes valeus, mais je n'y arrive pas du tout ... :3

      Mon probleme est la je croit:

      $auto_incremente_3 = mysql_fetch_assoc($variable_de_la_BDD_auto_incrementer_3);
      $date_3 = ($variable_de_la_BDD_DATE_3);
      $capteur_de_la_tremis_3 = ($variable_de_la_BDD_TREMIS_3);
      $capteur_de_goblet_3 = ($variable_de_la_BDD_GOBLET_3);
      $etat_du_servomoteur_3 = ($variable_de_la_BDD_PORTE_3);
      $capteur_de_niveau_eau_3 = ($variable_de_la_BDD_EAU_3);

      Je sais pas quoi mettre à la place de "mysql_fetch_assoc" pour afficher ma variable ...
      0
    3. Utilisateur anonyme
       
      Tu ne lis pas le résultat de ton association.

      while ($row = mysql_fetch_assoc($result)) {
         echo $row["userid"];
         echo $row["fullname"];
         echo $row["userstatus"];
      }
      


      source : https://www.php.net/manual/fr/function.mysql-fetch-assoc.php

      je te conseil de lire, tu devrais comprendre.

      Pour faire simple, mysql_fetch_assoc te renvoi une liste d'objet de type tableau, indexé par le nom de la colonne retourné par ta requête. Dans l'exemple du dessus pas exemple, il y a eu un
      select userid,fullname,userstatus
      effectué.

      dis moi si je suis pas clair.

      naga
      0
    4. Utilisateur anonyme
       
      ah par contre, comme l'a dit Pitet :

      Préfère PDO ou Mysqli (ce dernier ressemble beaucoup aux fonctions mysql_*)


      si c'est ton prof qui vous a dis d'utiliser
      mysql_fetch_assoc
      , tu pourrai presque (presque) lui demander s'il fait encore des réserves de nourriture pour l'hiver !
      nan plus sérieusement, cette méthode est aujourd'hui obsolète et il est conseillé d'utiliser les nouvelles méthodes (tu as l'avertissement sur mon lien qui te l'indique)
      0
  4. Amos54
     
    Alors pour que ça fonctionne j'ai fais:

    <?php
    $mysqli = new mysqli("127.0.0.1", "root", "", "projet_db");

    /* Vérification de la connexion */
    if (mysqli_connect_errno()) {
    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    exit();
    }

    $query = "SELECT * FROM projet_table_3 ORDER by ID LIMIT 3";
    $result = $mysqli->query($query);

    // Tableau numérique
    $row = $result->fetch_array(MYSQLI_NUM);

    //Fermeture de la connexion
    $mysqli->close();

    ?><?php

    print "<br >";print "<br >";
    print "<font size='28'>Machine VOSGES</font><br ><br >";
    echo "<u> Date du relever: </u>"; echo $row[5]. "<br>";

    //TREMIS
    echo "<u> Stock du trémie: </u>";
    echo $row[3];
    if( $row[3] >= 18 ){$valeur_de_la_tremis_sur_le_web_3 = " VIDE";}
    else{$valeur_de_la_tremis_sur_le_web_3 = " PLEIN";}
    echo $valeur_de_la_tremis_sur_le_web_3;
    echo "<br />";
    //GOBELET
    echo "<u> Stock de goblet: </u>";
    echo $row[2];
    if( $row[2] <= 10 ){$valeur_du_capteur_de_goblet_sur_le_web_3 = " VIDE";}
    else{$valeur_du_capteur_de_goblet_sur_le_web_3 = " PLEIN";}
    echo $valeur_du_capteur_de_goblet_sur_le_web_3;
    print "<br >";
    //EAU
    echo "<u> Niveau d'eau: </u>";
    echo $row[4];
    if( $row[4] = 1 ){$valeur_du_capteur_de_niveau_eau_sur_le_web_3 = " PLEIN";}
    else{$valeur_du_capteur_de_niveau_eau_sur_le_web_3 = " VIDE";}
    echo $valeur_du_capteur_de_niveau_eau_sur_le_web_3;
    echo "<br />";
    //PORTE
    echo "<u> Porte de la machine: </u>";
    echo $row[1];
    if( $row[1] = 0 ){$etat_du_servomoteur_sur_le_web_3 = " FERMER";}
    else{$etat_du_servomoteur_sur_le_web_3 = " OUVERTE";}
    echo $etat_du_servomoteur_sur_le_web_3;
    ?>

    Voila merci pour les petite info ! 1 mois que je cherche sans succes ! MERCI à vous !;)
    0
    1. Utilisateur anonyme
       
      si ce n'est "?><?php", ca semble correcte si tu n'attends bien qu'un seul résultat (une seule "ligne").

      Tu peux maintenant proposer à ton prof de donner le cours à sa place ^^
      0