UPDATE TABLE MYSQL !

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

UPDATE TABLE MYSQL !

Message le Lun Aoû 06, 2007 14:27

Bonjour à tous,

J'ai déjà cherché sur le site d'autre sujets identique mais aucun ne réponds bien à mon prblème.

J'ai une page d'affichage d'enregistrement et une page de mise à jour. La page d'affichage fonctionne bien.

La page de mise à jour par contre pose problème car elle ne prends pas en compte mes modifications que j'effectue dans le formulaire.

Voici mes deux pages.

page affichage :

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" />
          <title>Accueil</title>
          </head>
          <body>
        <?php
       
      connexion_DB('bd_club');
      $res = mysql_query('SELECT * FROM jour');
      print '<form method="POST" action="check.php">';

$cpt=0;
while($row = mysql_fetch_array($res))
{
$cpt++;
$id_jour=$row['id_jour'];
$num=$row['num'];
$nom=$row['nom'];

print "<input type='hidden' name='IDJour' size='1' value='$id_jour'></input>";
print "<input type='text' name='numJour'".$cpt." size='1' value='$num'></input>";


echo "<br />";
}
echo "<br />";
print '<div align="center"><input type="submit" name="envoie" VALUE="Confirmer la validation du traitement"></div>';
print '</form>';

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


page de mise à jour :

Code: Tout sélectionner
<?php

   
include_once 'fonctions.php';




if(isset($_POST['numJour']))     

$numJour=$_POST['numJour'];
else      $num="";
echo $num[15];

connexion_DB('bd_club');


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

$ZeVar='numJour'.$i;
$sql = "UPDATE jour SET num = '".$ZeVar."' WHERE id_jour = '$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=02");
   



   
      
?>


Edit HawkEye: mise en forme BBcode [ code] + [/code]


D'avance merci. J'attends vos suggestions.

John


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4146
Inscription: 27 Déc 2004

Message le Lun Aoû 06, 2007 15:15

Je crois que tu devrais commencer par bien formater ton code source, du style :
Code: Tout sélectionner
if(condition){
action;
}else{
autreaction;
}

on comprendra mieux..
As tu vu que tu recupere une valeur dans une variable $numjour et que si elle n'est pas remplie tu met $num vide.. quel rapport?
Un peu de précision serait les bienvenue...


HawkEye
WRInaute accro
WRInaute accro
 
Messages: 17005
Inscription: 23 Fév 2004

Message le Lun Aoû 06, 2007 15:22

Pour commencer,

Code: Tout sélectionner
$sql = "UPDATE `jour` SET `num` = '$ZeVar' WHERE `id_jour` = '$i'";


--> fais un
Code: Tout sélectionner
<?php echo $sql; ?>
pour vérifier la query.

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

Message le Lun Aoû 06, 2007 15:32

Salut HawkEye,

Le test de ma requete est déjà fait après la requête. Tu as du la louper dans le code.

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

Message le Lun Aoû 06, 2007 15:42

Voici quelque commentaires afin que de voir plus clair:


page affichage enregistrements :

Code: Tout sélectionner
//connexion BDD
       
connexion_DB('bd_club');

// REQUETE SQL
$res = mysql_query('SELECT * FROM jour');
print '<form method="POST" action="check.php">';

//boucle

$cpt=0;
while($row = mysql_fetch_array($res))
{
$cpt++;
$id_jour=$row['id_jour'];
$num=$row['num'];
$nom=$row['nom'];

//affichage enregistrements

print "<input type='hidden' name='IDJour' size='1' value='$id_jour'></input>";
print "<input type='text' name= numJour".$cpt." size='1' value='$num'></input>";


echo "<br />";
}
echo "<br />";
print '<div align="center"><input type="submit" name="envoie" VALUE="Confirmer la validation du traitement"></div>';
print '</form>';

mysql_close();




page de mise à jour:
Code: Tout sélectionner
include_once 'fonctions.php';




if(isset($_POST['numJour']))     

$numJour=$_POST['numJour'];

//fonction connexion BDD
connexion_DB('bd_club');

//boucle

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

$ZeVar='numJour'.$i;

//instruction SQL UPDATE des champs

$sql = "UPDATE jour SET num = '".$ZeVar."' WHERE id_jour = '$i'";
echo $sql;

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

//redirection

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

[/code]

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

Message le Lun Aoû 06, 2007 15:46

Voici ce qu'il m'affiche pour ma requête SQL


Code: Tout sélectionner
UPDATE jour SET num = 'numJour1' WHERE id_jour = '1'UPDATE jour SET num = 'numJour2' WHERE id_jour = '2'UPDATE jour SET num = 'numJour3' WHERE id_jour = '3'UPDATE jour SET num = 'numJour4' WHERE id_jour = '4'UPDATE jour SET num = 'numJour5' WHERE id_jour = '5'UPDATE jour SET num = 'numJour6' WHERE id_jour = '6'UPDATE jour SET num = 'numJour7' WHERE id_jour = '7'UPDATE jour SET num = 'numJour8' WHERE id_jour = '8'UPDATE jour SET num = 'numJour9' WHERE id_jour = '9'


f_trt
WRInaute impliqué
WRInaute impliqué
 
Messages: 903
Inscription: 17 Sep 2005

Message le Lun Aoû 06, 2007 16:39

Les requetes sont bonnes, qu'est ce qui ne va pas ?
Si tu regardes dans ta table jour avec phpMyAdmin qu'as tu ?

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

Message le Lun Aoû 06, 2007 16:47

Salut,

merci pour ta réponse.

Sur la page de mon formulaire, quand je modifie un champ et que je clique sur le bouton de validation, il me remplace tous les champs par 0.

Je cherche depuis super longtemps et personne ne parvient à m'aider. Je ne suis peut être pas clair.

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2231
Inscription: 25 Oct 2005

Message le Lun Aoû 06, 2007 16:52

C'est ici ton problème :

$ZeVar='numJour'.$i;

Avec ça, tu ne récupères nullement la valeur du POST.
Enfin, ce n'est pas exactement là ton problème.

La valeur récupérée doit se trouver avec $$ZeVar (si j'ai bien compris ce que tu souhaites même si ton code n'a pas l'air de faire cela lol).

Edit : il te met 0 car c'est un champ de type int (ou numérique)

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

Message le Lun Aoû 06, 2007 16:57

Que dois-je modifier exactement a ton avis ?

John

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2231
Inscription: 25 Oct 2005

Message le Lun Aoû 06, 2007 17:05

Un vieux bout de code que j'utilisais :
Code: Tout sélectionner
   //Pour tous les champs
   for($i=0; $i <= $nbchamps; $i++){
      $num = "numJour".($i+1);
      $valeurdupost = $_POST[$num];
      $listedesposts[$i] = $valeurdupost;
   }

Tu récupères ainsi tes valeurs dans un tableau et hop tu en fais ce que tu veux.


f_trt
WRInaute impliqué
WRInaute impliqué
 
Messages: 903
Inscription: 17 Sep 2005

Message le Lun Aoû 06, 2007 18:48

Robinson a raison tu modifies juste
Code: Tout sélectionner
$sql = "UPDATE jour SET num = '".$ZeVar."' WHERE id_jour = '$i'";

par
Code: Tout sélectionner
$sql = "UPDATE jour SET num = '".$$ZeVar."' WHERE id_jour = '$i'";


Le double $$ est très très important dans ton cas car il s'agit bien de récupérer la valeur pointée par $ZeVar

A+

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

Message le Lun Aoû 06, 2007 22:37

Voilà j'ai essayé en changeant par $$ZeVar mais ça ne règle pas le problème. Voici ce qu'il me marque comme erreur :

Code: Tout sélectionner
Notice: Undefined variable: numJour1 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '1'
Notice: Undefined variable: numJour2 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '2'
Notice: Undefined variable: numJour3 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '3'
Notice: Undefined variable: numJour4 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '4'
Notice: Undefined variable: numJour5 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '5'
Notice: Undefined variable: numJour6 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '6'
Notice: Undefined variable: numJour7 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '7'
Notice: Undefined variable: numJour8 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '8'
Notice: Undefined variable: numJour9 in D:\SEERYX\absence\check.php on line 28

UPDATE jour SET num = '' WHERE id_jour = '9'





f_trt
WRInaute impliqué
WRInaute impliqué
 
Messages: 903
Inscription: 17 Sep 2005

Message le Lun Aoû 06, 2007 22:56

Alors la piste de Robinson
$sql = "UPDATE jour SET num = '".$_POST[$ZeVar]."' WHERE id_jour = '$i'";

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

Message le Lun Aoû 06, 2007 23:04

Il me met Undefined index à la place de undefined variable:

Code: Tout sélectionner

la variable numJour existe
Notice: Undefined index: numJour1 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '1'
Notice: Undefined index: numJour2 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '2'
Notice: Undefined index: numJour3 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '3'
Notice: Undefined index: numJour4 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '4'
Notice: Undefined index: numJour5 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '5'
Notice: Undefined index: numJour6 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '6'
Notice: Undefined index: numJour7 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '7'
Notice: Undefined index: numJour8 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '8'
Notice: Undefined index: numJour9 in D:\SEERYX\absence\check.php on line 27

UPDATE jour SET num = '' WHERE id_jour = '9'



UPDATE TABLE MYSQL !

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