Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2006, 11h34   #1
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
Par défaut [SQL] modifier une base

Bonjour,je voudrais modifier 2 tables de ma base de données avec une condition en plus.
Voici le code de la page php ou on peut accepter de modifier la base:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<TR><td align=middle>Mr <?php echo $donnees['Salarie_Nom']; ?></td>
  <td align=middle><?php echo $donnees['Conge_DateDeb']; ?></td>
 <td align=middle><?php echo $donnees['Conge_DateFin'];?></td>
 <td align=middle><? echo $donnees['Conge_Type'];?></td>
 <td align=middle><? echo $donnees['Salarie_NbRTT_Poss_Mois'] - $donnees['Salarie_NbRTT_Mois'];?></td>
 <td align=middle><FORM action=ValideConge.php method=post>
      <P align=center>
          <SELECT name=ValiderConge> 
          <OPTION value=validé selected>Accepter</OPTION> 
          <OPTION value=Refusé>Refuser</OPTION>
          </SELECT>
          <input type="hidden" name="Conge_NbJour" value="<?php echo $donnees['Conge_NbJour']; ?>" />
          <input type="hidden" name="Conge_Type" value="<?php echo $donnees['Conge_Type']; ?>" />
      <input type="hidden" name="Conge_Id" value="<?php echo $donnees['Conge_Id']; ?>" />
<INPUT type=submit value="Valider"></P>
      <P></P></FORM></td></SELECT>
Et ici le code qui récupere l'état et qui modifie la base

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
 
$Etat = $_POST['ValiderConge'];
$congeId = strtolower(addslashes($_POST['Conge_Id']));
$Type = strtolower(addslashes($_POST['Conge_Type']));
$NbJour = strtolower(addslashes($_POST['Conge_NbJour']));
$req = "UPDATE conge 
               SET Conge_Etat='$Etat' 
                               WHERE Conge_Id = '$congeId'";
 
  $result = mysql_query($req) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
 
if ($Type = 'RTT' )
        {
                $rqt = "UPDATE salarie SET Salarie_NbRTT_Mois = Salarie_NbRTT_Mois + '$NbJour'
                              WHERE Conge_Id = '$congeId'";
                $res = mysql_query($rqt) ;
 
        }
 
 
else if ($Type = 'Conge' )
        {
                $rqt = "UPDATE salarie SET Salarie_NbConge_Mois = Salarie_NbConge_Mois + '$NbJour'
                              WHERE Conge_Id = '$congeId'";
                $res = mysql_query($rqt) ;
        }
J'explique ce que je veux: je voudrais que lorsque l'on accepte une demande,le nombre de congé pris dans le mois(Conge_NbRTT_Mois ou Conge_NBConge_Mois) se mette à jour en utilisant le champ duree qui indique le nombre de jours de la demande

j'ai aussi essayé avec ca:
Code :
1
2
3
4
5
6
7
8
9
10
 
$Etat = $_POST['ValiderConge'];
$congeId = strtolower(addslashes($_POST['Conge_Id']));
$Type = strtolower(addslashes($_POST['Conge_Type']));
$NbJour = strtolower(addslashes($_POST['Conge_NbJour']));
$req = "UPDATE conge, salarie
               SET Conge_Etat='$Etat', Salarie_NbRTT_Mois = Salarie_NbRTT_Mois + '$NbJour'
                               WHERE Conge_Id = '$congeId' and conge.Conge_Salarie_Email=Salarie.Salarie_Email";
 
  $result = mysql_query($req) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Meme si vous n'arrivez pas a changer mon code pouvez vous me dire si il est possiible de modifier des tables différentes en meme temps?

Merci de votre aide et n'hésitez pas a me demander d'autres explications si ce n'est pas clair!
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 15h58   #2
Membre du Club
 
Développeur informatique
Inscription : août 2004
Messages : 136
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 136
Points : 52
Points : 52
Envoyer un message via MSN à Zen_Fou
conseil, si tu peux utiliser dreamweaver pour developper, fais le. ca pourrait t'aider à bien faire la distinction entre les différent élément de ton code.

Code :
1
2
3
4
 
$req = "UPDATE conge 
          SET Conge_Etat='$Etat' 
          WHERE Conge_Id = '$congeId' "; //je prend cette requete en exemple
je pense que c'est dans tes requetes qu'il y a erreur. il faut que tu concataines tes requetes. les simples cotes ne traitent pas les variables ce qui fait que si tu affiches ta requete, c a d, faire un
tu obtiendras "UPDATE conge SET Conge_Etat='$Etat' WHERE Conge_Id = '$congeId' " sans que les variables ne soient traité.

Code :
1
2
3
4
 
$req = "UPDATE conge 
          SET Conge_Etat=' ".$Etat. " ' 
          WHERE Conge_Id = '".$congeId." ' ";
testes ca pour voir mais fais la meme pour le reste
Zen_Fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 16h23   #3
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
cette requete marche déja,la mise a jour dans la table congé est effectué correctement c'est celle pour la table salarié qui ne marche pas
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 16h30   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
conseil, si tu peux utiliser dreamweaver pour developper, fais le. ca pourrait t'aider à bien faire la distinction entre les différent élément de ton code.



Je crois que la syntaxe marche même si c'est vrai que c'est pas joli joli...

Sinon pour comparer c'est == et surtout pas = qui est l'affectation, à mon avis c'est peut-être une raison pour laquelle ça fait pas ce que tu veux

Pour le double UPDATE j'ai encore jamais vu ça mais c'est peut-être faisable (ça m'étonnerait mais bon...), pourquoi tu le fais pas en 2 fois (1 UPDATE par table) ???
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 16h42   #5
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
meme en mettant == ca ne marche pas
pour dreamweaver je ne peux pas l'utiliser
Enfin,j'ai essayé en faisant 1 update par table maais ca ne marche pas non plus :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
$Etat = $_POST['ValiderConge'];
$congeId = strtolower(addslashes($_POST['Conge_Id']));
$Type = strtolower(addslashes($_POST['Conge_Type']));
$NbJour = strtolower(addslashes($_POST['Conge_NbJour']));
$req = "UPDATE conge 
               SET Conge_Etat='$Etat' 
			       WHERE Conge_Id = '$congeId'";
 
  $result = mysql_query($req) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
 
if ($Type == 'RTT' )
	{
		$rqt = "UPDATE salarie SET Salarie_NbRTT_Mois = Salarie_NbRTT_Mois + '$NbJour'
		              WHERE Conge_Id = '$congeId' and conge.Conge_Salarie_Email==Salarie.Salarie_Email";
		$res = mysql_query($rqt) ;
 
	}
 
 
else if ($Type == 'Conge' )
	{
		$rqt = "UPDATE salarie SET Salarie_NbConge_Mois = Salarie_NbConge_Mois + '$NbJour'
		              WHERE Conge_Id = '$congeId' and conge.Conge_Salarie_Email==Salarie.Salarie_Email";
		$res = mysql_query($rqt) ;
	}
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 16h47   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Comme l'a déjà dit Zen_fou, fais un echo de tes requêtes et teste les ensuite dans phpmyadmin pour voir si elles sont bonnes.
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 16h52   #7
Membre du Club
 
Développeur informatique
Inscription : août 2004
Messages : 136
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 136
Points : 52
Points : 52
Envoyer un message via MSN à Zen_Fou
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($Type == 'RTT' )
        {
                $rqt = "UPDATE salarie SET Salarie_NbRTT_Mois = Salarie_NbRTT_Mois + ' ".$NbJour." '
                              WHERE Conge_Id = ' " .$congeId. " ' ";
                $res = mysql_query($rqt) ;
 
        }
 
 
else if ($Type == 'Conge' )
        {
                $rqt = "UPDATE salarie SET Salarie_NbConge_Mois = Salarie_NbConge_Mois + ' " .$NbJour. " '
                              WHERE Conge_Id = ' " . $congeId. " ' ";
                $res = mysql_query($rqt) ;
        }
testes avec ca.

j'ai corrigé ton code. je pense que ca passera et si c'est le cas. tentes de prendre en compte ce qu'on te dit parce qu' un ' = ' dans une condition ' if ', je vois pas ce que ca vient faire. et puis je t'ai parlé de la concaténation mais tu n'en as pas tenu compte meme après la requete pour "congé"

voila
Zen_Fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 17h03   #8
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
ca ne marche toujours pas,j'ai bien changé toutes les requetes en faisant des concaténations.
La table congé se modifie mais pas salarié
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 17h05   #9
Expert Confirmé
 
Avatar de Maxoo
 
Maxime Pasquier
Expert PHP
Inscription : novembre 2004
Messages : 2 126
Détails du profil
Informations personnelles :
Nom : Maxime Pasquier
Âge : 28
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Expert PHP
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2004
Messages : 2 126
Points : 2 602
Points : 2 602
essaie avec
Code :
$res = mysql_query($rqt) or die(mysql_error()) ;
et dit nous si il y a une erreur
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur.
Mon espace Développez : mes Créations.


Rencontre & Carte des Membres de Developpez.com, version 3.0
Maxoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 17h21   #10
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
aucune erreur mais toujours de mofif dans la table salarie
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2006, 18h18   #11
Membre du Club
 
Développeur informatique
Inscription : août 2004
Messages : 136
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 136
Points : 52
Points : 52
Envoyer un message via MSN à Zen_Fou
essay de faire un :pour voir ce que ca va faire et ensuite testes la requete sur le requeteur
Zen_Fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2006, 10h42   #12
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
J'ai essayé avec des echo
il n'ya aucune erreur mais les requetes utilisées pour la table salarié n'affiche rien.Je pense donc qu'on entre pas dans la condition
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2006, 10h53   #13
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par popline7
J'ai essayé avec des echo
il n'ya aucune erreur mais les requetes utilisées pour la table salarié n'affiche rien.Je pense donc qu'on entre pas dans la condition
Fais un echo $type alors.
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2006, 11h01   #14
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
le Type est bien bien affiché idem avec $NBJour
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2006, 10h13   #15
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
j'ai réussi a rentré dans la condition(en remplacant RTT par rtt) mais le problème est toujours la que ce soit avec un update multitable ouavec 2 update.
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2006, 10h20   #16
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Tu es vraiment sûr que tes requêtes sont bonnes (en faisant echo $rqt; puis en testant le résultat dans phpmyadmin) ?
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2006, 10h20   #17
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
il y avait alors un message d'erreur : Unknown column 'Conge_Id' in 'where clause'

j'ai remplacé
Code :
1
2
3
4
 
$rqt = "UPDATE salarie SET Salarie_NbRTT_Mois = Salarie_NbRTT_Mois + ' ".$NbJour." '
                              WHERE Conge_Id = ' " .$congeId. " ' ";
                $res = mysql_query($rqt) or die(mysql_error()) ;
par
Code :
1
2
3
4
 
 
                $rqt = "UPDATE salarie SET Salarie_NbRTT_Mois = Salarie_NbRTT_Mois + ' ".$NbJour." '   ";
                $res = mysql_query($rqt) or die(mysql_error()) ;
la colonne NbJour se modifie enfin mais toutes les lignes se modifient aussi puiqu'il n'y a pas de where.
savez vous cu qu'il faut mettre comme condition a la place de conge_Id??
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2006, 10h24   #18
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
quelle est la structure de ta table salarié?
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2006, 10h34   #19
Invité de passage
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 3
Points : 3
table salarie
Salarie_Email varchar primary key
Salarie_Nom varchar
salarie_prenom varchar
Salarie_DateNaissance date
Salarie_NumSecu int
Salarie_NbRTT_Poss_Mois int
Salarie_NbRTT_Mois int
Salarie_NbConge_Poss int
Salarie_NbConge int
Salarie_DateEmbauche int
Salarie_Acces_id varchar foreign key
Salarie_IdPoste int
salarie_password int
popline7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2006, 10h34   #20
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Bah voilà le message d'erreur est très explicite, la colonne incriminée n'existe pas dans ta table...
Encore une erreur de majuscules ???


Edit : j'ai l'impression que tu es complètement paumé dans ta base entre les différentes tables, je suppose que la clé de la table salarié c'est le numéro de secu, donc pour mettre à jour cette table tu as besoin de le récupérer pour identifier le salarié, alors je sais pas ce que viens faire conge_id là-dedans...

Edit2 : perso je vois pas non plus à quoi ça sert de préfixer tous les champs de ta table par le nom de celle-ci (à part allonger le code et augmenter le risque d'erreur de frappe), de plus chose plus grave il est impératif de rester cohérent dans sa démarche (et pas mettre des fois des majuscules, des fois pas). Un peu de rigueur ferait le plus grand bien.
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h14.


 
 
 
 
Partenaires

Hébergement Web