Bonjour,
je suis en train de créer un module. J’ai voulu créer une table automatiquement à partir du fichier .install. Celui-ci doit être automatiquement exécuté quand le module est chargé.
Et là, aucune table n’est créée !
Je ne vois pas d’où cela peut venir. J’ai testé avec un db_query aussi mais sans succès.
Merci d’avance
Voici mon fichier.install :
<?php
function datehisto_schema() {
$schema['dateshistos'] = array(
'description' => t('stock les dates historiques tirées de wikipedia'),
'fields' => array(
'id' => array(
'description' => t('id auto-incrémenté'),
'type' => 'serial',
'not null' => TRUE,
),
'jour' => array(
'description' => t('jour de la date distorique'),
'type' => 'int',
'not null' => TRUE,
),
'mois' => array(
'description' => t('mois de la date distorique'),
'type' => 'int',
'not null' => TRUE,
),
'annee' => array(
'description' => t('année de la date distorique'),
'type' => 'int',
'not null' => TRUE,
),
'description' => array(
'description' => t('description de la date historique'),
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
),
),
'primary key' => array('id'),
);
return $schema;
}
function datehisto_install() {
// Création de mes tables
drupal_install_schema('datehisto');
/db_query("CREATE TABLE {dateshistos} (
id integer NOT NULL AUTO_INCREMENT ,
jour int(2) NOT NULL ,
mois int(2) NOT NULL ,
annee int(4) NOT NULL ,
description VARCHAR(255) NOT NULL ,
PRIMARY KEY (id)
);"
);/
}
function datehisto_uninstall() {
// Suppression de mes tables.
drupal_uninstall_schema('datehisto');
}
function token_update_1() {
$ret = array();
$ret[] = update_sql("UPDATE {system} SET weight = 10 WHERE name = 'token'");
return $ret;
}
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Bonjour,
les descriptions ne peuvent être données qu’au niveau de la table et non des champs.
Il faut donc les supprimer :
<?php function datehisto_schema() {$schema['dateshistos'] = array(
'description' => t('stock les dates historiques tirées de wikipedia'),
'fields' => array(
'id' => array(
'type' => 'serial',
'not null' => TRUE,
),
'jour' => array(
'type' => 'int',
'not null' => TRUE,
),
'mois' => array(
'type' => 'int',
'not null' => TRUE,
),
'annee' => array(
'type' => 'int',
'not null' => TRUE,
),
'description' => array(
'type' => 'varchar',
'length' => '255',
'not null' => TRUE,
),
),
'primary key' => array('id'),
);
return $schema;
}
function
datehisto_install() {// Création de mes tables
drupal_install_schema('datehisto');
}
function
datehisto_uninstall() {// Suppression de mes tables.
drupal_uninstall_schema('datehisto');
}
function
token_update_1() {$ret = array();
$ret[] = update_sql("UPDATE {system} SET weight = 10 WHERE name = 'token'");
return $ret;
} ?>
Cordialement, Aya
Aya
508
Bonjour, ça ne fonctionne toujours pas. je ne comprends pas.
merci de m’aider. Merci d’avance
flyzi
81
Bonjour comment ce nomme ton module ?
Il faut que ton module ce nomme comme le début de tes fonctions.
si ton module s’appelle «test» il faudra écrire «test_install».
le fichier doit aussi avoir le même nom «test.install».
Je suppose que tu le sais déjà mais vérifie au cas où (problème de s ou autre).
Sinon moi le schema fonctionne vu que je l’ai tester.
Cordialement, Aya
Aya
508
Dès lors que vous activez pour la première fois votre module, celui-ci est considéré comme installé par Drupal. Drupal n’appellera donc pas votre hook_install() lors des prochaines activations et desactivation du module. Pour forcer un module a etre resinstallé, utilisez la fonction «Reinstall» du module Devel.
Damien Tournoud
808
merci
flyzi
81