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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 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

  8. #8
    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.

  9. #9
    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

  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
    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.

  11. #11
    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) ?

  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
    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??

  13. #13
    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
    je sais que le nul de sécu est meiux masi on m'a donné comme consigne d'utiliser le mail qui n'est pas censé changer(il est sur intranet)

    J'ai fait ce que tu as dit et voila ce qui arrive :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

    A la ligne 1 j'ai juste ca:
    <?php
    session_start();
    ?>

    Pour info je me suis renseigné sur les bases de données mais je n'ai vu que très peu d'exemple avec les update(le reste je gère)et a chaque fois il étaient simple.

  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
    c'est bon ca marche enfin!!
    Merci a tous

+ Répondre à la discussion
Cette discussion est résolue.

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