Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
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 28/09/2012, 11h12   #1
mfredok
Invité régulier
 
Inscription : octobre 2010
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 42
Points : 7
Points : 7
Par défaut Compter un nombre de champs affichés

Bonjour,

Je travaille sur une boutique en ligne en ASP 3.0 et je
suis sur un pb qui parait simple mais je suis plus habitué au php qu'à l'asp.. j

Voici la problématique :
Je dois réaliser une offre promotionnelle classique du type 3 produits de même catégories achetés = 1 gratuit.

Une requête sql affiche le panier de produits sélectionnés par l'internaute avec les prix et quantités. Les produits sont différents et identifiés par un champ int dans la base de donnée.
Je dois donc compter dans la page html si plus de 3 produits de la catégorie 1 par exemple sont affichés et mettre l'un de ces produits à 0 euros.
J'ai essayé plusieurs syntaxe avec l'objet request+count mais je n' arrive pas du tout à tester cette condition.

En espérant que vous puissiez m'aider.

Merci
mfredok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2012, 13h10   #2
pc75
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 3 092
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 3 092
Points : 3 284
Points : 3 284
Bonjour,

Peux-tu nous montrer le code ASP qui affiche le contenu du panier ?
__________________
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 28/09/2012, 14h17   #3
mfredok
Invité régulier
 
Inscription : octobre 2010
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 42
Points : 7
Points : 7
Bonjour,

Tout d'abord, merci de ton aide.
Voici la page complète qui affiche le panier hormis l'appel aux fonctions de connexions et d'ajout au panier.

Ce code fonctionne très bien.

Merci beaucoup.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="content-language" content="fr" />
	<meta http-equiv="content-script-type" content="text/javascript" />
	<meta http-equiv="content-style-type" content="text/css" />
	<title>Votre panier</title>
<META NAME="description" Content="Une librairie complète proposant des livres et des guides sur les énergies renouvelables : énergie éolienne, énergie solaire, énergie hydraulique,  biogaz, biocarburants, solaire thermique, photovoltaïque, architecture bioclimatique et le développement durable.">
<META NAME="keywords" Content="">
	<meta name="author" content="" />
	<meta name="DC.Language" content="fr" />
	<meta name="DC.Publisher" content="" />
	<meta name="DC.Creator" content="" />
	<!--[if !IE]> <-->
 
	<!-- <![endif]-->
	<!--[if gte IE 6]>
	<link rel="stylesheet" type="text/css" href="/static/css/default/standard.css" media="screen, projection" title="Default" />
	<![if lte IE 7]><link rel="stylesheet" type="text/css" href="/static/css/default/ie/standard.css" media="screen, projection" title="Default" /><![endif]>
	<![endif]-->
	<link rel="stylesheet" href="/static/css/print/base.css" type="text/css" media="print" />
	<script src="/static/js/base.js" type="text/javascript"></script>
	<link rel="icon" href="/static/icons/favicon.png" type="image/png" />
    <link href="/static/css/default/standard.css" rel="stylesheet" type="text/css" />
        	<style type="text/css" title="Default" media="screen, projection">
	/* <![CDATA[ \*/
		@import "/static/css/default/standard.css";
	/* ]]> */
	.color4 {
	color: #776351;
}
            .panier {
	width: 800px;
	left: 100px;
	top: 5px;
	float: left;
	position: relative;
}
            </style>
</head>
<body class="i18n-fr">
<!--#include virtual="/head_lib.asp"-->
<p id="breadcrumbs"> <a href="librairie.asp">Accueil</a> &raquo;&nbsp;<a href="#">La librairie</a></p>
<div id="wrapper" class="by2">
<h1>&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;   Votre panier</h1>
<br />
  <div class=panier>
    <div class=inset>
      <table width="800" align="center">
        <tr>
          <th width="20%" height="31" class="color1"><font color="#FF0000">1. Panier</font></th>
          <th width="20%">2. Livraison</th>
          <th width="20%">3. Commande</th>
          <th width="20%">4. Paiement</th>
          <th width="20%">5. Validation</th>
        </tr>
      </table>
      <p align="center" > <span class="color4"> Important : si vous modifiez la quantit&eacute; de vos achats, 
 
        il faut cliquez sur</span> <span class="color1"> "Recalculer" </span><span class="color4"> <br />
        pour que la modification 
          soit prise en compte.</span></p>
      <p ><%=warning%></p>
      <table width="797">
        <tr class="even">
          <td width="249" height="20" ><b>Articles 
            dans votre panier</b></td>
          <td width="91" ><b>Prix</b></td>
          <td width="82" ><b>Quantit&eacute;</b></td>
          <td width="83" ><div align="center"><b>Total</b></div></td>
          <td width="268" >&nbsp;</td>
        </tr>
        <%
		dim total
 
 
		for i = 0 to Session("item") - 1
			sql = "select * from boutique_produits where id = " & caddy(0,i)
			set rs = OBJdbConnection.Execute(sql)
			total = total + Cdbl(rs("prix")) * caddy(1,i)
 
			Session("total") = total
 
 
 
		%>
        <tr>
          <form action="up.asp" target="_parent" method="post">
            <td height="20"><% 
			if isnull(rs("num")) <> true then 
			response.Write("<a href=""" & "revue_detail.asp?rev=" & caddy(0,i) &""">Revues n°"&rs("num")&" "&Server.htmlEncode(rs("titre"))&"</a>")		
			end if	
			if cint(rs("cat")) = 2 or cint(rs("cat")) = 3 or cint(rs("cat")) = 7 then
				response.Write("<a href=""" & "livre_detail.asp?liv=" & caddy(0,i) &""">"&Server.htmlEncode(rs("titre"))&"</a>")
			end if
			if cint(rs("cat")) = 6 then
				response.Write("<a href='promo.asp'>"&Server.htmlEncode(rs("titre"))&"</a>")
			end if
			if cint(rs("cat")) = 4  or  cint(rs("cat"))= 11 or  cint(rs("cat"))= 12  then
				response.Write("<font size=-2> "& Server.htmlEncode(rs("titre"))&"&nbsp;("&trim(Server.htmlEncode(rs("stitre")))&")</font>")
			end if
 
			%>            </td>
            <td>
              <%             
			=Server.htmlEncode(FormatNumber(rs("prix"),2))	
		     %>
			&euro;&nbsp;</td>
           <td><input name="qte" type="text" size="2" value="<%=caddy(1,i)%>" maxlength="2" <%if caddy(2,i) = 1 then response.Write("disabled") end if%> /> </td>
            <td align="right"><div align="right"><b><%=FormatNumber(rs("prix"),2)*caddy(1,i)%></b>&nbsp; &euro; </div></td>
            <td colspan="2" align="right"><input name="image" type="image" onclick="submit();" src="anims/recalculer.jpg" align="top" border="0" />
              &nbsp;<a href="suppr.asp?row=<%=i%>"><img src="/b2b/anims/supprimer.jpg" alt="" /></a></td>
            <input type="hidden" value="<%=i%>" name="row" />
          </form>
 
        </tr>
        <%
		next
		%>
        <tr class="even">
          <td height="20" colspan="6" align="right" valign="middle"><b> Total de votre commande :&nbsp;&nbsp;</b> <b><%=Server.HTMLEncode(FormatNumber(total,2))%>&euro;</b></td>
 
        </tr>
 
        <tr><td></td></tr>
        <tr align="right">
          <td colspan="6" align="center" background="776153"><br />
              <a href="<%if session("item") <> 0 then response.write("etape2.asp") else response.Write("#") end if%>"><b><font color="#776153">Terminer votre commande</font></b></a> / 
              <a href="<%Response.Write("default.asp")%>"><!--<a href="revue_som.asp">--><b><span color=colo1><font color="#776153">Continuer vos achats</font></span></b></a> (votre panier actuel sera m&eacute;moris&eacute;)<br />
              <br /></td>
        </tr>
      </table>
    </div>
  </div>
 
</div
></div><!--#include virtual="/footer_lib.asp"-->
</body>
 
 
</html>
mfredok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2012, 13h12   #4
pc75
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 3 092
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 3 092
Points : 3 284
Points : 3 284
Re,

Dans cette instruction :
Code :
1
2
 
for i = 0 to Session("item") - 1
A quoi correspond Session("item") ?
__________________
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 02/10/2012, 17h15   #5
mfredok
Invité régulier
 
Inscription : octobre 2010
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 42
Points : 7
Points : 7
Merci de ta réponse,

Comme j'ai récupéré ce code, je nage un peu..
Cela doit être le nom de la variable de session qui permet l'ajout des produits.
Je te joint le tout : au clic sur le lien , la page ajout.asp prend en paramètre
l'id du produit

Je te remercie bcp


Code :
<a href="ajout.asp?add=98">Ajouter au panier</a> </td>
page session.asp
Code :
1
2
3
4
5
6
7
8
9
<%
if not isarray(session("sol")) then
   ReDim caddy(3,1)
   session("item") = 0
else
   caddy=session("sol")
 
end if
%>

page ajout.asp
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 
 
<!--#include file="session.asp"-->
<%
dim qte
if request.form("abo")="" and request.querystring("add")= "" then
response.redirect (request.ServerVariables("HTTP_REFERER"))
end if
 
 
 
 
if request.QueryString("add")<>"" then
 
   i=cint(request.QueryString("add"))	
 
 
	for n = 0 to int(session("item"))
		if i = caddy(0,n) then
			caddy(1,n) = caddy(1,n) + 1
			qte =1
			'response.Write("[NUM:"&caddy(0,n)&"]")
			'response.Write("[QTE:"&caddy(1,n)&"]")
			'response.Write("["&session("item")&"]")
			exit for
		end if	
	next
 
 
	if qte = 0 then	
 
	   caddy(0,session("item")) = i
	   caddy(1,session("item")) = 1
	   caddy(2,session("item")) = request.QueryString("cat")
 
	   '	response.Write(caddy(0,session("item")))
		'response.Write(caddy(1,session("item")))
		'response.Write("["&session("item")&"]")
		session("item") = session("item") + 1
		redim preserve caddy(3,session("item"))
 
	end if
 
 
	session("sol") = caddy 
 
	response.Redirect(request.ServerVariables("HTTP_REFERER")) 
	'Response.AddHeader "Refresh", "10;URL=http://www.google.com/"
else
		if request.Form("abo") <> "" then
			idabo = request.Form("abo")
			tabid = split(trim(idabo), ",")
 
			for cpt = 0 to ubound(tabid)
				i = cint(tabid(cpt)) 
				for n = 0 to int(session("item"))
					if i = caddy(0,n) then
 
						caddy(1,n) = caddy(1,n) + 1
 
						qte = 1
 
						exit for
					end if	
				next
				if qte = 0 then	
 
				   caddy(0,session("item")) = i
				   caddy(1,session("item")) = 1
				   caddy(2,session("item")) = request.QueryString("cat")
 
					session("item") = session("item") + 1
					redim preserve caddy(3,session("item"))
 
				end if
 
			next
		   'response.Write(caddy(0,0)&"<br>"&caddy(1,0))
			session("sol") = caddy 
			response.Redirect(request.ServerVariables("HTTP_REFERER"))
 
		end if
end if
 
if request.Form("free") then
 
		i=cint(request.Form("free")) 
 
		if Session("free") = "" then
 
			if cint(Session("total")) >= 79 then
 
			   caddy(0,session("item")) = i
			   caddy(1,session("item")) = 1
							   caddy(2,session("item")) = 1
 
			   session("item") = session("item") + 1
				redim preserve caddy(3,session("item"))
 
				session("sol") = caddy 
			end if
 
		else
 
			for n = 0 to int(session("item"))
 
				if int(Session("free")) = caddy(0,n) then
					notadd=0
					caddy(0,n) = i 
					caddy(1,n) = 1
					caddy(2,n) = 1
					exit for
				else
					notadd = 1
				end if	
 
			next
 
			if notadd = 1 then
				response.Write("her")
				caddy(0,session("item")) = i
				caddy(1,session("item")) = 1
				caddy(2,session("item")) = 1
				session("item") = session("item") + 1
				redim preserve caddy(3,session("item"))
			end if
 
		end if
				'response.Write(Session("total"))
			'	response.Write("<br>")
			'	response.Write(Session("free"))
 
				Session("free") = i
				session("sol") = caddy 
					'response.Write(Session("free"))
					response.Redirect(request.ServerVariables("HTTP_REFERER"))			
end if
%>
mfredok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2012, 09h53   #6
pc75
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 3 092
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 3 092
Points : 3 284
Points : 3 284
Re,

Effectivement, on ne t'a pas fait un cadeau avec ce code (Beaucoup trop documenté à mon gout).

Voila peut-être un début de piste :

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
 
Set rs2 = Server.CreateObject("ADODB.Recordset")
 
for i = 0 to Session("item") - 1
    ' Compter le nombre d'articles par catégorie
    sql = "select cat, count(*) AS Nb from boutique_produits group by cat having id = " & caddy(0,i)
    set rs2 = OBJdbConnection.Execute(sql)
 
    sql = "select * from boutique_produits where id = " & caddy(0,i)
    set rs = OBJdbConnection.Execute(sql)
    total = total + Cdbl(rs("prix")) * caddy(1,i)
    Session("total") = total
 
' Chercher le nombre d'articles de la catégorie dans rs2
rs2.Movefirst
do while not rs2.EOF
   ' Si l'article à afficher = l'article de rs2 et que pour cet article la quantité est > à 1 et que la variable "Remise" concaténée avec la catégorie = False
   if rs("cat") = rs2("Cat") and rs2("Nb") > 1 and Session("Remise"<%=rs("Cat")) = False then
      Prix = "0"
      Session("Remise"<%=rs("Cat")) = true
   else
      Prix = rs("Prix")
      Session("Remise"<%=rs("Cat")) = False
   end if
   rs2.MoveNext
Loop
.....
' Affichage du panier
.....
next
%>
<tr class="even">
<td height="20" colspan="6" align="right" valign="middle"><b> Total de votre commande :&nbsp;&nbsp;</b> <b><%=Server.HTMLEncode(FormatNumber(total,2))%>&euro;</b></td>
__________________
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 09/10/2012, 14h54   #7
mfredok
Invité régulier
 
Inscription : octobre 2010
Messages : 42
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 42
Points : 7
Points : 7
Je te remercie un peu tardivement car je viens de me remettre sur le problème... Pour l'instant je cherche encore en suivant ta piste. Merci beaucoup.
mfredok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 00h32   #8
kaiser59
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 259
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : novembre 2005
Messages : 1 259
Points : 1 266
Points : 1 266
Envoyer un message via MSN à kaiser59
Bonsoir,

Je pense que cela devrait t'aider un peu :

Code asp :
1
2
3
4
5
6
7
8
9
10
11
<%
    val = "produit1, produit2, produit3, produit4, produit5, produit6"
    Session("test") = val
    'on converti la session en tableau, ce qui permet de compter le nombre d’élément
    tbl = split(Session("test"),",")
 
   'le 1er élément dun tableau est toujours égale à 0
    if ubound(tbl) > 1 then 
        response.write Cint(ubound(tbl)/ 3) &" articles gratuits"
    end if
%>

Adapte en fonction de tes besoins

PS : Il doit être possible de faire la condition avec le modulo, mais vu l'heure je fatigue ^^
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h58.


 
 
 
 
Partenaires

Hébergement Web