IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Qu'est-ce que @Id


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Qu'est-ce que @Id
    Bonjour,

    J'ai du chercher un bug sur un site de e-commerce où, aléatoirement, le total du panier est multiplié par 100 lors de la direction vers le module de paiement.

    J'ai rapidement trouvé cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlstr = "SELECT total * 100 FROM Commandes WHERE id = @Id"
    Et je pense qu'en enlevant le " * 100", le problème sera résolu mais je n'arrive pas à comprendre à quoi correspond le @Id et j'aimerai bien savoir avant de faire la modification (au cas-où) donc si quelqu'un pouvait m'éclairer, je suis preneur.

    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Tu trouveras tes réponses dans le tutoriel suivant:
    http://webman.developpez.com/article.../sqlparameter/

  3. #3
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sqlstr = "SELECT total * 100 FROM Commandes WHERE id = @Id"
    Ca s'appelle une requette paramétrée.

    Voila un exemple d'utilisation

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Tout d'abord, merci pour votre réactivité (vraiment impressionnant :p).

    Ensuite, je commence à comprendre le principe mais je n'arrive pas à comprendre pourquoi cette multiplication ne se fait que sur certaines commandes.

    Voici le code avec le paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sqlstr = "SELECT total * 100 FROM Commandes WHERE id = @Id"
    sqlcomm = New SqlCommand(sqlstr, conn)
    sqlcomm.Parameters.AddWithValue("@Id", Request("tid"))
    Cette requête est donc effectué après avoir appuyer sur le bouton dont voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Redirect("call_request.aspx?tid=" + idcom);
    Et voici ce que je sais sur idcom (ces lignes ne se suivent pas):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int idcom;
    idcom = sqlread.GetInt32(0);
    command.Parameters.AddWithValue("@OrderId", idcom);
    Session["orderNumber"] = idcom;
    Si quelqu'un comprend, merci .

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Le site ne gèrerais pas différentes monnaies par hasard ?

    J'ai déjà eu ce problème sur un site, où on utilisait Microsoft Commerce Server 2.0 (pfiou, ça me rajeuni pas ça !) qui ne fonctionnait qu'avec des entiers : donc pour de l'Euro, il fallait multiplier par 100 pour donner un montant en centimes. Mais pour le Yen, qui n'a pas de centimes, il ne fallait pas changer le montant... sinon on explosait le plaffond, car le montant était un Int16 signé, donc limité à 32768... ce qui, en Yen, n'est pas un très gros montant (environ 250 )

    Regarde de ce côté éventuellement.

    Sinon, en effet, si y'a un * 100 dans la requête, c'est bien ça qui fait la multiplication.

    Sinon, c'est simple :

    IdCom, c'est le numéro de la commande.

    On le passe en paramètre à la page.

    Et on l'utilise pour récupérer le montant total de la commande, qu'on multiplie par 100.
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    C'est étrange car le site n'utilise pas de différentes monnaies et puis tous les prix sont rond donc il ne devrait pas y avoir besoin de faire cette modif.

    Mais le plus étrange, c'est que cela ne le fait pas sur toutes les commandes, juste certaines de façon aléatoire.

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Regarde alors dans quel cas cette requête est exécutée. J'imagine que pour les cas où le montant n'est pas multiplié, tu ne passes pas par là.
    On ne jouit bien que de ce qu’on partage.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Bah si je suis bien tous le fonctionnement, cette multiplication devrais s'effectuer sur chaque commande car la page call_request.aspx est appelé dès qu'on choisis le paiement par carte bancaire (et c'est lorsque le client arrive sur le module de paiement qu'il voit que ça a été multiplié ou non).

    Et comme si j'ai bien compris le @Id équivaut à l'id de la commande donc y'a aucune raison qu'il fasse la multiplication sur certaines commandes et pas sur d'autres et pourtant c'est ce qu'il se passe :s.

  9. #9
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Et quand tu débug en pas à pas?

  10. #10
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Celles qui ne sont pas multipliées par 100 ne serait pas celles qui ne sont pas payées par CB par hasard ?

    Aussi, que dit la documentation du prestataire de paiement ? Peut-être que dans certains cas, reste à savoir lesquels, il faut effectivement multiplier par 100 (pour moi, c'est souvent lié à la monnaie).

    En tout cas, on peut guère t'aider plus...
    On ne jouit bien que de ce qu’on partage.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Pour ce qui est du débug, je ne connais pas vraiment la procédure.

    La multiplication se fait de manière aléatoire lorsque le client choisis de payer par CB (qu'importe la carte utilisé et la zone géographique).

    Sinon je suis en train de tester en ayant enlevé le " * 100". Donc j'ai remplacé le .dll et le .compiled mais maintenant "call_request.aspx" n'est plus affiché.

    En sachant que l'ancien .dll avait un nom différent mais que le .compiled à exactement le même. J'ai donc mis les 2 nouveaux (ce qui devrait fonctionner) mais maintenant, je n'ai plus l'affichage que devrait me donner "call_request.aspx" :s.

  12. #12
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Euh...
    T'aurais pas une version compilée qui correspond à une autre version des sources que tu utilises là ?

    Parce que le fait de virer le * 100 dans la requête ne devrait absolument rien changer au fonctionnement du site... La page devrait toujours être appelée !

    Pour moi, la version des sources ne correspond pas à la version qui est en ligne, et c'est pour ça que tu ne comprends pas ce qu'il se passe !
    On ne jouit bien que de ce qu’on partage.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Oui c'est fort probable en effet. Je viens de up tout le site sur un FTP de test et la page call_request n'est toujours pas appelée.

    Existe-t-il un moyen permettant de visionner les pages compilées? :s (sait-on jamais :p)

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Etant en train de rechercher la page qui serait lié à mon problème, je recherche dans quel pages sont appelés les images de la page via notepad++ et impossible de les trouver.

    J'aimerai donc savoir si en aspx, il est possible d'appeler une image sans utiliser son nom?

    Pour moi ce n'est pas possible mais ne connaissant que trop peu l'aspx, peut-être que...

Discussions similaires

  1. qu'est ce que l'instruction "round"?
    Par isa_21 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/03/2003, 10h37
  2. Qu'est ce que c'est : Le GateA20 ?
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 24/02/2003, 15h09
  3. Qu'est ce que le cache ?
    Par irrou dans le forum Assembleur
    Réponses: 4
    Dernier message: 24/11/2002, 23h28
  4. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23
  5. Réponses: 3
    Dernier message: 19/07/2002, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo