Browsing this Thread:
1 Anonymous Users
Drôle de comportement de variable global |
||
|---|---|---|
|
Nouveau
Joined:
2008/11/27 8:42 Group:
Utilisateurs Enregistrés Posts:
2
Level : 1; EXP : 2
HP : 0 / 0 MP : 0 / 3 ![]() |
Je travail sur une extension pour Wordpress (ma première).
Cette extension permet de trouver un emplacement près de chez vous calculé par distance parcourue, ce qui évite le bug du bureau juste l'autre côté de la rivière. J'ai de la difficulté avec une variable globale qui semble perdre sa valeur quelque part... mais où ? Voici l'extraît de code problématique : [CODE] $gm_api_version = "1.0"; $gm_table = "google_mapper"; function gm_install () { global $wpdb, $gm_table, $gm_api_version; $table_name = $wpdb->prefix . $gm_table /*"google_mapper"*/; if($wpdb->get_var("show tables like '$table_name'") != $table_name) { $sql = "CREATE TABLE " . $table_name . " ( gm_id BIGINT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , gm_name VARCHAR( 100 ) NOT NULL, gm_address VARCHAR( 255 ) NOT NULL, gm_address2 VARCHAR( 255 ) NOT NULL, gm_city VARCHAR( 75 ) NOT NULL, gm_state CHAR( 64 ) NOT NULL, gm_country CHAR( 255 ) NOT NULL, gm_zip VARCHAR( 10 ) NOT NULL, gm_lat DOUBLE NOT NULL, gm_lon DOUBLE NOT NULL, gm_publish VARCHAR( 3 ) NOT NULL, gm_stamp TIMESTAMP NOT NULL );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); add_option("gm_api_version", $gm_api_version); add_option("gm_new_database", $sql); } } [/CODE] Ce code semble suivre les directives de Wordpress.org. $gm_table et $gm_api_version perdent leur valeur mais $wpdb n'as pas de problème. Ma table créé porte donc le nom de "wp_" plutôt que "wp_google_mapper". Dans une autre fonction, j'utilise exactement le même code et tout fonctionne bien : [CODE] function gm_manage_locations() { global $wpdb, $gm_table; echo " " . $gm_table . "";[/CODE] Dans le dernier exemple le titre affiche "google_mapper", ce qui est la bonne valeur. Me voilà bien perplexe face à ce problème, j'imagine que c'est une erreur de ma part mais je n'arrive pas à trouver ce qui est défectueux dans le code. Merci à toute la communauté pour votre support. J'ai bien hâte de vous rencontrer lors de la rencontre de Décembre.
Posted on: 2008/11/27 9:56
|
|
Transfer
|
||
Re: Drôle de comportement de variable global |
||
|---|---|---|
|
Nouveau
Joined:
2008/11/17 13:22 Group:
Utilisateurs Enregistrés Posts:
8
Level : 1; EXP : 73
HP : 0 / 18 MP : 2 / 91 ![]() |
Bonjour, j'ai essayé ton code et voici ce que j'ai pu voir:
Comportement 1: le fichier est inclus à l'intérieur d'une fonction. Par exemple, si le fichier s'appelle 'gm.php';
function uneFonction() {
Dans ce cas, les variables $gm_api_version et $gm_table sont déclarées dans la fonction "uneFonction" et ne sont pas globales. Solution: utiliser la syntaxe avec $GLOBALS pour s'assurer que les variables soient accessibles via le mot clé globals.
$GLOBALS['gm_api_version'] = "1.0";
Comportement 2: la fonction gm_install() est appelée dans le même fichier que la déclaration, mais avant les affectations des variables $gm_api_version et $gm_table. Exemple:
gm_install();
Je ne crois pas que ça soit le cas, car wordpress est modulaire, mais c'est une possibilité.
Posted on: 2008/11/30 23:55
|
|
Transfer
|
||
Re: Drôle de comportement de variable global |
||
|---|---|---|
|
Nouveau
Joined:
2008/11/27 8:42 Group:
Utilisateurs Enregistrés Posts:
2
Level : 1; EXP : 2
HP : 0 / 0 MP : 0 / 3 ![]() |
Merci pour la solution, cela m'éclair et fait du sens.
Tout devrait fonctionner maintenant. Je serai à la rencontre mensuelle ce 4 décembre, j'espère pouvoir vous remercier en personne. Merci pour tout.
Posted on: 2008/12/1 10:10
|
|
Transfer
|
||
Re: Drôle de comportement de variable global |
||
|---|---|---|
|
Nouveau
Joined:
2008/11/17 13:22 Group:
Utilisateurs Enregistrés Posts:
8
Level : 1; EXP : 73
HP : 0 / 18 MP : 2 / 91 ![]() |
Je ne vais pas aux rencontres. C'est trop loin Montréal pour moi (250 Km).
Posted on: 2008/12/1 14:39
|
|
Transfer
|
||
You can view topic.
You cannot start a new topic.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.






Transfer
14th Aug

