Condition d'une valeur dans un tableau

Résolu
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
- 2 nov. 2016 à 08:49
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
- 14 nov. 2016 à 18:29
Bonjour,
Bonjour,
J'ai une plusieurs valeurs (nombre) dans une colonne de mon table dans la BDD.
Et je voudrais qu'on m'alerte si un de ce valeur est inférieur ou égal à un nombre donnée par exemple 3.
Quelqu'un a une idée parce que la j'ai rien à écrire.
Merci
A voir également:

3 réponses

nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
2 nov. 2016 à 14:27
Salut,

Deux solution : soit via des trigers lors d'insert/update, soit un processus qui tournera en arrière plan qui fera les vérif.

naga
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

2 nov. 2016 à 14:36
Est ce que vous pouvez un peu l’éclaircir parce que j'ai rien capté
0
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
2 nov. 2016 à 15:16
En gros il n existe pas de petit nain magique à qui dire "tiens si y a ca, dis moi" (ou peu être chez les quelques entreprises qui sont bien avancé en ia).

Là aujourd hui, si tu veux savoir cette info tu vas faire un select dans ta bdd , et donc le but est de l automatiser.
Pour l automatiser tu peux soit passer par des trigger qui seront déclenché soit lors de l insertion, soit lors de la mise à jours des données (ou les deux), ou alors avoir un processus (exe en tache planifié, service, ou autre) qui fera ce select et renverra l information.

Vu que ta demande est dans la section php, ce processus serai donc à la demande (lors de la navigation) et affichera les résultats de la requête. et là encore plein de formes et possibilités disponibles.

En fait pour faire plus clair, il faut que tu donnes plus d'info, au minimum:

- Quelle est la base de données ? (sql, mysql, informix, des fichiers, etc etc.)
- Comment l information devra elle etre transmise? (pageweb à la demande, email, lumière qui clignote à l entrepot, etc etc.)

Et bien sûr on ne fera que te donner des pistes (par exemple dans ma réponse précédente tu aurai pu chercher ce qu est un trigger), et une fois que tu auras trouvé la solution que tu veux mettre en place et que tu auras développé quelque chose, si tu bloque/a des erreurs/etc, tu pourras faire des demandes ici en exposant correctement ce que tu cherche à faire, ce que tu as fais, sur quoi ca repose (structures de tables, technologies utilisées etc) pour obtenir de l aide spécifique.

naga
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

3 nov. 2016 à 11:29
Je m'explique
Tout d'abord j'utilise une BDD SQL
J'ai cette affichage comme à l'image ci-dessous.
Ce que vous voyez la c'est une affichage de mon table nommé divers de ma BDD
Dans mon projet, j'ai fait un etat qui affiche les listes de mes tables dans un tableau et dans un deuxieme colonne de mon tableau, je dois afficher l'etat de stock.
Par exemple pour la table divers, je dois verifier si un de nombres de ces donnée sur l'image est inferieur ou egal à 5
S'il y a un de ce nombre est inferieur 5, ca doit afficher dans mon etat sur la ligne divers dans mon tableau qu'il y a un article qui va être epuisé

0
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
Modifié par nagaD.scar le 3/11/2016 à 11:54
Ok donc dans ce cas le plus simple est, lors de l implémentation du tableau (je vais supposer que c'est en php), tu vas simplement devoir rajouter un test sur le nombre.

Je vais supposer que tu as une variable array associatif (qui sera implémenté grace à ton select) :
$array = array(
    "Stylo" => "20",
    "Cahier" => "3",
    "Regle" => "7"
);


que l on va parcourir via un foreach :
foreach ($array as $key => $value) {
.
.
.
}


On va donc afficher le contenu de cette manière:

echo '<table>';
echo '  <tr>';
echo '   <th>Libelle</th>';
echo '   <th>Nombre</th>';
echo '  </tr>';
foreach ($array as $key => $value) {
 echo '  <tr>';
 echo '   <td>'.$key.'</td>';
 echo '   <td>'.$value.'</td>';
 echo '  </tr>';
}
echo '</table>'



Enfin, si on souhaite mettre en avant une valeur < 5 , on va rajouter le test suivant à la création du tr:

echo '  <tr'.($value<5 ? ' bgcolor="#FF0000"' : '' ).'>';


ou celui ci qui fera strictement la même chose mais sera peu être plus facile a lire pour toi:


if($value<5){
        echo '  <tr bgcolor="#FF0000" >';

} else {
 echo '  <tr>';
}


(le fond de la ligne sera en rouge)

et donc le code complet sera :

$array = array(
    "Stylo" => "20",
    "Cahier" => "3",
    "Regle" => "7"
);
echo '<table>';
echo '  <tr>';
echo '   <th>Libelle</th>';
echo '   <th>Nombre</th>';
echo '  </tr>';
foreach ($array as $key => $value) {
 echo '  <tr'.($value<5 ? ' bgcolor="#FF0000"' : '' ).'>';
 echo '   <td>'.$key.'</td>';
 echo '   <td>'.$value.'</td>';
 echo '  </tr>';
}
echo '</table>';


que tu devra bien sûr adapter en fonction de ton code.

naga
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
> nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021

3 nov. 2016 à 12:06
Pardon j'ai encore une question parceque je suis encore un debutant en php
Voici mon code pour afficher le tableau ci dessus

<?php
//Selction des données
$sql = "SELECT * FROM `divers` ";

$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

//Initialisation
$i = 1;

//Boucle
while($res = mysql_fetch_array($req))
{
if($i%2==0){
$bgcolor = "#F0F0F0";
}
else{
$bgcolor = "lavender";
}

$libelle = $res['libelle'];

$nombre = $res['nombre'];

//Affichage

echo"<tr bgcolor = $bgcolor>";

echo"
<td align='center'><span class='Style8'>$libelle</span></td>

<td align='center'><span class='Style8'>$nombre</span></td>

";
$i++;

}
?>
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

3 nov. 2016 à 12:07
Et comment l'adapter avec votre reponse parce que je me debute en php et je le connais pas
0
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
3 nov. 2016 à 12:20
avant la ligne


	echo"<tr bgcolor = $bgcolor>";



rajoutes:

if($nombre < 5 ) {
	$bgcolor = "#FF0000";
}



mais là c est pas débutant en php, c'est débutant en algo ...

naga

PS : Evite les " * " pour tes select, mieux vaut nommer les colonnes:

$sql = "SELECT libelle,nombre FROM divers ";
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
> nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021

3 nov. 2016 à 12:45
Ca marche mais c'est pas ce que je voudrais. Cette methode verifie ligne par ligne du tableau
Ce que je voulais c'est une resultat en gros c'est à dire en bas du tableau j'aimerai afficher une phrase par exemple un des articles de ce table va être epuisé. Et cette phrase s'affiche uniquement si un des nombres des libellés d'article est inferieur à 5 par exemple
0
jordane45
Messages postés
35785
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
358
7 nov. 2016 à 17:59
Bonjour,

Si c'est un avertissement global que tu veux.. il te suffit de faire une requête avec un where
SELECT *
FROM tatable
WHERE tonchamp < 5

Si la requête retourne un ou plusieurs résultats... c'est qu'en effet il y a des lignes inférieur à 5 dans ta base.


NB: Attention.. tu utilises l'ancienne extension de mysql considérée comme obsolète.
Je t'invite vivement à passer à mysqli ou PDO
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top




.
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

7 nov. 2016 à 18:11
Pardon mais vous n'avez pas compris ma question
Avec la requete que tu m'avait proposé tout à l'heure ca n'affiche que les nombres inferieur à 5 qui est dans ma table mais c'est pas ce que je voulais.
Tout d'abord je dois afficher toutes mes données dans ma table(comme je l'avais fait)
Ensuite après l'affichage, je voulais avoir cette resultat:
si un ou plusieurs des nombres affichée dans le tableau est inferieur à 5, il m'affiche par exemple une phrases "un de valeurs est inferieur à 5". Sinon elle m'affiche "le nombre dans le tableau est clean"
0
jordane45
Messages postés
35785
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
358 > solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

7 nov. 2016 à 23:23

Pardon mais vous n'avez pas compris ma question

Si parfaitement....

Tu as deux façons de faire :
Soit tu fais deux requêtes (une pour afficher tes données et une pour voir si il y a des valeurs inférieur à 5 )

Soit, tu ne fais qu'une seule requête (pour afficher les données) et dans la boucle qui parcoure tes données tu mets une variable à true ou tu l'incrémentes si il y a des valeurs inférieur à 6

Quoi qu'il en soit, tant que tu utilises l'ancienne extension mysql... je ne te donnerai pas de code.
0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
> jordane45
Messages postés
35785
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022

8 nov. 2016 à 15:20
Vu que mon projet est à 80% d'être terminé, je peux faire une marche arrière parce que c'est à rendre d'ici lundi.
SVP, juste une petite coup de pousse mais à la prochaine je vous promet que j'utiliserai le nouveau code extension mysql
0
jordane45
Messages postés
35785
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
358 > solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018

8 nov. 2016 à 15:26
Ce n'est pas compliqué ...

Dans ta boucle (celle qui te sert à afficher les données)
Tu ajoutes une variable qui s'incrémente à chaque fois qu'il y a une valeur <5
un truc du genre :
$nbtruc = 0;

while($res = mysql_fetch_array($req))
{
  $libelle = $res['libelle'];	
  $nombre = (float)$res['nombre'];

 //on incrémente la valeur si plus petit que 5
 if($nombre< 5 ){
  $nbtruc++;
 }

 // le reste de ton code


} // fin de ta boucle

//affichage
if($nbtruc> 0){
 echo " Ton message ....";
}


0
solomonn
Messages postés
20
Date d'inscription
dimanche 15 février 2015
Statut
Membre
Dernière intervention
26 juillet 2018
> jordane45
Messages postés
35785
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022

14 nov. 2016 à 18:29
Merci beaucoup pour votre aide parce que c'est resolu
0