script en asp

WRInaute impliqué
bonjour
je besoin d'un script en asp qui permet de boucle sur les jour de l'annee

exemple :

for i=1 to 12 / pour les mois

for j=1 to 30 ( ou 28 ou 29 ou 30 ou 31) / pour les jour

n= j & "/" & i & "/2008"

next

next

alors le problme si dans le boucle for j ( si je met 30 alors mois 2 il ya 29 ..... )

comment faire pour resoudre se probleme ?

merci d'avance
 
WRInaute impliqué
merci pour votre reponse

mais moi je veut calculer le nombe des adresse ip visite mon site pour chaque mois pour cela je crée un tableau qui contient deux champ ( ip , date )

et je veut afficher le nombre de visie pour chaque mois

je fait le code suivant


dim n[12]

for i=1 to 12

for j=1 to 30 ( ici le probleme )

req="select count(ip) as nb ........... datee =" & j & "/" & i & "/2008"

rsc.execute req

n(i)=n(i)+rsc("nb")

next
next

merci d'avance
 
WRInaute impliqué
Salut,

La date me semble facultative dans ce que tu veux faire, du moins si j'ai bien compris.

je veut calculer le nombe des adresse ip visite mon site pour chaque mois

Comprends pas trop l'intérêt mais bon, ça fait travailler les neurones, c'est gai :D

De fait, tu crées une table id | ip (et éventuellement date)

Quand le visiteur arrive, tu récupères son ip, tu checkes ta table pour voir si cette ip s'y trouve déjà, si oui tu ne fais rien, sinon tu ajoutes avec un simple INSERT.

alors le problme si dans le boucle for j ( si je met 30 alors mois 2 il ya 29 ..... )

comment faire pour resoudre se probleme ?

Ben tu récupères la date en cours et tu vérifies si le mois en cours est un mois en 28/29 ou 30 ou 31 jours, et avec une ou deux conditions, tu adaptes ton script d'après le résultat. C'est un peu cra cra comme soluce et je ne vois toujours pas l'intérêt.

Si tu veux simplement ajouter la date, y'a des fonctions dédiées pour ça, pourquoi vouloir commencer à jouer avec des boucles ?
 
WRInaute impliqué
merci SuperCureuil pour votre reponse :

la solution donc est :

Code:
<%
annee=clng(Request.QueryString("annee"))
set cnx=server.createobject("adodb.connection")
connstring="DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.MapPath(".") & "/ip.mdb"
cnx.open connstring

Dim nb(12)
for i=1 to 12
nb(i)=0
next 
for i=1 to 12
Select Case (i)
		'Avril, Juin, Septembre, Novembre
		Case 4, 6, 9, 11
			NbJourDansMois = 30
		' Février
		Case 2
			' Si Divisible par 400 alors Bisextile
			if (annee Mod 4 = 0) And (annee Mod 100 <> 0) Or (annee Mod 400 = 0) Then
				NbJourDansMois = 29
			Else
				NbJourDansMois = 28
			End if
		' Les autres mois
		Case Else
			NbJourDansMois = 31
	End Select

for j=1 to NbJourDansMois
req_sql="SELECT Count(ip) AS nbvi ,datee FROM visites GROUP BY datee HAVING(datee=# " & i & "/ " & j & "/ " & annee & "#)"
set rsc = cnx.execute(req_sql)

if not(rsc.EOF and rsc.BOF) then
nb(i)=nb(i)+rsc("nbvi")
end if
next
next
%>
<html>
<body>
<table border="2">
<tr>
<% for i=1 to 12 %>
<td> <%=i%> </td>
<% next %>
</tr>
<tr>
<% for i=1 to 12 %>
<td width="40"><%=nb(i)%></td>
<%next%>
</tr>
</table></body></html>



Si tu veux simplement ajouter la date, y'a des fonctions dédiées pour ça, pourquoi vouloir commencer à jouer avec des boucles ?

qu'elle  les fonctions qui peut utilisée ?

y'a qu'il qu'un qui peut simplifie pour moi ce code ?


merci d'avance
 
WRInaute impliqué
merci SuperCureuil pour votre reponse :

la solution donc est :

Code:
<%
annee=clng(Request.QueryString("annee"))
set cnx=server.createobject("adodb.connection")
connstring="DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.MapPath(".") & "/ip.mdb"
cnx.open connstring

Dim nb(12)
for i=1 to 12
nb(i)=0
next 
for i=1 to 12
Select Case (i)
		'Avril, Juin, Septembre, Novembre
		Case 4, 6, 9, 11
			NbJourDansMois = 30
		' Février
		Case 2
			' Si Divisible par 400 alors Bisextile
			if (annee Mod 4 = 0) And (annee Mod 100 <> 0) Or (annee Mod 400 = 0) Then
				NbJourDansMois = 29
			Else
				NbJourDansMois = 28
			End if
		' Les autres mois
		Case Else
			NbJourDansMois = 31
	End Select

for j=1 to NbJourDansMois
req_sql="SELECT Count(ip) AS nbvi ,datee FROM visites GROUP BY datee HAVING(datee=# " & i & "/ " & j & "/ " & annee & "#)"
set rsc = cnx.execute(req_sql)

if not(rsc.EOF and rsc.BOF) then
nb(i)=nb(i)+rsc("nbvi")
end if
next
next
%>
<html>
<body>
<table border="2">
<tr>
<% for i=1 to 12 %>
<td> <%=i%> </td>
<% next %>
</tr>
<tr>
<% for i=1 to 12 %>
<td width="40"><%=nb(i)%></td>
<%next%>
</tr>
</table></body></html>

Si tu veux simplement ajouter la date, y'a des fonctions dédiées pour ça, pourquoi vouloir commencer à jouer avec des boucles ?

qu'elle les fonctions qui peut utilisée ?

y'a qu'il qu'un qui peut simplifie pour moi ce code ?


merci d'avance

[/u]
 
Discussions similaires
Haut