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

Langage SQL Discussion :

Ajouter une condition IF dans un UPDATE ?


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2012
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Ajouter une condition IF dans un UPDATE ?
    Bonjour tout le monde,
    Je me tourne vers vous pour vous demander votre aide.

    Dans le code si dessous j'aimerai rajouter une condition IF dans l'instruction Update, mon bute étant de vérifier que et que si c'est le cas alors je le redirige pour la suppression.

    Pour l'instant le code fonctionne parfaitement, mais il me manque cette partie et j'ai regardé pendant des heures sur internet mais sans succès

    Je vous en remercie d'avance

    Cordialement
    Emilio

    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
     
    Session("EffacerUnProduit") = request.querystring("del1")
     
    DSN_BASE="DRIVER={Microsoft Access Driver (*.mdb)};Driverld=25;" & "DBQ=" & "E:\vhosts\www.test.com\db\test.mdb"
    Set Connatt = Server.CreateObject("ADODB.Connection")
    Connatt.Open DSN_BASE
     
    Set Rsatt= Server.CreateObject("ADODB.Recordset")
     
    Rsatt.ActiveConnection = Connatt
    Rsatt.Source = "UPDATE Panier SET quantite = quantite -1 WHERE ID = '" + Session("SIDPanier") + "' and article = '" + Session("EffacerUnProduit") + "'"
    Rsatt.Open
     
    Response.Redirect "panier.asp"
    set Rsatt=nothing

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Il suffit peut être tout simplement que tu ajoutes après la mise à jour une seconde requête telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE
    FROM    Panier
    WHERE   ID      = :SIDPanier
        AND article = :EffacerUnProduit
        AND quantite <= 0
    ;
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2012
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Coucou
    Merci pour votre réponse, le code fonctionne cependant il me manque un petite bout de code ASP ou SQL que je ne sais pas comment implémenter dans le code.

    Car il faut quand même que je récupère la valeur du champ "quantite" dans une variable ou d'une autre façon pour faire une redirection IF la valeur est <= 0 je sais faire la manipulation en ASP mais pas en SQL enfin imbriquer les 2

    donc quelque chose dans le genre

    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
    <%
    Session("EffacerUnProduit") = ""
    Session("EffacerUnProduit") = request.querystring("del1")
    
    DSN_BASE="DRIVER={Microsoft Access Driver (*.mdb)};Driverld=25;" & "DBQ=" & "E:\vhosts\www.test.com\db\test.mdb"
    Set Connatt = Server.CreateObject("ADODB.Connection")
    Connatt.Open DSN_BASE
    
    Set Rsatt= Server.CreateObject("ADODB.Recordset")
    
    Rsatt.ActiveConnection = Connatt
    Rsatt.Source = "UPDATE Panier SET quantite = quantite -1 WHERE ID = '" + Session("SIDPanier") + "' and article = '" + Session("EffacerUnProduit") + "'"
    Rsatt.Source = "DELETE FROM Panier WHERE ID = '" + Session("SIDPanier") + "' AND article = '" + Session("EffacerUnProduit") + "' AND quantite <= 0"
    Rsatt.Open
    
    If article <= 0 then Response.Redirect "panier.asp"     <--------- ICI comment je récupère article depuis la base de donnée avec un Delete From ? Car la variable article est vide :(
    
    
    set Rsatt=nothing
    Response.Redirect "panier.asp"
    
    %>

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    A part avec une requête "SELECT", je ne vois pas !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2012
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Oui je me doutait bien aussi...

    j'essais de l’imbriquer il y a plus d'erreur mais j'ai l'impression qu'il ne prend plus en charge le DELETE et le UPDATE :/

    si vous pourriez me modifier le bout de code pour que ça marche en m’expliquant le pourquoi ça n'allait pas je vous en serait très reconnaissant, merci.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <%
    Session("EffacerUnProduit") = ""
    Session("EffacerUnProduit") = request.querystring("del1")
    
    DSN_BASE="DRIVER={Microsoft Access Driver (*.mdb)};Driverld=25;" & "DBQ=" & "D:\vhosts\www.test.com\db\test.mdb"
    Set Connatt = Server.CreateObject("ADODB.Connection")
    Connatt.Open DSN_BASE
    
    Set Rsatt= Server.CreateObject("ADODB.Recordset")
    
    Rsatt.ActiveConnection = Connatt
    Rsatt.Source = "UPDATE Panier SET quantite = quantite -1 WHERE ID = '" + Session("SIDPanier") + "' and article = '" + Session("EffacerUnProduit") + "'"
    Rsatt.Source = "DELETE FROM Panier WHERE ID = '" + Session("SIDPanier") + "' AND article = '" + Session("EffacerUnProduit") + "' AND quantite <= 0"
    Rsatt.Source = "Select * From Panier"
    Rsatt.Open
    
    
    
    do while not Rsatt.EOF
    	If	Rsatt.Fields("article").value = Session("EffacerUnProduit") and Rsatt.Fields("ID").value = Session("SIDPanier") then
    	
    			If Rsatt.Fields("article").value <= 0 then Response.Redirect "delproduit.asp?del=.asp " + Session("EffacerUnProduit") + " "
    			
    		set Rsatt = nothing
    		exit do
    	End if
      	Rsatt.Movenext
    Loop
    
    
    
    Session("EffacerUnProduit") = ""
    Session("ProdID") = ""
    
    
    Response.Redirect "panier.asp"
    set Rsatt=nothing
    
    %>

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    A mon avis, il faut exécuter les reqêtes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    .....
    Rsatt.ActiveConnection = Connatt
    Rsatt.Source = "UPDATE Panier SET quantite = quantite -1 WHERE ID = '" + Session("SIDPanier") + "' and article = '" + Session("EffacerUnProduit") + "'"
    Rsatt.Open
     
    Rsatt.Source = "DELETE FROM Panier WHERE ID = '" + Session("SIDPanier") + "' AND article = '" + Session("EffacerUnProduit") + "' AND quantite <= 0"
    Rsatt.Open
     
    Rsatt.Source = "Select * From Panier"
    Rsatt.Open
    .....

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 789
    Points
    30 789
    Par défaut
    Je disais :
    Citation Envoyé par al1_24 Voir le message
    Il suffit peut être tout simplement que tu ajoutes après la mise à jour une seconde requête telle que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE
    FROM    Panier
    WHERE   ID      = :SIDPanier
        AND article = :EffacerUnProduit
        AND quantite <= 0
    ;
    Nul besoin de faire un test pour savoir quelle requête exécuter.
    Tu commences par faire la mise à jour.
    Cas 1 : il y avait 3 produits dans le panier, il en reste 2.
    Cas 2 : il y avait 1 produit dans le panier, il n'en reste plus.
    Puis tu exécutes la requête de suppression.
    S'il reste au moins 1 produit dans le panier, la ligne n'est pas supprimée.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2012
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Super merci beaucoup à vous deux pour votre aide.

    j'ai fait comme pc75 m'a répondu est ça fonctionne impeccablement bien

    Le truc al1_24 c'est que comme je l'ai dit plus haut je savais pas comment mettre ton bout de code comme je ne suis pas a l'aise encore avec ce langage le lien de pc75 fonctionne, je ne savais pas comment placer ton bout de code que est pourtant le meme que pc75...

    Je ne savais pas que l'on pouvait mettre une autre commande Delete ou Select en dessous d'une autre... en tout cas merci.

    Cordialement
    Emilio

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

Discussions similaires

  1. Ajouter une condition pour la commande net use dans un batch
    Par killahpriest dans le forum Administration
    Réponses: 0
    Dernier message: 23/10/2014, 16h05
  2. Ajouter une condition dans une fonction
    Par le_dilem dans le forum Odoo (ex-OpenERP)
    Réponses: 1
    Dernier message: 17/03/2011, 22h00
  3. Ajouter une condition dans une fonction
    Par le_dilem dans le forum Général Python
    Réponses: 3
    Dernier message: 13/03/2011, 13h43
  4. ajouter une condition dans une formule
    Par NEC14 dans le forum Excel
    Réponses: 9
    Dernier message: 14/10/2008, 14h51
  5. comment ajouter une condition if dans code VBA
    Par misig dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 13/12/2007, 00h03

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