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