IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] modifier une base


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 141
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    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

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    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) ???

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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) ;
    	}

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    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.

  7. #7
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 141
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    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é

  9. #9
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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 127
    Par défaut
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = mysql_query($rqt) or die(mysql_error()) ;
    et dit nous si il y a une erreur

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    aucune erreur mais toujours de mofif dans la table salarie

  11. #11
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 141
    Par défaut
    essay de faire un :pour voir ce que ca va faire et ensuite testes la requete sur le requeteur

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    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

  13. #13
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    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.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    le Type est bien bien affiché idem avec $NBJour

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    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.

  16. #16
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Tu es vraiment sûr que tes requêtes sont bonnes (en faisant echo $rqt; puis en testant le résultat dans phpmyadmin) ?

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    il y avait alors un message d'erreur : Unknown column 'Conge_Id' in 'where clause'

    j'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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??

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    quelle est la structure de ta table salarié?

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 46
    Par défaut
    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

  20. #20
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [SQL] Modifier une table HTML et mettre à jour la base
    Par bart64 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/11/2007, 18h06
  2. Réponses: 8
    Dernier message: 23/03/2005, 19h28
  3. Réponses: 7
    Dernier message: 05/01/2005, 13h43
  4. [C#] Modifier une base de donnée
    Par Macintoc dans le forum Accès aux données
    Réponses: 15
    Dernier message: 03/06/2004, 11h49
  5. Réponses: 2
    Dernier message: 26/02/2003, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo