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 :

Est-ce que cette requête est exacte pour créer une nouvelle table?


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 37
    Points
    37
    Par défaut Est-ce que cette requête est exacte pour créer une nouvelle table?
    Bonjour,

    J'ai une table qui aurait dû s'installer automatiquement à l'aide du fichier ci-dessous, mais ça n'a pas marché donc j'aimerais la créer manuellement en tapant directement une requête SQL dans phpMyAdmin.
    Pourriez-vous me dire quelle partie de ce code dois-je taper dans ma requête? A moins qu'il faille entrer ce code en entier !!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $installer = $this;
     
    $installer->run("
    CREATE TABLE `{$installer->getTable('customer/form_attribute')}` (
      `form_code` char(32) NOT NULL,
      `attribute_id` smallint UNSIGNED NOT NULL,
      PRIMARY KEY(`form_code`, `attribute_id`),
      KEY `IDX_CUSTOMER_FORM_ATTRIBUTE_ATTRIBUTE` (`attribute_id`),
      CONSTRAINT `FK_CUSTOMER_FORM_ATTRIBUTE_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$installer->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Customer attributes/forms relations';
    ");
     
    $installer->getConnection()->dropColumn($installer->getTable('customer/eav_attribute'), 'is_visible_on_front');
    $installer->getConnection()->changeColumn($installer->getTable('customer/eav_attribute'), 'lines_to_divide_multiline',
        'multiline_count', 'TINYINT UNSIGNED NOT NULL DEFAULT 1');
    $installer->getConnection()->dropColumn($installer->getTable('customer/eav_attribute'), 'min_text_length');
    $installer->getConnection()->dropColumn($installer->getTable('customer/eav_attribute'), 'max_text_length');
    $installer->getConnection()->modifyColumn($installer->getTable('customer/eav_attribute'), 'input_filter',
        'varchar(255) DEFAULT NULL');
    $installer->getConnection()->addColumn($installer->getTable('customer/eav_attribute'), 'validate_rules',
        'text DEFAULT NULL');
    $installer->getConnection()->addColumn($installer->getTable('customer/eav_attribute'), 'is_system',
        'TINYINT UNSIGNED NOT NULL DEFAULT 0');
    $installer->getConnection()->addColumn($installer->getTable('customer/eav_attribute'), 'sort_order',
        'INT UNSIGNED NOT NULL DEFAULT 0');
     
    $installer->updateEntityType('customer', 'attribute_model', 'customer/attribute');
    $installer->updateEntityType('customer_address', 'attribute_model', 'customer/attribute');

    Merci pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Points : 348
    Points
    348
    Par défaut
    PhpMyAdmin n'acceptera pas ton code tels quel, celui-ci comprenant du php, tu doit entrer les valeurs à la mains pour les éléments comme "$installer->getTable"
    Si tu as un message d'erreur pourrait tu nous le communiquer.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 37
    Points
    37
    Par défaut
    Si je copie exactement ce code dans ma requête SQL et que j'exécute, j'ai ce message d'erreur:

    Erreur

    requête SQL:

    $installer = $this;

    MySQL a répondu: Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$installer = $this' at line 1




    Par contre, si je ne mets que ce code dans ma requête SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `{$installer->getTable('customer/form_attribute')}` (
      `form_code` char(32) NOT NULL,
      `attribute_id` smallint UNSIGNED NOT NULL,
      PRIMARY KEY(`form_code`, `attribute_id`),
      KEY `IDX_CUSTOMER_FORM_ATTRIBUTE_ATTRIBUTE` (`attribute_id`),
      CONSTRAINT `FK_CUSTOMER_FORM_ATTRIBUTE_ATTRIBUTE` FOREIGN KEY (`attribute_id`) REFERENCES `{$installer->getTable('eav_attribute')}` (`attribute_id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Customer attributes/forms relations'
    J'ai ce message d'erreur:
    #1103 - Incorrect table name '{$installer->getTable('customer/form_attribute')}'

    Ce que je mets comme syntaxe doit vous paraître absurde, mais je ne suis pas un pro de l'informatique!!

    Merci.

  4. #4
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    bonjour

    normal, ya des variables embeded dans la chaine de la requete sql. Puisque tu es assez fort pour trifouillé regarde la syntaxe exacte de CREATE TABLE:
    http://dev.mysql.com/doc/refman/5.1/...ate-table.html

Discussions similaires

  1. [MySQL] est ce que cette méthode est juste
    Par info_sara dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 13/06/2008, 20h08
  2. Est ce que cette requête est possible ?
    Par dubidon dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/06/2007, 11h24
  3. est ce que mon proxy est sécurisé avec cette config?
    Par kerkennah dans le forum Sécurité
    Réponses: 1
    Dernier message: 23/05/2007, 17h45
  4. es ce que cette requête est possible
    Par stan21 dans le forum Access
    Réponses: 2
    Dernier message: 01/02/2006, 10h22
  5. Est-ce que cette ligne est obligatoire ? (<!DOCTYPE html.
    Par cvb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 11/12/2005, 00h07

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