Page 1 sur 2

bouton change de couleur en fonction bdd

Posté : 07 juil. 2005, 16:36
par Justone
Bonjour

Je m'explique, j'ai une bdd avec un champ statut qui est soit a valide soit a invalide (invalide par defaut).
Lorsque je clique sur un bouton, certains de ces enregistrements passent a valide.

Je voudrais savoir comment faire pour que si mon statut est a invalide le bouton soit rouge et lorsque le statut est a valide le bouton soit vert??

Suis je assez clair?

Merci pour votre aide...

Posté : 07 juil. 2005, 16:47
par zzzzZZZZ
d'emblée:
il faudrait lire la valeur du champs "statut"
suivant sa valeur on applique un style CSS au bouton pour choisir sa couleur rouge ou vert.....

Posté : 07 juil. 2005, 16:50
par Justone
oui c'est ce que je compte faire mais la question que je me pose c'est

comment lire le statut et lui dire qu'en fonction de ca on applique une couleur?

Posté : 07 juil. 2005, 17:06
par Vince
Salut, bein lorsque tu as fait ta requête tu teste le statut comme zzzzZZZZ l'a expliqué. Voici le code.
if ($data['statut'] == 'valide')
   {
   echo"<INPUT TYPE='button' VALUE='Bouton' style='background-color:green'>";
   }
else
   {
   echo"<INPUT TYPE='button' VALUE='Bouton' style='background-color:red'>";
   }
Vas voir du côté des tutos alsace création pour voir comment afficher tes boutons en couleur.

;-)

EDIT: je t'ai rajouté les affichages du bouton

Posté : 07 juil. 2005, 17:23
par Justone
merci pour ta réponse

mais comment faire pour que ce soit le bouton que j'ai cliqué précedemment qui change de couleur?

Posté : 07 juil. 2005, 17:29
par Vince
Bein théoriquement, en cliquant sur le bouton, ta page se recharge, la requete se fait donc a nouveau, le champ statut ayant changé le bouton change de couleur.

Comment fonctionne ton script ? Que se passe t'il exactement lorsque tu clique sur le bouton ?

Posté : 07 juil. 2005, 18:10
par Justone
cette ligne ne marche pas

if ($data['statut'] == 'valide')

question stupide : c'est $data que je dois mettre dans mon code??

Posté : 07 juil. 2005, 18:20
par Vince
bein en fait $data correspond a ta requete, mais sans un bout de code ca va etre difficile de t'aider. Peut tu mettre le code ou se situe ton ou tes boutons et le code de ta requete (qui va chercher ton champ statut dans ta base).

Posté : 07 juil. 2005, 18:30
par Justone
Voici mon code :
echo "<form name='valid' type='hidden' value='true' action='yearly.php'>";
	require_once('../Connections/arnis01.php');
	mysql_select_db("arnis01");  
	$str_requete = "SELECT tache FROM liste WHERE periodicite='Yearly'";
	$o_result = mysql_query($str_requete) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	while ($a_result = mysql_fetch_array($o_result)) 
	{
		echo "<b>".$a_result["tache"]."</b>"; 
	if ($data['statut'] == 'valide') { 
   		echo"<input name='valid' type='submit' value='Year 2005' style='background-color:#3CB371'>"; 
   	} 
	else  { 
   		echo"<input name='valid' type='submit' value='Year 2005' style='background-color:#FFA07A'>"; 
   	} 
	}
	
if($valid=="Year 2005") 
{ 
	require_once('../Connections/arnis01.php');
	mysql_select_db("arnis01");  
	$requete = "UPDATE liste SET statut='valide' WHERE periodicite='Yearly'"; 
	$execution = mysql_query($requete) or die( 'Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}

Posté : 07 juil. 2005, 18:39
par Vince
il faut selectionner le champ statut dans ta requete et mon $data correspond en fait a ton $a_result comme ceci.

echo "<form name='valid' type='hidden' value='true' action='yearly.php'>"; 
    require_once('../Connections/arnis01.php'); 
    mysql_select_db("arnis01");   
    $str_requete = "SELECT tache,statut FROM liste WHERE periodicite='Yearly'"; 
    $o_result = mysql_query($str_requete) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    while ($a_result = mysql_fetch_array($o_result)) 
    { 
        echo "<b>".$a_result["tache"]."</b>"; 
    if ($a_result['statut'] == "valide") { 
           echo"<input name='valid' type='submit' value='Year 2005' style='background-color:#3CB371'>"; 
       } 
    else  { 
           echo"<input name='valid' type='submit' value='Year 2005' style='background-color:#FFA07A'>"; 
       } 
    } 
     
if($valid=="Year 2005") 
{ 
    require_once('../Connections/arnis01.php'); 
    mysql_select_db("arnis01");   
    $requete = "UPDATE liste SET statut='valide' WHERE periodicite='Yearly'"; 
    $execution = mysql_query($requete) or die( 'Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
je pense que tout devrai fonctionner maintenant.

Posté : 07 juil. 2005, 18:46
par Justone
ah merci bcp vince ca fonctionne!!!

mais j'ai encore un pti souci
en fait j'affiche une tache qui est dans ma base puis un bouton, une autre tache et un bouton,....

et lorsque je clic sur un bouton ce sont tous les boutons qui passent en vert alors que je voudrais que ce soit seulement celui que je clique.

est ce possible? comment faire?

merci

Posté : 07 juil. 2005, 19:04
par Vince
Donc la boucle de ta requete affiche plusieurs résultats ? Si tout les boutons passent au vert, c'est que tout tes champs statut sont passé valide puisque la boucle passe en revue chaque enregistrement. tu me suis ? Vérifie les taches dans ta base pour voir si le statut correspond aux couleurs des boutons.

parceque ici
$requete = "UPDATE liste SET statut='valide' WHERE periodicite='Yearly'";
tu passes tout tes champs dont la periodicite est "yearly" a valide.

et ici
$str_requete = "SELECT tache,statut FROM liste WHERE periodicite='Yearly'"; 
tu selectionne les memes que tu viens de passer a valide pour les afficher.

Posté : 07 juil. 2005, 19:05
par Cyrano
...Vas voir du côté des tutos alsace création ...
Quelque chose me dit que tu n'as pas du les visiter beaucoup toi-même... :-k

Posté : 07 juil. 2005, 19:10
par Vince
...Vas voir du côté des tutos alsace création ...
Quelque chose me dit que tu n'as pas du les visiter beaucoup toi-même... :-k
Si je les ai visité et j'admet que je n'était pas tout a fait certain que ca y soit. C'est d'ailleur pour cela que j'ai édité et rajouter l'affichage des boutons avec les styles :wink:

Autant pour moi.

Posté : 07 juil. 2005, 21:17
par Justone
Vince tu as raison lorsque je clique sur un bouton, ma requete passe a valide toutes les taches correspondant a 'Yearly' donc par conséquent tous les boutons.

Comment faire pour que lorsque je clic sur un bouton, le statut passe a valide juste pour la tache correspondante?

Merci encore