Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Invité régulier
    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 : 7
    Points
    7

    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 :
    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 Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 615
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 5 615
    Points : 12 699
    Points
    12 699

    Par défaut

    Il suffit peut être tout simplement que tu ajoutes après la mise à jour une seconde requête telle que :
    Code :
    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
    Invité régulier
    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 : 7
    Points
    7

    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 :
    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 454
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : septembre 2004
    Messages : 3 454
    Points : 3 397
    Points
    3 397

    Par défaut

    Bonjour,

    A part avec une requête "SELECT", je ne vois pas !
    Par principe, je ne réponds pas aux messages URGENT.
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
    Pas de questions techniques en MP.

  5. #5
    Invité régulier
    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 : 7
    Points
    7

    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 :
    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 454
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : septembre 2004
    Messages : 3 454
    Points : 3 397
    Points
    3 397

    Par défaut

    Re,

    A mon avis, il faut exécuter les reqêtes
    Code :
    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
    .....
    Par principe, je ne réponds pas aux messages URGENT.
    Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
    Pas de questions techniques en MP.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro Alain
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    5 615
    Détails du profil
    Informations personnelles :
    Nom : Homme Alain
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 5 615
    Points : 12 699
    Points
    12 699

    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 :
    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
    Invité régulier
    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 : 7
    Points
    7

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •