Précédent   Forum du club des développeurs et IT Pro > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/12/2012, 01h02   #1
Nuks1304
Invité régulier
 
Homme
Webdesigner
Inscription : 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
Nuks1304 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 11h33   #2
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 877
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
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 : 4 877
Points : 11 777
Points : 11 777
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 14h50   #3
Nuks1304
Invité régulier
 
Homme
Webdesigner
Inscription : 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
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"

%>
Nuks1304 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 14h57   #4
pc75
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 3 094
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 3 094
Points : 3 287
Points : 3 287
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.
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 15h22   #5
Nuks1304
Invité régulier
 
Homme
Webdesigner
Inscription : 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
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

%>
Nuks1304 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 15h55   #6
pc75
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 3 094
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 3 094
Points : 3 287
Points : 3 287
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.
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2012, 16h05   #7
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 877
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
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 : 4 877
Points : 11 777
Points : 11 777
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
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2012, 19h05   #8
Nuks1304
Invité régulier
 
Homme
Webdesigner
Inscription : 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
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
Nuks1304 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


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


 
 
 
 
Partenaires

Hébergement Web