Probleme d'update d'1 champs d'1 ligne dans une table! [asp] - ASP - Programmation
Marsh Posté le 24-06-2003 à 09:21:19
Bon j'ai trouvé comment recupéré une a une les valeur des case coché et maintenant g un autre probleme:
voici mon code:
Citation : <!-- #include file="../connexion.asp" --> |
et qd cette apge est apelé voici l'erreur affiché par IIS:
Citation : ADODB.Field error '80020009' |
personne ne sait??
Marsh Posté le 24-06-2003 à 10:42:05
vire le "set rs=" devant le cnx.execute.
une requête delete est muette dont cnx.execute ne retournera rien.
Marsh Posté le 24-06-2003 à 12:49:57
MagicBuzz a écrit : vire le "set rs=" devant le cnx.execute. |
ben g meme pas testé de delete pour l'instant juste un select ..
ensuite g auparant deja utiliser un delete avec un set rs et ça marchais nickel...enfin je vais le faire qd meme
@+++
Marsh Posté le 24-06-2003 à 15:04:39
bon g fais des test et voila les resultat:
qd je fais:
Citation : |
et ça marche nickel , mon produit 001 est bien suprimer
mais qd je fais
Citation : |
ça marche ke dale!mon produit est tjs la et pourtant g meme pas d'erreur de IIS
Mon champ produit est de type texte (de la forme 001)
qd je selectionne un le produit dont le code est 001 et que je fais un response.write val , y a bien affciher 001
donc j'y pipe que dalllllleeeeeeeee fo bien ecrire commeça :
Citation : |
du texte nan?
du coup , g changé le type de mon CodeProd et je l'ai mis en Numerique et biazarement ça fonctione sauf que je dois ecrire ma requete comme ça:
Citation : |
a ce que je sache , le type de la valeur d'une checkbox ne peut etre modifier apres l'envoie du formulaire ??!!!!
Bref si qq1 comprend ce disfonctionement???
Vraiment c incroyable qd meme!j'ecrit '001' ça marche mais
'"&val&"' ça marche po!!!!!!
Marsh Posté le 24-06-2003 à 19:26:03
response.write req
mais-ça avant le cnx.execute et poste ta requête.
à tous les coups, val est vide, ou mal formatté (1 à la place de 001 ?)
Marsh Posté le 25-06-2003 à 06:55:21
effectivemnt tu avais raison
suite a ton response.write req
voila ce que g eu en selectionnant le produit 018:
"delete from Produits where CodeProd = 18"
y manque donc le 0 c pour ça que ça plantait
comment je fais alors?
je test dabord le code prod est >99 et donc je laisse comme ça ou si c <99 je rajoute un 0 devant????
t'as un idée?
merci
Marsh Posté le 25-06-2003 à 15:19:35
si y'a un endroit où tu fait un "cint" de ta variable, alors vire-le.
Si ça marche toujours pas, pas de solution miracle :
req = "select * from Produits where CodeProd='" & right("000" & cstr(request.form("sup_prod" )), 3) & "'" |
Ca va forcer le code à 3 chiffres, en remettant les 0 facultatifs devant.
Marsh Posté le 25-06-2003 à 16:50:14
bon g utiliser la method bourine et ça marche
au passage g enlevé la conversion en chaine (cstr(val)) , car j'avais deja testé avant et cela ne changeais rien , et effectivement ça marche sans
encore merci
bon g encore un petit souci maintenant:
voila apres mon avoir choisi les ligne a supprimer , je renvoie avant de suprimer les ligne , le formulaire vers une page asp (confirm.asp) pour demander la confirmation de la supression des ligne dans ka table
et du coup , dans mon supp.asp , je peux plus recupéré "val" de la meme maniere c a dire avec un request.form("choix_supp" )
du coup voila ce que j'ai fais dans ma page intermediaire de confirmation (puisque elle , elle a acces a mes donné du formulaire)
Citation : |
ensuite qd j'appel mon fichier supp.asp je recupere val de cette maniere ( z est deja recupéré et a une valeur numerique)
Citation : |
ça me sort une erreur qui me dit "index hors limite"
j'ai l'impression que l'indexation ne marche pas avec les cookies !(pas comme avec les request.form en ts cas)
c vrai ou bien y a une methode special??
en effet , avant avec ma boucle (exemple)
(qd j'apelais supp.asp juste apres le formualaire) je faisais:
Citation : <% |
et ça marchais
une idée???(au passage g cherché pendant 2 heure...)
merci encore pour ton toute ton aide
Marsh Posté le 25-06-2003 à 20:32:21
Toi, t'es un GROS bourrin
Deux solutions s'offrent à toi :
1) Transmettre ton request.form en request.querystring
2) Regénérer un formulaire.
Première solution :
Ta page :
Etes-vous sûr de vouloir supprimer les lignes sélectionnée ?
Oui Non
Avec sur "Oui" le lien ci-dessous :
<a href="supp.asp?<%=request.form%>">Oui</a> |
Seconde solution : même page, mais avec deux boutons dans un formulaire et ça dans le code :
Code du forumlaire :
<form action="supp.asp" method="POST"> |
Et dans supp.asp :
if request.form("do" ) = "Oui" then |
Marsh Posté le 25-06-2003 à 22:46:52
ben en fait j'avais testé les deux methode sauf que celle avec mon querystring merdais
j'avais egalement regenerer un formulaire (caché bien sur) mais ça merdais aussi!!!
je vais retester la methode du querystring
merci encore
Marsh Posté le 25-06-2003 à 23:03:07
bon finalement je me suis retesté ma methode avec la regeneration d'un formulaire et ça marche nikel
en fait j'avais oublié de precisé la method
je vais qd meme testé la method querystring car je l'utilise jamais
merci encore et a bientot......
Marsh Posté le 26-06-2003 à 01:52:20
Pour la méthode en querystring, n'oublie pas que récupérer les variables avec request.querystring au lieu de request.form
Sinon, les querystring sont à éviter, car :
1) l'utilisateur les voit et peut les modifier à la main sans problème, ce qui peut aisément poser problème (c'est comme ça que je me débrouille pour accéder à des pages cachées sur certains sites à caractère pas trop avouable )
2) tu es limité en taille si les données sont trop longues
3) parfois ça pose problème pour récupérer des caractères dont l'encodage est spécial (si tu bosse sur une page en UTF-8 et que tu soumet un form avec des caractères en japonnais par exemple, y'a de grandes chances pour qu'au final tu récupère autrechose à la place)
Marsh Posté le 26-06-2003 à 06:51:01
pour la securité c ce que j'avais lu sur des site
par contre le reste je savais pas po
mais bon puisqu'il s'agit deja d'un acces reservé a l'administrateur (a ce propos j'aurrais besoin plus tard de ton aide pour mieux securisé cette acces justement)
merci encore
tschhhhhuuuusssssssss
Marsh Posté le 26-06-2003 à 12:01:23
hé hé encore un probleme!!
en fait , je viens de me rendre que l'indexation me marche uniquement qu'avec un request.form mais seulement dans la page appellé juste apres le formulaire ou on fais le choix
effectivement je peux uniquement supprimer une seul ligne et des que j'en selectionne plusieur ça marche po
g fais un test:
g coché 3 case
dans supp_confirm.asp:
<%=request.form("choix_supp" )(2)%>
ça affiche bien le codeprod du deuxieme produit coché
par contre apres avoir fais dans supp_confirm.asp:
Citation : |
)
qd je fais ça dans supp.asp
<%=request.form("val" )(2)%>
la ça me sort "index hors limite"
et en fait si je fais
<%=request.form("val" )(1)%> ça me sort 012,013,014
alors que si je fais dans supp_confirm.asp :
<%=request.form("choix_supp" )(1)%>
ça me sort uniquemnt 012
du coup je vais devoir faire une seul et unique page
si tu vois l'erreur
merci
Marsh Posté le 26-06-2003 à 13:40:28
Bon finalement g reussi a resoudre le pb comme ça: (barbarerie inside )
Citation : |
et dans supp.asp
Citation : z=request.cookies("nb" ) ' recuperation du denombrement des case coché dans le formulaire |
Marsh Posté le 26-06-2003 à 14:35:57
mais arrête de passer par les cookies
en plus, y'a la réponse dans ton système des cookies :
for i=1 to request.form("choix_supp" ).count
response.write "<input type=""hidden"" name=""choix_supp"" value=""" & request.form("choix_supp" )(i) & """>"
next
Marsh Posté le 26-06-2003 à 15:52:47
oula..je doute que ça marche...
enfin je vais qd meme testé ça mais g encore d'uatre partie a geré avant "d'optimiser le code"
Marsh Posté le 26-06-2003 à 16:05:51
bon je viens de tester et ça marche
d'ailleur je vais garder cette method , elle parait moins barbare
Marsh Posté le 27-06-2003 à 18:49:01
Bon MagicBuzz (je m'adresse directement a toi vu que t le seul a me repondre ), g un nouveau , bizaare et tout dernier probleme
voila le topo
g crée dans la partie adminstrateur , une section pour modifier une ligne d'une table
et il se trouve que g un probleme avec UN seul champs d'UNE seul ligne , toute les autre ligne peuvent etre modifier sans prob
Voici:
voici ma requete pour modifier la ligne:
Citation : |
au passage g fais un response.write req (histoire de voir ce qui merdais mais je vois pas)
et donc voila le pb:
Le probleme survient avec la table Produits , avec le produit de codeprod 018 (ça c pas tro important encore)
le champs qui pose probleme c le champ "Desiprod"
voici le champs "Desiprod" comme il est actuellement:
"ALIMENTATION FlexATX 230 WATTS - Micro format + câble d'alimentation"
dans mon formulaire de modification , je remet les ancienne valeur juste pour que l'administrateur vois ce qui a actuellement
et donc , le pb , c qd par exemple je ne modifie pas le champs desiprod et le laisse comme il est (c a dire ce qui a d'ecrit en gras plus haut)
VOici l'erreur que ça me sort (en haut g ecrit la requete)
Citation : |
par contre si je modie cette ligne et que j'ecrit autre chose a la place , alors aucune erreur tout marche
et le pire c que ça se produit uniquement avec cette ligne (le produit 018) et ce champs!
si par exemple je fais pareil avec le poduit 002 qui as dans son champs desiprod :
"Boîtier MCS 6039L + Ventilo - 300W - 4 baies 5"1/4 + 1 x 3"1/2"
(c a dire que je ne change pas son champs desiprod )
alors aucune erreur !!!
Mais si je copie le champs desiprod du produit 018 et que je modifie le champ desirpod du produit 002 en celui du 018 (copier coller quoi ) et ben g la meme erreur !
Citation : update Produits set CodeProd='002', PrixProd='61,6751 ?', CodeCateg='0' , Desiprod='ALIMENTATION FlexATX 230 WATTS - Micro format + câble d'alimentation' where CodeProd='002' |
DONC le probleme viens du champs desiprod du prod 018 :
"ALIMENTATION FlexATX 230 WATTS - Micro format + câble d'alimentation"
C QUOI CE BINSSSSSSS??????
Marsh Posté le 27-06-2003 à 19:50:54
|
PS: et évite de mettre entre code les champs de type numérique (float et number), c'est parfois source ce problème. Mais là, ton problème venait du fait qu'il faut échapper le caractère "'" dans les string, sinon le SGBD croit que c'est la fin de la chaîne. En SQL, le caractère d'échappement de "'" est "''" (deux ' et non pas un " )
Marsh Posté le 27-06-2003 à 20:08:19
ET ta fonction quote je l'apple qd ET ou au juste????
Marsh Posté le 28-06-2003 à 09:53:47
petit up car je vois tjs pas ou et comment appellé cette fonction
Marsh Posté le 28-06-2003 à 12:30:25
Hé ben...
Quote permet de mettre des quotes simples autour d'une chaîne, et d'échapper les quotes qu'elle contient.
Donc tu l'appelles pour toutes les chaînes que tu passes à toutes tes requêtes.
Marsh Posté le 28-06-2003 à 18:44:07
encore merci , je viens de tester , c nikel ça marche
Marsh Posté le 30-06-2003 à 08:14:56
Putain g encore un pb avec ces fichu quote!
le pire c que le prob est le meme , j'utilise bien la fonction quote mais ça marche po
voila le pb:
je veux supprimer un ligne d'une table dont l'identifiant(champs pack dans ma table) est
"val"
val vaut dans cette ligne:"gsqd'grg"
dans ma requete pour supprimer cette ligne voila ce que j'ai ecrit:
Citation : |
puisque val contenais une quote j'ai appelé la fonction pour l'echapper
j'ai fais un response.write da ma requete et voila ce qui a d'ecrit:
Citation : [quote]delete from config where Pack ='gsqd' |
tu m'explique please
ps: au passage c normal si j'ai laissé les quote dans l'expression de ma requete :'""e(val)&"' , puisque je les ai est viré dans la foncion quote
Marsh Posté le 30-06-2003 à 10:41:01
Ne met pas de quotes autour de l'appel de quote, puisqu'elle en met déjà
req = "delete from config where Pack = ""e(val)&" "
Sinon, c chelou ce qu'il t'as écrit... T'as bien recopier (copier/coller) ma fonction ?
Parceque normalement, il autait du écrire ça ton response.write :
delete from config where Pack = ''gsqd''grg''
Alors que toi tu veux :
delete from config where Pack = 'gsqd''grg'
Marsh Posté le 30-06-2003 à 11:02:04
MagicBuzz a écrit : Ne met pas de quotes autour de l'appel de quote, puisqu'elle en met déjà |
Pour les quote , comme je te l'ai dis , j'ai modifier ton fonction et fais en sorte k'el ne mette pas de quote , comme ça je les laisse dans la requete
sinon c vrai que c chelou et g pas fais de faute
de toute façon , je vais modifier ma table car un libelé de pack comem identifiant c naze
je vais crée un code_pack composé des 3 premiere letre du pack +le typ
@++
Marsh Posté le 23-06-2003 à 19:38:44
edit:
bon g prefere edité le titre plutot que de crée un nouveau topic
mon prob se trouve tous en bas
Salut
Voila j'ai afficher dans un tableau le contenu d'une table et a droite de chaque ligne , j'y est mis une case a coché (checkbox) ayant pour valeur le CodeProduit (du produit decrit dans la ligne) toutes ses checkbox ont pour nom "sup_prod"
Ce tableau est a l'interieur d'une formulaire et je renvoie l'action de ce formulaire sur une page asp qui va se chargé de supprimer dans la base de donnée toutes toutes les lignes coché
Seulement voila le prob(sans doute simple mais pas pour moi):
g juste fait un test avec cette requete dans ma page asp apelé apres le submit et j'y est mis ça:
req="select * from Produits where CodeProd='"&request.form("sup_prod")&"'
set rs=cnx.execute(req)
while not rs.eof
response.write rs(2) 'affichage du troisieme champ
wend
rs.close
et bien sur , rien ne s'affiche sur la page puisque mon request.form("sup_prod" ) contient plusieur valeur ( qd je fais un response.write(request.form("sup_prod" )), voila ce que ça ecrit :
014 ,015 ,016
ce qui correspond au CodeProduit des produit que g coché dans mon formulaire
donc si quelqu'un pourrais m'aider , j'aimerais juste savoir comment faire pour supprimi
er plusieur ligne a partir d'un tel formulaire (checkbox)
merci
ps:je sens que magicbuzz va encore passer par la
Message édité par Zobman le 27-06-2003 à 18:06:55
---------------
La réalité n'est qu'une illusion créée par le manque de Drogue....