IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

[0.8] Problème avec la recherche MVC (Tuto d'Akrabat)


Sujet :

Zend_Db PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 59
    Points
    59
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     <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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  3. #3
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 59
    Points
    59
    Par défaut
    Salut goodpz et merci pour ta réponse

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    '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

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    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

  5. #5
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 93
    Points : 59
    Points
    59
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec if, recherche non explicite
    Par beebe dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 26/09/2008, 13h51
  2. Problème avec la recherche FULLTEXT
    Par izbing dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2008, 22h13
  3. [Explorer] Problème avec la recherche
    Par marcel marie dans le forum Windows XP
    Réponses: 3
    Dernier message: 16/08/2007, 08h47
  4. Problème avec la recherche en fulltext
    Par pepelele dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/05/2007, 14h32
  5. problème avec pied de page [Tuto de developpez.com]
    Par developpeur_mehdi dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 15/01/2007, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo