Submitted by flyzi on
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;
}
Bonjour, les descriptions ne
Permalien Soumis par Aya le 14 Décembre, 2010 - 09:25
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
Bonjour, ça ne fonctionne
Permalien Soumis par flyzi le 14 Décembre, 2010 - 12:31
Bonjour, ça ne fonctionne toujours pas. je ne comprends pas.
merci de m'aider. Merci d'avance
Bonjour comment ce nomme ton
Permalien Soumis par Aya le 14 Décembre, 2010 - 14:59
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
Dès lors que vous activez
Permalien Soumis par Damien Tournoud le 14 Décembre, 2010 - 15:08
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.
merci
Permalien Soumis par flyzi le 14 Décembre, 2010 - 16:00
merci