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 07/03/2007, 07h54   #1
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 93
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 93
Points : 28
Points : 28
Envoyer un message via MSN à developpeur_mehdi
Par défaut [0.8] Problème avec la recherche MVC (Tuto d'Akrabat)

Bonjours a tous
voila je me suis lancé dans l'aventure Zend Framework en étudiant à fond le tutorial de Akrabat
puis je me suis mis à le pressonnalisé afin d'en faire un petit gestionnaire de CV histoire de me faire les dents
seulement j'ai un gros problème avec la fonctionnalité recherche de CV
j'explique : j'ai rajouter une fonction " function searchAction()" au controleur
que j'appél via un lien sur la vue "indexIndex.tpl.php"

Code :
 <p><a href="/alitech/index/search">Rechercher un CV</p>
j'ai egalement crée une vue spécifique à la recherche "indexSearch.tpl.php"

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
 <h1><?php echo $this->escape($this->title); ?></h1>
 <table>
 <form action="/alitech/index/search" method="POST">
 <tr><td>Nom</td><td><input type="text" name="nom"></td></tr>
 <tr><td></td><td><input type="submit" value="OK"></td> </tr>
 </form>
 </table>
 <table>
  <tr>
        <th>Nom</th>
        <th>Prenom</th>
        <th>&nbsp;</th>
  </tr>
 
  <?php foreach($this->cv as $cv) : ?>
 
  <tr>
        <td><?php echo $this->escape($cv->nom); ?></td>
        <td><?php echo $this->escape($cv->prenom); ?></td>
        <td>
          <a href="/alitech/index/edit/id/<?php echo $cv->id; ?>"
            >Editer</a>
          <a href="/alitech/index/delete/id/<?php echo $cv->id; ?>"
            >Supprimer</a>
        </td>
  </tr>
  <?php endforeach; ?>
 </table>
seulement je n'arrive pas faire fonctionner la fonction Search dont voici le code
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
function searchAction()
	{
		$view = Zend::registry('view');
 
		$view->title = "Mes CV";
		$cv = new cv();
		$view->cv = $cv->fetchAll();
 
		$view->actionTemplate = 'indexSearch.tpl.php';
		$this->_response->setBody($view->render('site.tpl.php'));
 
		$cv = new cv();
		 if (strtolower($_SERVER['REQUEST_METHOD']) == 'post'){
 
		 	$post = Zend::registry('post');
		 	$nom = $post->getAlpha('nom');
 
		 	if ($nom != ''){
 
		 		            //$view->cv = $cv->find($nom);
		 		           // $where = 'nom = '. $nom;
		 		           // $db = new cv();
 
		 		         /*   $select = $db->select();
		 		            $select->from('cv','*');
		 		            $select->where('nom = ?',$nom);
		 		           */
 
 
		 		            // $view->cv = $DB->fetchAll($select);
		 		            //$where = "nom = ?". $nom;
		 		            //$view->cv = $cv->fetchRow($nom, $where);
		 		           }
		    //$view->actionTemplate = 'indexIndex.tpl.php';
		    //$this->_response->setBody($view->render('site.tpl.php'));
 
		 }else{
 
		 	$view->action = 'edit';
			  	   $view->buttonText = 'Search';
 
			  	   $view->actionTemplate = 'indexSearch.tpl.php';
			  	   $this->_response->setBody($view->render('site.tpl.php'));
		 	 }
		}
}
vous voyez la partie (après récupération du "post") qui est en commentaire ce sont mes différentes expériences d'hier...je sais le désespoir génére un drôle de code
et résultat
Donc un petit coup de pouce SVP merci d'avance
et bon code à tous
developpeur_mehdi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 00h04   #2
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Déjà, es-tu sur que tu arrives dans le scope du "if ($nom != ''){" ?

Ensuite, il se peut fortement que le problème soit ta classe 'cv'.
Celle-ci doit être nommée de la même manière que le nom de la table.
$cv->find() va chercher un row dont la primary key est nommée 'id' par défaut.
Tu peux customiser ces noms comme ceci dans la déclaration de ta classe:

Code :
1
2
3
4
5
class cv extends Zend_Db_Table { 
  protected $_name = 'cv_table';
  protected $_primary = 'cv_id';
  //..
}
J'espère que ça va t'aider, parce que sinon, je ne vois pas trop...
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2007, 18h36   #3
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 93
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 93
Points : 28
Points : 28
Envoyer un message via MSN à developpeur_mehdi
Salut goodpz et merci pour ta réponse

Citation:
Déjà, es-tu sur que tu arrives dans le scope du "if ($nom != ''){" ?
la réponse est oui puisque j'y est mis un test
et ça fonctionne
concernant ma classe cv oui tout est fait dans le model
Code :
1
2
3
4
5
 
class cv extends Zend_Db_Table
	{
 
        }
enfin le lutte continue j'ai remis ça en relisant le manuel et voila mon dernière essai
Code :
1
2
3
4
5
6
7
8
 
if ($nom != ''){
 
		     echo $nom;  
		     $cv = $cv->getAdapter();
		     $where = $cv->quoteInto('nom = ?', $nom);
		     $cv = $cv->fetchRow($where);
		     echo $cv->FetchAll();
et la j'ai un message d'erreur stipulant que
Code :
'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'nom = 'sara'' at line 1'....
pourtant tout va bien avec la base de donnée vue que l'insertion modification et suppression fonctionne ca serai pas une histoire de quote '??? '
Voila et encore merci
developpeur_mehdi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 10h29   #4
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Tu devrais éviter d'utiliser le même nom de variable ($cv) pour différents objets dans un même scope.

Je pense que ton problème viens de fetchRow(). Le premier argument de cette méthode doit être une requête sql complète de type SELECT
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 18h00   #5
Nouveau Membre du Club
 
Inscription : février 2004
Messages : 93
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 93
Points : 28
Points : 28
Envoyer un message via MSN à developpeur_mehdi
Par défaut c réglé

encore merci goodpz
bon j'ai lu et relut le manuel, mais cette fois a défaut de me borné a lire et a relire les classe Zend_DB & co je regardé du coté de Zend_view résultat -> le probléme est résolue
bon je ne suis pas tout a fait en mesure de l'expliquer par écrit mais bon voila le code
pour le controler
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
function searchAction()
	{
.....
..
if ($nom != ''){
	  $cv = $cv->getAdapter();
	  $sql = $cv->quoteInto('SELECT * FROM cv WHERE nom = ?', $nom);
	  $result  = $cv->query($sql);
	  $rows   = $result->FetchAll(); 
	  $view->rowsil = $rows; 
                   }
          $view->actionTemplate = 'indexResult.tpl.php';
	  $this->_response->setBody($view->render('site.tpl.php'));
...
..
et pour la vue
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
 
<?php if ($this->rowsil): ?>
 
    <!-- A table of some books. -->
    <table>
        <tr>
            <th>Nom</th>
            <th>Prenom</th>
        </tr>
 
        <?php foreach ($this->rowsil as $key => $val): ?>
        <tr>
            <td><?php echo $this->escape($val['nom']) ?></td>
            <td><?php echo $this->escape($val['prenom']) ?></td>
        </tr>
        <?php endforeach; ?>
 
    </table>
 
<?php else: ?>
 
    <p>There are no books to display.</p>
 
<?php endif; ?>
vous m'excuserai si je ne commente pas de façon précise mais là j'avoue que j'en ai un peut ras le bol du clavier désolé mais en gros c'était une histoire d'objet BD $cv et de tableau associatif ....voila si vous avez des questions ya pas de probléme
et encore merci goodpz
bon code a tous
developpeur_mehdi 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 15h05.


 
 
 
 
Partenaires

Hébergement Web