Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/09/2007, 12h09   #1
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 73
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 73
Points : 26
Points : 26
Par défaut erreur dans zend_db_table_abstract:undefined offset

bonjour tout le monde
j'ai une erreur bizarre qui est declenchée suite à une tentative d'jout d'un enregistrement dans la base.
l'erreur est
Code :
1
2
3
Notice: Undefined offset: 1 in C:\wamp\www\maghrebjob\library\Zend\Db\Table\Abstract.php on line 742
 
Fatal error: Call to a member function insert() on a non-object in C:\wamp\www\maghrebjob\library\Zend\Db\Table\Abstract.php on line 757
j'ai essayé de voir dans abstract.php j'ai trouvé qu'il s'agit une certaine variable pkIdentity qui sert pour les cles primaires composites or ma clé est simple. je comprends pas cette erreur et je vous prie de m'aider à la resoudre.
h_ismaili est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 13h57   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Salut,

On peut voir le code? Où tu ajoutes ton enregistrement.
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 14h09   #3
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 73
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 73
Points : 26
Points : 26
Par défaut code d'insertion de l'enregistrement

oui bien sur

voici le code de la fonction d'insertion
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function ajouterAction(){
			$this->view->title = "Ajouter une offre!!";
			$offer = new OffreGestion();
				$this->view->params = 'vide' ;
			if($this->_request->isPost()){
				Zend_Loader::loadClass('Zend_Filter_StripTags');
				$filter = new Zend_Filter_StripTags();
 
				$soc = (int)$filter->filter($this->_request->getPost('client'));
				$tit = $filter->filter($this->_request->getPost('title'));
				$tit = trim($tit);
				$sex = (int) $filter->filter($this->_request->getPost('sex'));
				$age_min = (int)$filter->filter($this->_request->getPost('age_min'));
				$age_max = (int)$filter->filter($this->_request->getPost('age_max'));
				$study_lev = (int)$filter->filter($this->_request->getPost('studies_level'));
				$experience = (int)$filter->filter($this->_request->getPost('experience'));
				$sect = (int)$filter->filter($this->_request->getPost('sector'));
				$func = (int)$filter->filter($this->_request->getPost('function'));
				$pays = (int)$filter->filter($this->_request->getPost('country'));
				$desc = $filter->filter($this->_request->getPost('desc'));
				$desc = trim($desc);
				$sal = (int)$filter->filter($this->_request->getPost('salary'));
				$count = (int)$filter->filter($this->_request->getPost('country'));
				$date_dep = $filter->filter($this->_request->getPost('date_depot'));
 
				$data = array(
					'c_id' =>$soc,
					'sex' => $sex,
					'age_min' => $age_min,
					'age_max' => $age_max,
					'studies_level' => $study_lev,
					'experience' => $experience,
					'title' => $tit,
					'sector' => $sect,
					'function' => $func,
					'country_id' => $count,
					'desc' => $desc,
					'salary' => $sal,
					'date' => $date_dep
				);
				$offer->insert($data);
				$this->_redirect('/offre/ajouter');
				return;
			}
 
 
			$this->view->offre = $offer->setNewOffer() ;
 
			$this->view->action = 'ajouter';
			$this->view->buttonText = 'Ajouter';
	}
h_ismaili est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2007, 22h38   #4
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Bon apparemment l'instanciation ne fonction pas. Etant donné qu'il te dis que $offer n'est pas un objet. Tu peux me montrer ta classe de model OffreGestion ? Voir si la structure est correcte...
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2007, 12h09   #5
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 73
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 73
Points : 26
Points : 26
Par défaut code de la classe model

je travaille avec mysql et voici la définition de la classe du model
Code :
1
2
3
4
5
6
7
8
9
10
11
	class OffreGestion extends Zend_Db_Table{
		protected $_name = 'c_offer';
		protected $_primary = 'id';
		protected $_identity = 0;
 
		private $db1;
		function __construct(){
			Zend_Loader::loadClass('clientGestion');
			Zend_Loader::loadClass('Zend_Date');
			$this->db1 = Zend_Db_Table_Abstract::getDefaultAdapter();
		}
h_ismaili est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 13h31   #6
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
J'ai trouvé l'erreur. Dans ton model tu redéfinis le constructeurs. Mais tu dois appelé le constructeurs parent de la classe dont tu dérive... Donc dans ton constructeur tu dois ajouter le code suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
class OffreGestion extends Zend_Db_Table{
        protected $_name = 'c_offer';
        protected $_primary = 'id';
        protected $_identity = 0;
 
        private $db1;
        function __construct(){
            parent::__construct($config); //config est un array de config pour la connexion à la base de donnée
            Zend_Loader::loadClass('clientGestion');
            Zend_Loader::loadClass('Zend_Date');
            $this->db1 = Zend_Db_Table_Abstract::getDefaultAdapter();
        }
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web