Liste déroulant mise à jour table sql

WRInaute discret
Bonjour,

J'ai deux pages php. Une servant à afficher des enregistrement. L'autre servant à mettre à jour ces enregistrements.

Mon problème se situe au niveau de la liste déroulante au début de la page affichage. Celle-ci me sert à afficher ce que je souhaite. Je peux sélectionner ce que je veux mais par contre, lorsque je clique sur le bouton de mon formulaire "enregistrer modification", les infos s'enregistrent dans la BDD mais en réalité il remplace un enregistrement par un autre. C'est assez compliqué à expliquer. Le plus simple c'est que vous essayer le script. Là je ne parviens pas à trouver la faille. De plus, j'ai essyé en enlevant la liste déroulante pour voir ce qui posait problème et sans elle, tout va pour le mieux. Tout s'enregistre bien et se modifie comme il faut dans la BDD. Mon problème se situe donc bien au niveau de cette liste .


Merci pour votre aide


AFFICHAGE :

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>Janvier/Fevrier</option>
        <option>Fevrier/Mars</option>
        <option>Mars/Avril</option>
    </select>
    <input type="submit" value="OK"/>
</form>
	  
<?php

if (isset($_POST['mon_champ'])){

$mon_champ=$_POST['mon_champ'];

}
else
{
$mon_champ="Janvier/Fevrier";
}

		 
//connexion BDD 
connexion_DB('bd_club');

// REQUETE SQL 
$res2 = mysql_query('SELECT * FROM activites WHERE couple_mois="'.$mon_champ.'"');

print '<form method="POST" action=check2.php>';

//boucle 

$cpt=0;
while($row2 = mysql_fetch_array($res2))
{
$cpt++;

$ID_ACTIV=$row2['ID_ACTIV'];
$annee=$row2['annee'];
$couple_mois=$row2['couple_mois'];

//affichage enregistrements
print "<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.
print "<input type='hidden' name='ID_ACTIV' size='1' value='$ID_ACTIV'></input>";
print "<input type='text' name= 'annee".$cpt."' size='5' value='$annee'></input>";
print "<input type='text' name= 'couple_mois".$cpt."' size='10' value='$couple_mois'></input>";



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

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

MISE A JOUR :


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

connexion_DB('bd_club');

if (isset($_POST['annee'])&&($_POST['couple_mois'])){

$annee=$_POST['annee'];
$couple_mois=$_POST['couple_mois'];

}
$essai=$_POST['cpt'];
echo $essai;

for($i=1; $i<$essai+1;$i++){

$VarDynAnnee='annee'.$i;
$VarDynCouple='couple_mois'.$i;


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

 
echo "<br/>".$sql;

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

}


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


	
		
?>

Edit Onthisplanet : molo sur les maj dans le titre, merci
 
WRInaute discret
En fait, j'ai beau supprimmer le contenu d'une zone de texte, quand je clique sur enregistrer kes modifications, il m'actualise la page mais je remarque que les données ne changent pas.
 
WRInaute passionné
Pas très logique tout ça, quand tu enregistres les modifications, il doit te réafficher seulement ta première page avec le simple formulaire statique.

Vérifies toutes tes variables dans check2.php sans faire la redirection.


Edit :
ton <input type='hidden' name='ID_ACTIV' size='1' value='$ID_ACTIV'> sert à quoi ??? tu ne récupères pas la valeur... tu fais donc des modifs au hasard dans la base. (pas au hasard mais de 1 à X)
 
WRInaute passionné
c'est quand même assez brouilon

la première chose à faire est un print du tableau $_POST dans la page qui reçoit les données

tous les input suivant la balise de fermeture form ne seront pas envoyés

rog
 
Discussions similaires
Haut