Bonjour, je veux savoir si je peux créer deux tables
lors de l'installation de mon plugin personnalisé. C’est ainsi que je crée la tables
dans la base de données
function wnm_install(){
global $wpdb;
global $wnm_db_version;
$sms_table = $wpdb->prefix . "smsfactory";
if($wpdb->get_var("show tables like '". $sms_table . "'") != $sms_table){
$sql_sms_table = "CREATE TABLE ". $sms_table . " (
SfID int(11) NOT NULL AUTO_INCREMENT,
sf_name varchar(128) NOT NULL,
start_duration date NOT NULL,
end_duration date NOT NULL,
activity varchar(500) NOT NULL,
survey_settings varchar(50) NOT NULL,
`limit` varchar(50) NOT NULL,
goal varchar(100) DEFAULT NULL,
PRIMARY KEY (SfID)
) ";
}
$sms_message_table = $wpdb->prefix . "smsfactorymessagetemplate";
if($wpdb->get_var("show tables like '". $sms_message_table . "'") != $sms_message_table){
$sql = "CREATE TABLE ". $sms_message_table . " (
sfID int(11) NOT NULL AUTO_INCREMENT,
sftemplate_name varchar(256) NOT NULL,
sftemplate_type varchar(128) NOT NULL,
PRIMARY KEY (sfID)
) ";
}
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("wnm_db_version", $wnm_db_version);
}
Maintenant, le problème avec ce code est qu’il crée la deuxième table et saute la première, merci de me dire toute solution à ce problème
Il me semble que vous exécutez une seule requête: dbDelta($sql);
.
Avez-vous essayé d'ajouter dbDelta($sql_sms_table);
?
Dans votre code d'origine, vous appeliez uniquement dbDelta($sql)
et non pas dbDelta($sql_sms_table)
également.
dbDelta()
peut prendre un tableau de requêtes, nous devons donc définir un tableau vide sur la variable $sql
pour stocker les requêtes si leurs conditions évaluent true
.
function wnm_install() {
global $wpdb, $wnm_db_version;
$sql = array();
//sms table
$sms_table = $wpdb->prefix . "smsfactory";
if( $wpdb->get_var("show tables like '". $sms_table . "'") !== $sms_table ) {
$sql[] = "CREATE TABLE ". $sms_table . " (
SfID int(11) NOT NULL AUTO_INCREMENT,
sf_name varchar(128) NOT NULL,
start_duration date NOT NULL,
end_duration date NOT NULL,
activity varchar(500) NOT NULL,
survey_settings varchar(50) NOT NULL,
`limit` varchar(50) NOT NULL,
goal varchar(100) DEFAULT NULL,
PRIMARY KEY (SfID)
) ";
}
//sms messages table
$sms_message_table = $wpdb->prefix . "smsfactorymessagetemplate";
if( $wpdb->get_var("show tables like '". $sms_message_table . "'") !== $sms_message_table ) {
$sql[] = "CREATE TABLE ". $sms_message_table . " (
sfID int(11) NOT NULL AUTO_INCREMENT,
sftemplate_name varchar(256) NOT NULL,
sftemplate_type varchar(128) NOT NULL,
PRIMARY KEY (sfID)
) ";
}
if ( !empty($sql) ) {
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option("wnm_db_version", $wnm_db_version);
}
}