Condition d'une valeur dans un tableau [Résolu]

solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 2 nov. 2016 à 08:49 - Dernière réponse : solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention
- 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
Afficher la suite 

17 réponses

Répondre au sujet
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 2 nov. 2016 à 14:27
0
Utile
2
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
solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 2 nov. 2016 à 14:36
Est ce que vous pouvez un peu l’éclaircir parce que j'ai rien capté
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 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
Commenter la réponse de nagaD.scar
solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 3 nov. 2016 à 11:29
0
Utile
7
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é

solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 3 nov. 2016 à 12:07
Et comment l'adapter avec votre reponse parce que je me debute en php et je le connais pas
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 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 ";
solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention > nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 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
nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 3 nov. 2016 à 13:20
avec le code actuel tu es capable d identifier les entrèes correspondantes.

La prochaine étape sera donc d'effectuer une seconde lecture du tableau [array] (ou à copier les lignes correspondantes dans un nouveau) et de créer un second tableau [HTML].

Pour être franc, vu ta demande je ne comprends pas pourquoi c'est à toi que l on a confié ce travail, car c'est vraiment très très simple ...

Bon vu que j ai un peu de temps:

 
	$arrHighLight = array();

	$sql = "SELECT * FROM `divers` ";		
	$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());		
	//Initialisation
	$i = 1;
	
	//Boucle
	echo '<table>';
	while($res = mysql_fetch_array($req))
	{
		if($i%2==0){$bgcolor = "#F0F0F0";}else{$bgcolor = "lavender";}
		$libelle = $res['libelle'];	
		$nombre = $res['nombre'];
		
		//On check la quantite
		if($value<5){$arrHighLight[] = $res;}
	
		//Affichage
		echo"<tr bgcolor = $bgcolor>";			
		echo "<td align='center'><span class='Style8'>$libelle</span></td>";
		echo "<td align='center'><span class='Style8'>$nombre</span></td>";
		echo "</tr>";
		$i++;	
	}
	echo '</table>';
	
	echo '<table id="Stock">';
	foreach($arrHighLight as $arrVar)
	{
		echo"<tr>";			
		echo "<td align='center'><span class='Style8'>".$arrVar['libelle']."</span></td>";
		echo "<td align='center'><span class='Style8'>".$arrVar['nombre']."</span></td>";
		echo "</tr>";
	}
	echo '</table>';
solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention > nagaD.scar 4148 Messages postés samedi 8 septembre 2007Date d'inscription 13 décembre 2017 Dernière intervention - 7 nov. 2016 à 17:52
Avec cette methode foreach, ca affiche les nombres inferieur à 5 mais c'est pas ce que je voulais.
Ce que je voulais c'est 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"
Commenter la réponse de solomonn
jordane45 19268 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention - 7 nov. 2016 à 17:59
0
Utile
5
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




.
solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 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"
jordane45 19268 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention > solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 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.
solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention > jordane45 19268 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention - 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
jordane45 19268 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention > solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention - 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 ....";
}


solomonn 19 Messages postés dimanche 15 février 2015Date d'inscription 14 novembre 2016 Dernière intervention > jordane45 19268 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 16 décembre 2017 Dernière intervention - 14 nov. 2016 à 18:29
Merci beaucoup pour votre aide parce que c'est resolu
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.