bouton change de couleur en fonction bdd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : bouton change de couleur en fonction bdd

par Justone » 09 juil. 2005, 16:22

Merci pour ta réponse.

J'ai créer deux images et fais ce que tu m'as conseillé.
Mais mon problème principal est que lorsque je clique sur le premier bouton et bien ce sont les deux qui changent de couleur!
Or je voudrais que ce soit seulment le bouton sur lequel on clic qui change de couleur!

Cmt faire?

Merci

par Vince » 08 juil. 2005, 18:22

Pour faire l'inverse avec le bouton il suffit de tester le statut de l'enregistrement et de le changer. Donc tu crée une requete qui te renvoie le statut de ta tache (qui correspond a l'id renvoyée dans l'url). Si la statut est valide, tu le passe a invalide et s'il est invalide tu le passe a valide.

Pour ton probleme de deuxieme bouton, je te conseille vivement de virer le formulaire et de creer deux image boutonvert.gif et boutonrouge.gif et a la place de tes <input> faire des

Code : Tout sélectionner

<a href='six-monthly.php?id=$a_result[id]'><img src='boutonvert.gif'></a>
ou pareil avec bouton rouge.

ca sera deja beaucoup plus clair car je ne vois pas l'utilité d'un formulaire dans ton code, alors qu'une simple image avec un lien suffit et c'est bien plus simple.

:wink:

par Justone » 08 juil. 2005, 11:31

Merci pour ta réponse.

J'ai regarder ton code hier soir et je l'ai testé ce matin, j'ai du modifier une ou deux petites choses mais rien de bien méchant!! lol

Pour répondre a ta question, oui j'aimerais bien savoir comment faire pour que lorsque je clic sur un bouton vert, il devienne rouge.

Merci bcp

par Vince » 07 juil. 2005, 21:56

Je te conseille de tout mettre sur la meme page, si ce n'est deja fait.

Il faut que chaque passage de la boucle gère un formulaire qui renvoie une variable dans l'url.

Je suppose que tu as un champ ID dans ta table liste ou un champ unique qui identifie l'enregistrement ? Sinon crée en un. ici pour l'exemple on va l'appelé ID. C'est cet ID qui va servir a definir quel enregestrement doit changer dans la base.

Et voici comment j'aurai vu ton code
<?
require_once('../Connections/arnis01.php'); 
mysql_select_db("arnis01");   
// on teste si un ID est contenu dans l'url
if(isset($_GET['id']))
	{
	// si oui on met le statut a valide
    $requete = "UPDATE liste SET statut='valide' WHERE id='".$_GET['id']."'"; 
    $execution = mysql_query($requete) or die( 'Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
	}
// On fais la requète en prenant compte de l'ID
$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()); 
// la boucle qui affiche les taches et les boutons
while ($a_result = mysql_fetch_array($o_result)) 
	{
	// on ouvre le formulaire qui renvoie l'url qui contient l'ID de l'enregistrement en cours.
	echo "<form name='valid' type='hidden' value='true' action='yearly.php?id=$a_result[id]'>";  
    echo "<b>".$a_result["tache"]."</b>"; 
    // On teste le statut pour la couleur du bouton
	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'>"; 
       	} 
	// on oublie pas de fermer le formulaire.
	echo"</form>";
    }
?>
Maintenant j'ai une question ?

lorsque tu clique sur un bouton vert, veux tu qu'il devienne rouge ? donc qu'il passe a invalide ?

EDIT;

Autre chose, j'ai supposer ici que tout ton code se situait sur la page "yearly.php" si ce n'est pas le cas, il n'y a pas grand chose a modifier pour resoudre le probleme.

par Justone » 07 juil. 2005, 21:17

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

par Vince » 07 juil. 2005, 19:10

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

par Cyrano » 07 juil. 2005, 19:05

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

par Vince » 07 juil. 2005, 19:04

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.

par Justone » 07 juil. 2005, 18:46

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

par Vince » 07 juil. 2005, 18:39

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.

par Justone » 07 juil. 2005, 18:30

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());
}

par Vince » 07 juil. 2005, 18:20

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

par Justone » 07 juil. 2005, 18:10

cette ligne ne marche pas

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

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

par Vince » 07 juil. 2005, 17:29

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 ?

par Justone » 07 juil. 2005, 17:23

merci pour ta réponse

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