deux boutons qui changent de couleur independamment

Eléphant du PHP | 335 Messages

11 juil. 2005, 10:23

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

Eléphant du PHP | 335 Messages

11 juil. 2005, 11:16

personne pour m'aider?

suis-je assez clair?

Eléphant du PHP | 335 Messages

11 juil. 2005, 14:17

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...

Eléphant du PHP | 138 Messages

14 juil. 2005, 22:37

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
Il y a des gens qui ont une bibliothèque comme des eunuques ont un harem (V. Hugo)

Eléphant du PHP | 335 Messages

18 juil. 2005, 09:57

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

Eléphant du PHP | 138 Messages

19 juil. 2005, 01:15

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:
Il y a des gens qui ont une bibliothèque comme des eunuques ont un harem (V. Hugo)