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

C Discussion :

[MySQL]Créer une requète en utilisant une variable


Sujet :

C

  1. #21
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Citation Envoyé par lapras123
    Ok merci beaucoup, j'ai tenu compte de toutes vos indications et ca marche !

    dernier probleme :
    cette ligne marche mais je ne la comprend pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf ("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
    alors déja y'a ca : [%.*s] ==> pourquoi un ' . ' apres le ' % ' ?

    Apres y'a le sorte de if que j'ai pas tres bien compri !

    (int) lengths[i], row[i] ? row[i] : "NULL"

    alors la dedans on demande d'afficher la variable :
    lengths[i] et , une sorte de if avec row[i] ?!

    c'est un peu confus merci d'avance , a+
    "%.*s" permet de formater ton string en l'alignant à droite. La longueur est donné par l'entrée lengths[i].

    L'instruction 'row[i] ? row[i] : "NULL"' "retourne" la chaîne de caractère "NULL" si l'évaluation de row[i] est égale à zéro sinon la valuer de row[i] est retournée.
    Bien le bonjour chez vous
    Jowo

  2. #22
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    merci mais a quoi sert de "renvoyer" NULL dans le printf ?
    Et aussi, pourquoi ont peut pas faire printf("%s\n", *(lengths + i));
    ??
    ca veut dire quoi en programmation : aligner a droite ?
    a+

  3. #23
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    en programmation "ça veux rien dire".

    par contre quand tu affiche du texte a l'ecran, c'est bien d'avoir la possibilité de le presenter proprement.
    c'est ce que fait le %.*s

    ensuite, renvoyer "NULL" ... ça permet d'eviter de faire: printf("%s",0);

    basiquement ça sert a eviter d'acceder a l'addresse 0.
    bien que printf soit protégé contre "ça", c'est une coutume par chez moi d'eviter de passer NULL a la place d'un pointeur valide a une fonction ... meme si c'est "prevut".
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  4. #24
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    salut,

    Super mais logiquement, si je fais juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf ("[%s] \n", (int) lengths[i]);
    ca devrait m'afficher les champs quand meme non ?

    car la ca provvoque une erreur sur le programme

    Alors qu'avec ta ligne ca marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf ("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
    merci d'avance !

    @+

  5. #25
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    moi ... j'abandonne ...
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  6. #26
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Normal, dans le premier cas, tu passes un int alors que le format "%s" demande un pointeur sur char.

    Dans le second cas, tu passes un int ET un pointeur sur char et le format "%.*s" demande les deux.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #27
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    lapras : Relis ce que jowo a dit Tout y est.

    Dark_Ebola : Ne perds pas espoir
    K

  8. #28
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    Ok cette fois j'ai compri mais dernier étail, un int c'est %ld pour le demander non ?
    En plus a quoi sert d'avoir la longueur car juste faire ca ca mache :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf ("[%s] ", row[i]);

  9. #29
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    Ca sert à afficher en colonnes. Tout est dans les différentes docs qui sont à ta disposition, sur le langage C, je te conseille de bien les potasser, car apparament tu as des petites lacunes, A+
    K

  10. #30
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 73
    Points : 24
    Points
    24
    Par défaut
    Okay merci a vous tous de m'avoir beaucoup aidé, effectivement je vais devoir lire les cours plus poussés sur le c car la ou j'apprend ils disent pas tout ces détails comme l'affichage colonne, etc...

    encore merci et merci aussi a dark ebola, a+

  11. #31
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    PS: C'est standard, ce format spécial ? C'est la première fois que j'en "entend parler"...

    Question subsidiaire : Ça marche aussi sous Windows ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #32
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Je reviens à la question d'origine.

    Pour utiliser une variable avec une interrogation SQL, il est préférable d'utiliser l'API C API Prepared Statements.

    Avec cette API, tu t'évites de nombreux problèmes.

    Exemple:
    Tu ne t'occupes plus de ajouter des apostrophes au début et à la fin pour délimiter les string.
    Si un apostrophe existe dans le string (O'Connor), il sera traité correctement.
    Bien le bonjour chez vous
    Jowo

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/05/2010, 14h12
  2. [AC-2003] Numéroter les doublons dans une requête en utilisant une fonction VBA
    Par maldan dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/09/2009, 16h46
  3. Réponses: 1
    Dernier message: 23/09/2009, 15h38
  4. Réponses: 11
    Dernier message: 23/09/2008, 13h16
  5. [RegEx] Utiliser une expression régulière dans une requête
    Par Tobleron dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2007, 19h00

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