Problème mise à jour BDD et affichage résultat après UPDATE

WRInaute discret
Bonjour,


Cela fait plus d'une semaine que je cherche la solution à mon problème.

Voici mon problème. J'ai une page qui sert à afficher des enregistrements de ma bdd dans un formulaire html, et une autre page qui sert à faire un UPDATE de ces données.
La première page (avenir.php) commence avec une liste déroulante html qui me permet d'afficher différents listes d'enregistrements. En fonction de ce choix, je préremplis mon formulaire html. En dessous de cette première page j'ai un bouton qui me permet d'enregistrer les modifications apportées. Ce bouton renvoi vers ma deuxième page (check3.php) qui est en gros une reuqete SQL d'UPDATE.

PROBLEME :

Quand je clique sur le bouton "enregistrer les modifications" qui se situe en bas de "avenir.php", il fait appel à check3.php pour faire l'UPDATE sql et me redirige vers "avenir.php" pour actualiser les infos.

C'est là qu'est mon problème. En fait, il n'enregistre pas les choses comme il faut. Enfin, parfois oui, parfois non. Et parfois il me recopie plusieurs fois les mêmes enregistrements.. Bref, je ne comprends pas du tout ce qu'il se passe.

Voici mes deux pages:
"avenir.php":
Code:
<?php
include_once 'fonctions.php';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		  <link rel="stylesheet" type="text/css" href="styles_club.css" />
          </head>
          <body>
<form method="post">
    <select name="mon_champ">
        <option value="Janvier/Fevrier">Janvier/Fevrier</option>
        <option value="Fevrier/Mars">Fevrier/Mars</option>
        <option value="Mars/Avril">Mars/Avril</option>
    </select>
    <input type="submit" value="OK"/>
</form>
<?php
$mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : '';

connexion_DB('bd_club');

switch($mon_champ) {
 
case 'Janvier/Fevrier':
$res2 = mysql_query('SELECT * FROM activites WHERE couple_mois=\'Janvier/Fevrier\'');
break;

case 'Fevrier/Mars':
$res2 = mysql_query('SELECT * FROM activites WHERE couple_mois=\'Fevrier/Mars\'');
break;

case 'Mars/Avril':
$res2 = mysql_query('SELECT * FROM activites WHERE couple_mois=\'Mars/Avril\'');
break; 
default:
$res2 = mysql_query('SELECT * FROM activites WHERE couple_mois=\'Janvier/Fevrier\'');
}

echo "bonjour";


// REQUETE SQL 


echo '<form method="post" action=check3.php>';

//boucle 

$cpt=1;
while($row = mysql_fetch_array($res2))
{

$ID_ACTIV=$row['ID_ACTIV'];
$annee=$row['annee'];
$couple=$row['couple_mois'];


//affichage enregistrements

echo  "<input type='text' name='idact[$cpt]' size='1' value='$ID_ACTIV'></input>";
echo  "<input type='text' name= 'annee[$cpt]' size='5' value='$annee'></input>";
echo  "<input type='text' name= 'couple[$cpt]' size='15' value='$couple'></input>";

$cpt++;
echo "<br />";
 }


echo "<input type='hidden' name='cpt' size='1' value='$cpt'></input>";// pour pouvoir récupérer la valeur de cpt pour savoir le nbr d'itérations.

 
echo "<br />";
echo  '<div align="center"><input type="submit" name="envoie" VALUE="Enregistrer les modifications"></div>';
echo  '</form>';
echo $cpt;

mysql_close();
?>
		  
		  
		  
		  </body>
		  
		  
		  </html>



"check3.php" :

Code:
<?php
include_once 'fonctions.php';

connexion_DB('bd_club');




for($i=1; $i<$_POST['cpt'];$i++){



$sql = "UPDATE activites SET annee = '".$_POST['annee'][$i]."',couple_mois = '".$_POST['couple'][$i]."' WHERE ID_ACTIV = '$i'"; 

mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());
 
echo "<br/>".$sql;

echo $i;

}

header("Location:http://127.0.0.1/absence/index.php?page=05");
?>


En espérant que quelqu'un puisse prendre mon problème au sérieux. J'en peux plus de pas avancer.

D'avance merci à tous.
 
WRInaute occasionnel
C'est pas là le prob ?

Remplacer:
Code:
$sql = "UPDATE activites SET annee = '".$_POST['annee'][$i]."',couple_mois = '".$_POST['couple'][$i]."' WHERE ID_ACTIV = '$i'";

par
Code:
$sql = "UPDATE activites SET annee = '".$_POST['annee'][$i]."',couple_mois = '".$_POST['couple'][$i]."' WHERE ID_ACTIV = '".$_POST['idact'][$i]."'";
 
Discussions similaires
Haut