salut j'ai mis sur pied un autocomple avec jquery et cakephp2.6, cela fonctionne bien sauf j'ai un tout petit soucis avec le résultat obtenu en effet dans ma vue j'ai ceci:```
<div id="recherche">

                                             <div class="input-group">

                                                  <input type="text" class="form-control listepers" placeholder="Entrer le nom, prénom ou login pour la recherche">
                                                  <span class="input-group-btn">
                                                    <button class="btn btn-primary " type="button"> <span class="glyphicon glyphicon-search"></span>        &nbsp;&nbsp; &nbsp;Recherche! </button>
                                                  </span>
                                                </div>

                                   </div>
dans le controlleur je fais ceci:

public function listPerseonnel($query = null)
{

    if($this->request->is('ajax','get'))
    {

                $responseenter = $this->request->query['query'];
                $results= ($this->Attributionfiliere->Personnel->find('all',array(
                'fields' => array('id','pseudo','nom_personnel','prenom_personnel'),
                'conditions' => array('Personnel.enseignements_id' => $this->Auth->user('enseignements_id'),
                'Fonctionpersonnel.poste' => 'Enseignant',
                'OR' => array(

                                    array("nom_personnel LIKE" => "%" . $responseenter . "%"),
                                    array("prenom_personnel LIKE" => "%" . $responseenter . "%"),
                                    array("pseudo LIKE" => "%" . $responseenter . "%")

                            )
                ),
                'recursive' => 0

                )));

            if(empty($results))
            {
                $this->Session->setFlash('Veuillez selectionnez un element valide','default',array('class'=>'alert alert-info'));
                $suggestions = array("data" =>"","value" => "pas de résultat");

            }
            else
            {

                foreach ($results as $key => $resp)  {

                    $suggestions =  array("data" => $resp['Personnel']['id'], "value" => $resp['Personnel']['nom_personnel'] .' ' . $resp['Personnel']['prenom_personnel']);
                    $resp = '{"suggestions" :['. json_encode($suggestions). ']}';

            }

                //debug($resp);
                die ($resp);
                exit();

            }

    }

}

mon sousci est que lorsque je saisi un caractère la recherche est lancé mais me récupère juste un enregistrement au lieu de récupéré plusieurs enregistrement qui corresponde . si j'entre par exemple a et que dans ma base de donnée j'ai plusieurs enregistrement comprenant le caractère a alors sauf le dernier enregistrement sera prise et affiché je ne sais pas si il faut ajouter certains paramètre à la methode find ou pas. merci pour tout vos réponse

3 réponses


Kareylo
Réponse acceptée

Tu reprends chaque fois le dernier enregistrement, c'est pour ça. Il faut que tu stockes le tout dans un tableau comme ceci

if(empty($results))
            {
                $this->Session->setFlash('Veuillez selectionnez un element valide','default',array('class'=>'alert alert-info'));
                $suggestions[] = array("data" =>"","value" => "pas de résultat");

            }
            else
            {

                foreach ($results as $key => $resp)  {

                    $suggestions[] =  array("data" => $resp['Personnel']['id'], "value" => $resp['Personnel']['nom_personnel'] .' ' . $resp['Personnel']['prenom_personnel']);
                    $resp[] = '{"suggestions" :['. json_encode($suggestions). ']}';

            }

Bonsoir,

normal que tu saisisse qu'un enregistrement déjà tu récupère toujours le dernier du trableau retourné via ta requête
t'a deux choix si ton parcours de tableau a une suite de 1 à n
tu utilise les index dans ton fearcheach
sinon
tu fais un array_push

et t'a pas besoin de mettre du json directement ou si tu veux avant ton json_encode structure ton tableau et tu a juste à faire
echo json_encode($array);
die(); et sans exit();

Cordialement.

romses
Auteur

merçi j'ai trouvé il falait stocké dans un tableau comme à précisé "kareylo" et retirer les quotes donc comme ceci:```
if(empty($results))
{
$this->Session->setFlash('Veuillez selectionnez un element valide','default',array('class'=>'alert alert-info'));
$suggestions[] = array("data" =>"","value" => "pas de résultat");
$resp = '{"suggestions" :'. json_encode($suggestions). '}';

            }
            else
            {

                foreach ($results as $key => $resp)  {

                    $suggestions[] =  array("data" => $resp['Personnel']['id'], "value" => $resp['Personnel']['nom_personnel'] .' ' . $resp['Personnel']['prenom_personnel']);
                    $resp = '{"suggestions" :'. json_encode($suggestions). '}';

            }

                die ($resp);

            }


donc cela fonctionne parfaitement et encore merci à vous tous