Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je précise que je débute en poo et avec Zend Framework.
J'aimerai commencer à utiliser certain composant du ZF tel que Zend_Db.
Pour mes essais j'aimerai faire un insert, voici mon début de code qui ne marche pas encore :
<?php require_once("Zend/Db.php"); $params = array ('localhost'=> '127.0.0.1', 'username' => 'xxx', 'password' => 'xxx', 'dbname' => 'xxx'); $db = Zend_Db::factory('PDO_MYSQL', $params); $action_db = new Zend_Db; // add new user in db table users $rows = array( 'id' => '', 'id_secure' => $this->input_value[id_secure], 'email' => $this->input_value[email], 'password' => $this->input_value[password], 'date_created' => $this->input_value[date_created], 'date_expired' => $this->input_value[date_expired], 'date_last_access' => $this->input_value[date_last_access], 'id_language' => $this->input_value[id_language], 'id_permission' => $this->input_value[id_permission], 'account_status' => $this->input_value[account_status] ); $table = 'users'; $action_db->insert($table, $rows); ?>
le message d'erreur est le suivant : Fatal error: Using $this when not in object context in ...
Si quelqu'un peut m'éclairer un peu ou me renvoyer vers un tuto svp ?
Dernière modification par enligne (22-05-2009 09:54:58)
Hors ligne
Bonjour,
tu crées une connexion à une base avec la variable $db et tu demandes à faire une requête avec une variable $action_db qui est une connexion vide sans aucun paramètre.
Il suffit de remplacer
$action_db->insert($table, $rows);
par
$db->insert($table, $rows);
En outre, tu peux retirer la ligne pour l'id si tu ne précises pas de valeur.
Hors ligne
J'ai corrigé mon code mais toujours le même message d'erreur : Fatal error: Using $this when not in object context in ...
le code :
<?php require_once("Zend/Db.php"); $params = array ('localhost'=> '127.0.0.1', 'username' => 'xxx', 'password' => 'xxx', 'dbname' => 'xxx'); $db = Zend_Db::factory('PDO_MYSQL', $params); $db = new Zend_Db; // add new user in db table users $rows = array( 'id_secure' => $this->input_value[id_secure], 'email' => $this->input_value[email], 'password' => $this->input_value[password], 'date_created' => $this->input_value[date_created], 'date_expired' => $this->input_value[date_expired], 'date_last_access' => $this->input_value[date_last_access], 'id_language' => $this->input_value[id_language], 'id_permission' => $this->input_value[id_permission], 'account_status' => $this->input_value[account_status] ); $table = 'users'; $db->insert($table, $rows); ?>
Hors ligne
Tout ton code est à reprendre en fait, il n'y a rien qui va ou presque ^^' Tu devrais peut-être chercher des tutoriaux pour comprendre le php dans un premier temps.
Tu définis un objet puis tu l'écrases par un objet vide, quel intérêt ? Supprime la ligne "$db = new Zend_Db;
".
Ensuite, tu n'es pas dans une classe, donc $this ne correspond à rien du tout ici. $this est une variable qui désigne l'instance de la classe courante à l'intérieure d'une méthode de la dite classe. Remplace toutes tes variables $this->input_value[xxx] par des chaînes de caractères.
$rows = array( 'id_secure' => 1, 'email' => 'xxx@xxx.fr', 'password' => 'abcdef', );
Hors ligne
Merci pour ton aide, voici finalement le code qui fonctionne
<?php // INCLUDES require_once("../includes/config/config_path.php"); // pour définir le path vers la library zend require_once("Zend/Db.php"); require_once("../includes/config/config_db.php"); $db = Zend_Db::factory('PDO_MYSQL', $params); //$params est dans config_db.php // add new user in db table users $rows = array( 'email' => 'my@mail.com', 'password' => 'my_password' ); $table = 'users'; $db->insert($table, $rows); ?>
Dernière modification par enligne (22-05-2009 13:13:15)
Hors ligne