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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 : 39
    Localisation : France, Paris (Île de France)

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

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

  3. #3
    Membre expérimenté 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
    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
    Membre averti
    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
    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 confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 197
    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.

  6. #6
    Membre averti
    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
    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 confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 197
    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à.

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