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

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

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

Message le Dim Aoû 12, 2007 15:04

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: Tout sélectionner
<?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: Tout sélectionner
<?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.


biscuit
WRInaute impliqué
WRInaute impliqué
 
Messages: 519
Inscription: 5 Juin 2006

Message le Lun Aoû 13, 2007 9:54

C'est pas là le prob ?

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


par
Code: Tout sélectionner
$sql = "UPDATE activites SET annee = '".$_POST['annee'][$i]."',couple_mois = '".$_POST['couple'][$i]."' WHERE ID_ACTIV = '".$_POST['idact'][$i]."'";

hx.jonathan
WRInaute discret
WRInaute discret
 
Messages: 162
Inscription: 2 Mar 2005

Message le Lun Aoû 13, 2007 10:28

Salut,

Merci beaucoup. Tu as résolu mon problème. Excellent. C'était trop bête !!!

Encore merci.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités