Page 1 sur 1

deux boutons qui changent de couleur independamment

Posté : 11 juil. 2005, 10:23
par Justone
Bonjour

Ce code me permet d'afficher une tache (enregistrer dans ma bdd) puis un bouton, une autre tache et un bouton, etc...
Lorsque l'utilisteur clic sur le bouton si le statut (enregistrer dans ma bdd) est a valide(vert) il passe a invalide(rouge) et s'il est a invalide(rouge) il passe a valide(vert).
mysql_select_db("arnis01"); 
	if (isset($_GET['id'])){
		$requete = "SELECT statut FROM liste WHERE id='".$_GET['id']."'";
		$execution  = mysql_query($requete) or die( 'Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		while ($result = mysql_fetch_array($execution)) {
			if ($result['statut'] == 'invalide') {
				$requete1 = "UPDATE liste SET statut='valide' WHERE id='".$_GET['id']."'";
				$execution1  = mysql_query($requete1) or die( 'Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
			else {
				$requete2 = "UPDATE liste SET statut='invalide' WHERE id='".$_GET['id']."'";
				$execution2  = mysql_query($requete2) or die( 'Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	
	$str_requete = "SELECT id,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 "<form action='yearly.php?id=$a_result[id]' method='post'>";
			echo "<br><br>";
			echo "<b>".$a_result["tache"]."</b>"; 
			echo "<br>";
			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'>"; 
			echo"</form>";
Maintenant je voudrais afficher plusieurs boutons a chaque tache (par exemple 2) alors voici ce que j'ai fais :
//le début du code est le meme que precedemment
		while ($a_result = mysql_fetch_array($o_result)) {
			echo "<form action='six-monthly.php?id=$a_result[id]' method='post'>";
			echo "<br><br>";
			echo "<b>".$a_result["tache"]."</b>"; 
			echo "<br>";
			if ($a_result['statut'] == 'valide') { 
				for($i = 1; $i <= 2; $i++) {
					echo "<input name='valid' type='submit' value='Six-Month $i' style='background-color:#3CB371'>"; 
			else  { 
				for($i = 1; $i <= 2; $i++) {
					echo "<input name='valid' type='submit' value='Six-Month $i' style='background-color:#FFA07A'>"; 
			echo"</form>";
J'ai bien deux boutons, mais le problème est que lorsque je clique sur l'un des deux boutons, ce sont les deux qui changent de couleur.
Or je voudrais que ce soit seulement le bouton sur lequel on clique.

Comment faire pour différencier les deux boutons??

Merci pour votre aide

Posté : 11 juil. 2005, 11:16
par Justone
personne pour m'aider?

suis-je assez clair?

Posté : 11 juil. 2005, 14:17
par Justone
Mais pourquoi avoir déplacé mon topic?!! :evil:

Ca n'a rien a voir avec le javascript!! :evil: :evil:

Plutot que de le déplacer, j'aurais préféré que qqn m'aide...

Posté : 14 juil. 2005, 22:37
par Axel
Salut

bon il ne faut pas s'énerver, si j'ai bien compris tu veux afficher 2 boutons avec des couleurs qui permutent ton code est presque bon sauf que :
//le début du code est le meme que precedemment
        while ($a_result = mysql_fetch_array($o_result)) {
            echo "<form action='six-monthly.php?id=$a_result[id]' method='post'>";
            echo "<br><br>";
            echo "<b>".$a_result["tache"]."</b>";
            echo "<br>";
            if ($a_result['statut'] == 'valide') {
                    echo "<input name='valid' type='submit' value='Six-Month1' style='background-color:#3CB371'>";
                    echo "<input name='valid' type='submit' value='Six-Month2' style='background-color:#FFA07A'>";
            else  {
                    echo "<input name='valid' type='submit' value='Six-Month1' style='background-color:#FFA07A'>";
                    echo "<input name='valid' type='submit' value='Six-Month2' style='background-color:#3CB371'>";
            echo"</form>";
Il faut créer les 2 boutons et faire la permutation à la main, si je puis m'exprimer ainsi. :lol:

et on pourrait même optimiser le code en faisant:
//le début du code est le meme que precedemment
        while ($a_result = mysql_fetch_array($o_result)) {
            echo "<form action='six-monthly.php?id=$a_result[id]' method='post'>";
            echo "<br><br>";
            echo "<b>".$a_result["tache"]."</b>";
            echo "<br>";
            $vert = '#3CB371' ;
            $rouge = '#FFA07A' ;
            if ($a_result['statut'] == 'valide') {
               $coul_sixth_month1 = $vert ;
               $coul_sixth_month2 = $rouge ;
            }else  {
               $coul_sixth_month1 = $rouge ;
               $coul_sixth_month2 = $vert ;
             }
echo "<input name='valid' type='submit' value='Six-Month1' style='background-color:".$coul_sixth_month1."'>";
echo "<input name='valid' type='submit' value='Six-Month2' style='background-color:".$coul_sixth_month2."'>";
            echo"</form>";
de cette façon là tes couleurs sont définies au même endroits, si tu veux les changer, tu ne modifie que la valeur de $rouge ou $vert
Et même tu peux rajouter de nouvelles couleurs si ça te chante sans avoir à te taper quatre lignes à chaque fois.

Voilà, j'espere que cela te va :P

Posté : 18 juil. 2005, 09:57
par Justone
Merci bcp pour ta réponse Axel!

Je voudrais que lorsque je clic sur un bouton celui change de couleur.
Donc je peux très bien avoir les deux boutons verts ou les deux boutons rouges.

Comment faire?

Merci

Posté : 19 juil. 2005, 01:15
par Axel
il suffit que sur tes boutons tu mettes une fonction javascript qui change la couleur, du style:
echo "<input name='valid' id ='valid1' type='submit' value='Six-Month2'  onclick= 'javascript: change_coul();' style='background-color:".$coul_sixth_month2."'>"; 
et la fonction javascript sera de la forme, et je dis bien de la forme car:
-elle ne fonctionne que sous mozilla et équivalent. Je n'ai pas trouvé l'équivalent de getAttribute pour IE (désolé mais il faudra chercher)
function change_coul(){
document.getElementById('valid1').getAttributeNode("style").nodeValue= 'background-color:green;';
}
J'ai essayé et ça marche mais la difficulté vient surtout du fait que l'information de couleur se trouve dans style. Il n'existe pas d'atttribut couleur pour les input, dommage!!! :cry:

Une solution plus simple serait je pense de partir sur un bouton image et de changer la source de l'image lors d'un click.

Si j'ai plus d'info..... :wink: