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.