Qu'est ce qui ne marche pas dans mon code ? ( simple ) [ASP] - ASP - Programmation
Marsh Posté le 30-06-2004 à 09:12:45
j'ai rajouté ça en fait :
Code :
|
Marsh Posté le 30-06-2004 à 09:46:44
nb= nb + 1
toi tu lui dit nb=1 et après tu recherche nb=0 ???
Marsh Posté le 30-06-2004 à 09:55:29
oui ça veut dire que si il y a une ligne qui correspond a cette requete, je passe nb à 1 donc je ne fais pas l'insertion plus bas, ça revient au meme je pense de faire nb=nb+1 ( j'ai essayé et ça ne passe pas non plus )
Marsh Posté le 30-06-2004 à 10:00:17
N'est ce pas:
Code :
|
En tout cas, c'est comme ça en VB.
Edit: le gras n'a pas pris...
Marsh Posté le 30-06-2004 à 10:13:16
Essaie en passant par une variable:
strSQL = "INSERT INTO abonnes (email) VALUES ('" & Request.Form("email" ) & "') "
Conn.Execute strSQL
Marsh Posté le 30-06-2004 à 10:15:55
tjr rien mais j'ai l impression que mon erreur est dans le if / end if pq qd je fais :
Code :
|
ça ne marche pas non plus ...
Marsh Posté le 30-06-2004 à 10:17:18
La structure du if c'est
Code :
|
j'ai un petit doute sur le end if, à savoir si ce n'est pas en un seul mot ??
Marsh Posté le 30-06-2004 à 10:22:04
si j'attache le end et le if ce n'est plus reconu comme une fonction par mon interpreteur html ...
Marsh Posté le 30-06-2004 à 10:23:38
Par contre le then est obligatoire. Ce serait bien également si tu nous donnait les messages d'erreur
Marsh Posté le 30-06-2004 à 10:25:13
JiHemAir et Lord ii > oui pour le then j'ai testé et repondu a JiHemAir que ça ne fonctionnait pas plus ...
Marsh Posté le 30-06-2004 à 10:26:10
Impossible d'afficher la page
Il y a un problème avec la page que vous essayez d'atteindre ; elle ne peut pas être affichée.
--------------------------------------------------------------------------------
Essayez de la manière suivante :
Ouvrez la page de démarrage www.****.fr et recherchez des liens vers les informations voulues.
Cliquez sur le bouton Actualiser ou réessayez ultérieurement.
Cliquez sur Rechercher pour trouver des informations sur Internet.
Vous pouvez également consulter une liste de sites apparentés.
HTTP 500 - Erreur interne de serveur
Internet Explorer
Marsh Posté le 30-06-2004 à 10:32:52
seb-belfort a écrit : JiHemAir et Lord ii > oui pour le then j'ai testé et repondu a JiHemAir que ça ne fonctionnait pas plus ... |
Oui mais bon, faut le mettre quand même. As tu essayé en passant par une variable ?
Marsh Posté le 30-06-2004 à 10:34:09
oui je l'ai laissé je pense aussi qu'il faut le mettre, j'ai essayé aussi en passant par une variable
Marsh Posté le 30-06-2004 à 10:46:04
si je fais ça ça ne marche pas non plus :
Code :
|
Marsh Posté le 30-06-2004 à 10:49:26
Il faudrait surtout que tu obtiennes des messages d'erreurs plus explicites, je pense que cela devrait te faciliter la vie
Marsh Posté le 30-06-2004 à 10:50:11
Déja, ca plante où et avec quel message d'erreur ?
Ensuite, n'utilise JAMAIS la méthode .move(), surtout avec le mode de connection qui est utilisé en ASP, dans un programme VB avec le bon type de recordset, à la limite...
A la place, met :
errorMsg = ""
for i = 1 to Ndeb
if rs.EOF then
errorMsg = "Fin du recordset dépassé !"
exit for
else
rs.MoveNext
end if
next
if errorMsg <> "" then
rs.Close
Response.Write errorMsg
Response.End
end if
Marsh Posté le 30-06-2004 à 10:51:28
Pour avoir un vrai message d'erreur :
1) Sur IIS, active l'affichage des messages d'erreur (normalement c'est par défaut)
2) Dans IE, désactive les messages d'erreur simplifiés (outils > option internet > avancées)
Marsh Posté le 30-06-2004 à 10:54:00
A mon avis, RS.Move(Ndeb) ne sert à rien. (Ndeb) n'est pas déclaré. En plus, si RS est vide, tu plantes là.
Ensuite, je ferai:
Do While not RS.eof
RS.MoveNext
Loop
Edit: Barbecued !
Marsh Posté le 30-06-2004 à 10:57:46
ouf merci j'ai les messages d'erreur :
ADODB.Recordset error '800a0bcd'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/newsletter/validation.asp, line 8
( dslé je suis en mini reunion en mm tps )
Marsh Posté le 30-06-2004 à 11:01:16
Je suis de l'avis de JiHemAir et de Arjuna, il faut supprimer ce rs.move(Ndeb) se situant avant la boucle while.
Marsh Posté le 30-06-2004 à 11:03:16
Il faut aussi tester ton recordset après la lecture:
If Rs.BOF And Rs.EOF Then --> Rs est vide.
Requete Ajout
Marsh Posté le 30-06-2004 à 11:12:45
sinon euh...
"select count(*) nbA from abonnes where email = '" & Replace(Request.Form("email" ), "'", "''" ) & "'"
Ensuite, pas besoin de tester quoi que ce soit...
if rs("nbA" ) = 0 then
cnx.execute "insert ..."
else
response.write "t'es déjà inscrit abrutis !"
end if
En effet, count() retournera toujours une ligne, même s'il n'y a rien :
select count(*) from dual where 1 = 0
=> Ca retourne une ligne avec 0, alors que DUAL est une table fictive, et que 1 = 0 ca a tendance a toujours être faux...
Marsh Posté le 30-06-2004 à 11:14:06
Pour la petite histoire, en plus ce sera infiniment plus rapide.
Marsh Posté le 30-06-2004 à 11:15:15
Merci ça marche grace a vous tous !! super merci encore :
Code :
|
Marsh Posté le 30-06-2004 à 11:16:30
Arjuna > merci pour ta solution , si j'ai le temps j'esserai de faire comme ça ...
Marsh Posté le 30-06-2004 à 09:05:22
Comme ça ça marche :
Comme ça ça marche plus :
QQn peut m"expliquer pkoi ? merci d'avance!