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

PHP & Base de données Discussion :

Récupérer la longueur déclarée d'une colonne varchar


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Récupérer la longueur déclarée d'une colonne varchar
    Bonjour,

    PS : pas 100% sûr de poster dans le bon forum

    Je souhaiterais savoir comment récupérer la taille des champs d'une table mysql.

    Par exemple :table personne
    nom - varchar(100)
    prenom - vachar(120)

    Dans cet exemple, je souhaite récupérer la valeur 100 dans le cas du nom
    et 120 dans le cas du prénom.

    Je souhaite utiliser cette fonctionnalité pour corriger un bug d'un code php que j'ai récupéré :
    dans ma base de données, toutes mes variables de type varchar ont des "longueurs" différentes,
    mais par contre, le formatage de saisie (fait en php) est identique pour toutes (60car) et est fait dans une boucle :

    return("<input size=60 type=TEXT name=form_".$this->name." value = \"".$this->value."\">");

    Ceci génèrant des champs de saisie, c'est problématique : champs incomplets ou vides dans la BD,
    si la taille de ma variable (déclarée dans ma BD) est inférieure à 60 et impossible de saisir plus que 60 caractères...

    Le formatage à 60 car est intéressant dans la mesure ou tous les champs de saisie sont alignés.
    Aussi je me suis dit que je pourrais peut-être ruser en utilisant l'attribut html "maxlength",
    et en lui affectant la taille du champ déclaré dans la BD???

    return("<input size=60 maxlength= la_taille_du_champ_dansBD type=TEXT name=form_".$this->name." value = \"".$this->value."\">");

    Est-ce possible? Et sinon comment procéder?

    Question corollaire : que ce passe-t-il si maxlength < size ??? Dois-je traiter ce cas séparément?

    if (size > maxlength) size = maxlength;

    ou la saisie sera-t-elle automatiquement bornée à maxlength?

    Merci de votre aide,

    Cordialement,

    <Xirom> --- sql newb

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 707
    Points
    23 707
    Par défaut
    Bonjour,

    Si tu es en MySQL 5, la requête suivante te renvoie ce que tu demandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT CHARACTER_MAXIMUM_LENGTH
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'ta_table'
    AND COLUMN_NAME = 'ta_colonne'
    Sinon, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SHOW COLUMNS FROM ta_table
    WHERE FIELD LIKE 'ta_colonne'
    Dans ce cas, la donnée Type que te renvoie cette instruction donnera "varchar(n)". Il suffit d'extraire n...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Re-bonjour,

    Merci bien pour cette réponse.

    Malheureusement je viens de vérifier, et je sous MySQL 4.1.20
    :-(
    ...

    y aurait-il une autre façon de procéder?

    Cordialement

    <Xirom> --- sqlnewb

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    En PHP avec mysql_fetch_field.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 707
    Points
    23 707
    Par défaut
    y aurait-il une autre façon de procéder?
    Oui, avec SHOW COLUMNS...
    Cette synthaxe était valide sous MySQL 4.1.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci bien pour ces réponses! (et aussi pour avoir déplacé le message dans le forum approprié...
    je viens juste de m'en apercevoir )
    Désolé pour ma réponse tardive... en fait les scripts que j'ai récupérés forment
    une vraie usine à gaz... donc je vais mettre un peu de temps pour tester
    ça (je pensais pas avoir à faire une nouvelle requète sql...).
    Je vous tiens au courant dès que possible.
    Merci encore.
    A+

    <Irom> --sql newb

Discussions similaires

  1. Récupérer la largeur réelle d'une colonne
    Par Bono_BX dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/09/2011, 18h47
  2. Réponses: 2
    Dernier message: 02/09/2011, 13h59
  3. [XL-2003] Récupérer toutes les valeurs d'une colonne
    Par Tintou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2010, 16h38
  4. récupérer la vrai largeur d'une colonne Gridview
    Par ricil78 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 14/05/2009, 12h54
  5. récupérer la val max d'une colonne
    Par nb_fr31 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/10/2007, 17h26

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