Problème affichage valeur sur site web

Résolu/Fermé
Amos54 - 14 mai 2014 à 13:55
 Utilisateur anonyme - 15 mai 2014 à 16:41
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 !!!


A voir également:

4 réponses

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
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 14/05/2014 à 14:28
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
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
Utilisateur anonyme
14 mai 2014 à 15:30
ahahah ca serai pas un développeur windev à la base par hasard ? ^^ (ne lui dis pas, il risquerai de mal le prendre ^^)
0
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
Utilisateur anonyme
14 mai 2014 à 16:04
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
Utilisateur anonyme
14 mai 2014 à 16:06
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
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
Utilisateur anonyme
15 mai 2014 à 16:41
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