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

Langage PHP Discussion :

Création "section" de recherche dans une page


Sujet :

Langage PHP

  1. #21
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    effectivement comme je l'ai noté au dessus , j'ai bien ce code
    (j'ai préféré préciser le scénario de la "petite boite" afin de détailler toutes les étapes et que rien ne nous échappe )

    personnellement j'ouvre le fichier proposé avec mozilla, aucun problème

    Je revérifie depuis tout a l'heure mon code mais l'erreur m'échappe ... ??
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  2. #22
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Bonjour Cyrux,

    Pour répondre à tes diverses questions.

    Concernant l'utilisation des aides de vue dites 'placeholder'.
    J'ai peut-être omis de te dire qu'il existe 2 méthodes :
    -prependXXXX Quand tu utilises la première fois et doit être unique pour tout tes scripts
    -appendXXXXX Quand tu ajoutes

    Si tu lis la doc cela fonctionne par agrégation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Dans une action d'un controller
    $this->view->headScript()->prependFile ('http://localhost/XXXX/public/js/jquery/jquery.1.4.2.js', 'text/javascript');
    $this->view->headScript()->appendFile ('http://localhost/XXXXXXX/public/js/jquery/jquery.jsonSuggest.js', 'text/javascript');
    Mais si cela pose problème, tape directement le lien dans ta vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="http://localhost/XXXXXXX/public/js/jquery/jquery.jsonSuggest.js" type="text/javascript">
    Vérifie avec la console Firebug si tout les scripts son bien chargés.
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  3. #23
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Pour que je ne fasses pas erreur, ou souhaites tu que je place ces lignes de code exactement ? quel contrôler/action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->view->headScript()->prependFile ('http://localhost/XXXXXX/public/js/jquery/jquery.1.4.2.js', 'text/javascript');
    $this->view->headScript()->appendFile ('http://localhost/XXXXXX/public/js/jquery/jquery.jsonSuggest.js', 'text/javascript');
    parce que la, hormis en plaçant celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="http://localhost/XXXXXXX/public/js/jquery/jquery.jsonSuggest.js" type="text/javascript">
    à la main, je ne la vois pas dans la console firebug
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  4. #24
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Apres avoir ajouté la ligne à la main dans mon layout,
    (pour rappel : C:\wamp\www\XXXXXXX\application\layouts\layout.phtml)

    voici ma console firebug :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <head> 
    	<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    		<title>Liste des clients</title>
            <script type="text/javascript" src="/XXXXX/public/js/jquery/jquery-1.4.2.min.js"></script>
    	<script type="text/javascript" src="/XXXXX/public/js/jquery/jquery-ui-1.8.2.custom.min.js"></script>
    	<script type="text/javascript" src="/XXXXX/public/js/jquery/custom.js"></script>
    	<script type="text/javascript" src="/XXXXX/public/js/jquery/jquery.jsonSuggest.js"></script>
    	<link href="/XXXXX/public/css/custom-theme/jquery-ui-1.8.2.custom.css" type="text/css" media="screen" rel="stylesheet">
     
    	<title>
    		Liste des clients		
           </title>
    </head>
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  5. #25
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Cyrux,


    Citation Envoyé par cyrux Voir le message
    autre chose qui peut éventuellement servir :

    quand je saisie test par exemple dans la textbox de recherche et que je tape sur la touche entrée, mon url devient :
    http://localhost/XXXXXXX/?suggestBoxClient=test

    ce qui semble tout à fait normal ... non ?
    Petite explication du fonctionnement de la recherche et du retour d'information.
    - Nous faisons pour l'instant q'une recherche sur le nom du client, il faut taper 3 caractères minimum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    jQuery(function() {
     		$.getJSON("ajax/client",
     			function(data){
     				$('input#suggestBoxClient').jsonSuggest(data,  {minCharacters:3,onSelect:ficheClient});
     			}
     		);
    ATTENTION , il ne faut pas une seule erreur dans tes scripts javascript indiqué par une petite croix rouge en bas à droite.

    Normalement losrque tu rafraischis ta page HTML, tu dois voir dans la console Firebug la requête AJAX, si tu ne vois pas l'onglet JSON c'est qui a eu un problème.

    Après il faut taper au moins 3 caractères comme le code l'indique, mais tu peux changer. normalement une liste de suggestion doit s'afficher.
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  6. #26
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par cyrux Voir le message
    Pour que je ne fasses pas erreur, ou souhaites tu que je place ces lignes de code exactement ? quel contrôler/action
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $this->view->headScript()->prependFile ('http://localhost/XXXXXX/public/js/jquery/jquery.1.4.2.js', 'text/javascript');
    $this->view->headScript()->appendFile ('http://localhost/XXXXXX/public/js/jquery/jquery.jsonSuggest.js', 'text/javascript');
    parce que la, hormis en plaçant celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="http://localhost/XXXXXXX/public/js/jquery/jquery.jsonSuggest.js" type="text/javascript">
    à la main, je ne la vois pas dans la console firebug
    C'est que tu n'as pas compris le fonctionnement.
    le plus simple pour toi et de mettre le code dans la vue ou tu as mis ton formulaire de recherche.
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  7. #27
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Je n'ai aucune petite croix rouge en bas a droite, c'est bon signe

    par contre niveau onglet j'ai html css DOM

    Dans dom j'ai ceci : (j'ai sélectionné ceux qui se rapprochent le plus de notre recherche)

    - ajaxSettings
    - fx qui contient
    ajax,
    ajaxsetup,
    ...
    getJSON

    sa aide ??
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  8. #28
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    le plus simple pour toi et de mettre le code dans la vue ou tu as mis ton formulaire de recherche.
    si je place ce code dans ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script src="http://localhost/XXXXXXX/public/js/jquery/jquery.jsonSuggest.js" type="text/javascript">
    je ne la vois plus dans ma console firebug... alors que si je le place dans le layout, avec toutes les autres, la, je la vois
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  9. #29
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Le problème provient peut être de ma classe étant donné que j'ai une classe
    TClients.php qui contient :
    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
     
    <?php
    class TClients extends Zend_Db_Table_Abstract {
     
     
    	/**
    	 * nom de la table 
    	 */
    	protected $_name = 'client';
     
     
    	/**
    	 * Nom de la clé primaire 
    	 */
    	protected $_primary = "numero_client";
     
     
    	/**
    	 * Selection de toutes les fiches client
    	 */
    	public function selectData () {
     
    		$sql = "SELECT * FROM client";
     
    		return $this->getAdapter('db')->fetchAll($sql);
    	}
     
    	/**
    	 * Selection d'une fiche client
    	 */
    	public function selectDataByID ($numero_client) {
     
    		$sql = "SELECT * FROM client WHERE numero_client = ".$numero_client;
     
    		return $this->getAdapter('db')->fetchAll($sql);		
    	}
     
     
    } //Eof:: class
    ?>
    et une table Clients.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
     
    <?php
    class Clients extends Zend_Db_Table
    {
    	protected $_name = 'client';
     
    	public function select_all_client($id)
    	{
    		$db = Zend_Db_Table_Abstract::getDefaultAdapter(); 		 
    		$select = $db->select()
    		->from($this->_name)
    		->where('numero_client='.$id);
     
    		return  $db->fetchAll($select);
    	}
    }
    La première classe est celle que j'ai rajouté suite à tes conseils et la deuxième est celle que j'utilisais (et que j'utilise toujours d'ailleurs) pour lister mes clients dans des tableaux html

    ??
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  10. #30
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Ou alors de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <script src="<?php echo $this->baseUrl();?>/public/js/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
    <script src="<?php echo $this->baseUrl();?>/public/js/jquery/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script>
    <script src="<?php echo $this->baseUrl();?>/public/js/jquery/custom.js" type="text/javascript"></script>
    <script src="<?php echo $this->baseUrl();?>/public/js/jquery/client.js" type="text/javascript"></script>
    <script src="<?php echo $this->baseUrl();?>/public/js/jquery/jquery.jsonSuggest.js" type="text/javascript"></script>
    <link rel="stylesheet" media="screen" type="text/css" href="<?php echo $this->baseUrl();?>/public/css/custom-theme/jquery-ui-1.8.2.custom.css" />
    que je place dans le layout et non dans la vue.

    note : suite à la relecture du code, je m'apperçoit que j'avais oublié de faire l'appel de client.js => je l'ai rajouté, (toujours dans le layout) mais toujours rien.
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  11. #31
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Cyrux,

    Tu aurais pu fusionner toutes les fonctions dans une même classe modèle de table et tu peux adapter les éléments que je te donnes à ton implémentation. Mais surtout comprends ce que tu fais, lis la documentation tu verras plus vite où cela coince.

    Nous sommes dans un cas ou :
    - suite à une action de l'utilisateur coté client
    - via une requête Ajax
    - nous appelons une action d'un controler
    - l'action du controler interroge la base de données via mon modèle de table
    - L'action du controler renvoie à ma vue une réponse au format JSON qui va être traité coté client par le javascript.

    Quand tu travailles avec JQUERY (javascript) et AJAX il faut bien maitriser FIREBUG, sans quoi tu ne vois pas ce qui ce passe.

    Regarde ce qui se passe au niveau de la console Firebug.
    Attention pour voir les requêtes AJAX clic sur la petite flèche noir de l'onglet console et dans le menu déroulant active "afficher les XMLhttpRequests"

    les requêtes Ajax sont visibles dans la console sous la forme (en gras) GET:http://localhost/xxxxx/ajax/client pour ce cas.

    Il faut également lire la doc de JQUERY se sera utile pour la suite
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  12. #32
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut Fonctionnel !
    HOP HOP HOP!!!!
    Sa fonctionne !!!!!!

    Je m'incline et te présente toutes mes félicitations, t'assure !!!!
    et encore

    Par contre je vais continuer d'être embêtant :

    j'aurais souhaité un résultat de ce style :
    http://jqueryui.com/demos/autocomple...ote-with-cache
    je souhaiterais que les résultats proposés s'affichent "dans une liste et non juste en dessous => ce qui bouge l'ensemble de ma page.

    autre chose :
    suite à la recherche du nom, est il possible d'afficher les informations du client dans un tableau html placé en dessous de la textbox recherche ?

    Actuellement j'ai un talbeau html qui liste tous les clients, et je souhaiterais que lorsque je rentre les informations de recherches,
    le tableau qui liste tous les client s' "amenuise" en fonction de ce que je lui ai demandé de rechercher).
    c'est possible ??

    Encore une fois milles

    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  13. #33
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par cyrux Voir le message
    j'aurais souhaité un résultat de ce style :
    http://jqueryui.com/demos/autocomple...ote-with-cache
    je souhaiterais que les résultats proposés s'affichent "dans une liste et non juste en dessous => ce qui bouge l'ensemble de ma page.
    Oui effectivement le widget "autocomplete" de JQUERY.UI est assez récent et je l'ai pas encore utilisé et je ne propose pas une implémentation dont je ne maitrise pas. Cela ne remet nullement en cause l'enchainement des tâches. Si un jour tu veux utiliser ce "autocomplete" il faudra qu'il remplace (coté client) le code jsonsugget.js tout simplement.

    Pour infos il existe du coté de ZF, une construction du code automatique d'un autocomplete mais j'ai eu des problèmes avec.

    Tu n'as pas oublié la feuille de style jsonsuggest.css ??

    Deuxième point, normalement tu ne devrais avoir simplement la liste de tes noms de client qui t'est proposé au fur et à mesure de la frappe.

    Lorsque que tu sélectionnes un client avec la souris, le code appel la fonction JS ficheClient avec le numero_client
    Cette fonction va faire une requête ajax vers controler/action => ajax/monclient avec un parametre id= numerolclient

    Sur la reussite de la requête Ajax, et bien rien n'est définie sur la présentation des informations retourner.

    Controle bien que tous cela fonctionne
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  14. #34
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Effectivement j'avais oublié la feuille de style jsonsuggest.css ... honte sur moi !!

    Plus rien ne bouge anormalement sur ma page, les "recherches" de la textbox passent au dessus du texte de ma page !! parfait !!!! nikel !!!
    mieux que je ne l'espérait !!!

    encore

    Autre chose :
    Deuxième point, normalement tu ne devrais avoir simplement la liste de tes noms de client qui t'est proposé au fur et à mesure de la frappe.
    effectivement j'ai la liste des noms proposé au fur et à mesure de la frappe



    Autre petite question, est il possible d'ajouter des champs à la recherche ??
    je m'explique,
    je souhaiterais pouvoir rechercher mon client par son numero et/ou nom (sa c'est fait) et/ou son responsable et/ou par son code postal
    donc ajouter des textbox qui permettront de rechercher par numero, nom du responsable, et code postal et ne prendre en compte que ceux qui sont remplis, (voir tous si tout est saisi).
    plus il y aura de textbox remplie et plus la recherche sera précise.
    j'espère être clair

    c'est possible ??

    en d'autre termes, je voudrais ajouter un/plusieur where/And à ma fonction de recherche. est-ce possible ?

    dernière chose :
    Sur la réussite de la requête Ajax, et bien rien n'est définie sur la présentation des informations retourner.
    comment faire pour remplacer le tableau présent en dessous par un tableau qui ne contiendrais que le résultat de la requête ??
    (1 ou plusieurs enregistrement)
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  15. #35
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par cyrux Voir le message
    je souhaiterais pouvoir rechercher mon client par son numero et/ou nom (sa c'est fait) et/ou son responsable et/ou par son code postal
    donc ajouter des textbox qui permettront de rechercher par numero, nom du responsable, et code postal et ne prendre en compte que ceux qui sont remplis, (voir tous si tout est saisi).
    plus il y aura de textbox remplie et plus la recherche sera précise.
    j'espère être clair

    c'est possible ??

    en d'autre termes, je voudrais ajouter un/plusieur where/And à ma fonction de recherche. est-ce possible ?
    Regarde ton code et l'enchainement logique de tâche.
    Dans ton ajaxController tu as
    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
    public function clientAction() {
    
    		// Appel de mon modèle de table
    		$TClients = new TClients;
    			
    		// Extraction de mes données
    		$Clients = $TClients->selectData();
    
    		// Création de ma liste (id et text vont être utilisé pour JQuery Suggest)
    		foreach ($Clients as $Client) {
    			$list[] = array(  'id' 	=> $Client->numero_client
    					  , 'text'=> $Client->nom_client
    							);
    		}
    		
    			// Je renvoie ce tableau à ma vue au format JSON
                $this->_helper->json($list
                                      , array(
                                        		'enableJsonExprFinder' => true
                                              ));
                                              
    	}//Eof:: clientAction
    les paramètres id et text sont utilisés par jsonsugget.js pour afficher la liste de suggestion.
    text est le texte que tu vois (ici nom du client)
    id est l'identifiant correspondant au texte qui va nous servir dans la deuxième requête (ici notre numéro client).

    Donc si tu réfléchis à ta question, où dois tu modifier le code ?
    - et bien tout simplement au niveau de ta requête SQL.

    Deuxième réflexion dont je te laisse mûrir :
    - un code postal peut avoir un ou plusieurs clients !!!
    - un responsable peut avoir un ou plusieurs clients !!!
    - Veux tu afficher une seul fiche client ou une liste de client en fonction d'un critère.

    Nous sommes sur une logique de requêtage sur une base de données, des bonnes questions pour une réponse approprié.

    Bonne réflexion.
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  16. #36
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Citation Envoyé par cyrux Voir le message
    comment faire pour remplacer le tableau présent en dessous par un tableau qui ne contiendrais que le résultat de la requête ??
    (1 ou plusieurs enregistrement)
    Premièrement,
    As tu bien contrôler au niveau de la console Firebug si la 2ème requête ajax te renvoie les données de la fiche client.

    Deuxièmement,
    Au niveau de l'affichage du résultat des recherches il faut distinguer 2 aspects :
    - Affiche la fiche d'un client (après une recherche sur le nom ou numero du client, normalement unique) et donc la recherche par suggestion est correcte.
    - Afficher une liste de clients dans un tableau (après une recherche sur un code postal ou par responsable) et donc ici il faudrait utiliser des listes déroulantes de recherche par exemple.

    Je pense une fois sur la fiche client que tu aimerais faire une modification et l'enregistrer, comme un formulaire !!!

    Personnellement, je trace sur un papier libre le visuel, l'interface pour l'utilisateur, après techniquement il y a toujours une solution.

    JQuery va te permettre de modifier ta page HTML en live suivant les réponses ajax et le clic de l'utilisateur, par exemple cacher ou afficher un tableau, modifier des valeurs, etc... c'est la manipulation du DOM.
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  17. #37
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Encore merci de ta patience et de ta gentillesse !!!

    Donc si tu réfléchis à ta question, où dois tu modifier le code ?
    - et bien tout simplement au niveau de ta requête SQL.
    Le problème viens justement de la, je m'explique :
    un textbox (autocomplete) comprend:
    - 1 requête pour sélectionner l'intégralité des données de la table
    - 1 requête pour sélectionner les donnée d'une entité de la table

    maintenant, mettre plusieurs textbox (autocomplete) reviens bien à dire qu'il faut :
    - 1 requête de sélection de l'intégralité des données par textbox.
    - 1 requête pour sélectionner les données d'une entité de la table

    maintenant, comment faire pour lier 2 ou 3 textbox de sélection à une seule requête ??

    autrement di, j'ai besoin de connaitre tous les clients dupont du code postal 75000 comment puis-je faire ?

    Autre chose :
    Deuxième réflexion dont je te laisse mûrir :
    - un code postal peut avoir un ou plusieurs clients !!!
    - un responsable peut avoir un ou plusieurs clients !!!
    - Veux tu afficher une seul fiche client ou une liste de client en fonction d'un critère.

    Nous sommes sur une logique de requêtage sur une base de données, des bonnes questions pour une réponse approprié.
    Alors,
    - effectivement un code postal peut avoir plusieurs client,
    - un responsable dans mon cas est quelqu'un que l'on peut joindre, comme mes clients sont souvent des entreprises il me faut 1 responsable par entreprise. toutes mes excuses d'avoir omis de le préciser ...

    En d'autre termes, je souhaite afficher une liste de client en fonction de 1 ou plusieurs critères.
    Je souhaite afficher cela sous format de tableau, avec à la fin de chaque ligne retournant un enregistrement une case avec un lien "consulter" qui m'amènera à la fiche client.
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  18. #38
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Autre chose, je viens de tenter de refaire la même manipulation depuis le début, pour ma partie fournisseur.

    J'ai lu et relu plusieurs fois, refais le code de même plusieurs fois.

    j'ai ajouté ces fonctions à mon ajaxcontroller déjà existant :
    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
     
    public function fournisseurAction() 
    {
    	$TFournisseurs = new TFournisseurs;
    	$Fournisseurs = $TFournisseurs->selectData();
     	foreach ($Fournisseurs as $Fournisseur) 
            {
                   $list[] = array(  'id'=> $Fournisseur->numero_fournisseur, 'text'=> $Fournisseur->nom_fournisseur);
            }
    	Zend_Debug::Dump($list);
            $this->_helper->json($list, array('enableJsonExprFinder' => true));
            } 
     
    public function monfournisseurAction() 
    {
    	Zend_Debug::Dump($list);
    	$numero_fournisseur = $this->_request->getParam('id');
            $TFournisseurs = new TFournisseurs;
    	$Fournisseurs = $TFournisseurs->selectDataByID($numero_fournisseur);
     
    	foreach ($Fournisseurs as $Fournisseur) 
    	{
    	$list['fournisseur'][] = array(  'numero_fournisseur'=> $Fournisseur->numero_fournisseur
    	  , 'nom_fournisseur'	=> $Fournisseur->nom_fournisseur
              , 'contact_fournisseur'	=> $Fournisseur->contact_fournisseur
    	  , 'adresse_fournisseur'	=> $Fournisseur->adresse_fournisseur
    	  , 'code_postal_fournisseur'	=> $Fournisseur->code_postal_fournisseur
    	  , 'ville_fournisseur'	=> $Fournisseur->ville_fournisseur);
    	 }
     
    $this->_helper->json($list, array('enableJsonExprFinder' => true));
    }
    sans refaire la fonction init (cela n'aurait aucune utilité je pense).

    j'ai bien revérifié le code avant de poster, et suite à ce "test" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://localhost/xxxx/ajax/fournisseur
    j'obtiens ceci :
    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
     
    <br />
    <b>Notice</b>:  Undefined variable: fournisseur in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>81</b><br />
    <br />
    <b>Notice</b>:  Trying to get property of non-object in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>81</b><br />
    <br />
    <b>Notice</b>:  Undefined variable: fournisseur in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>81</b><br />
    <br />
    <b>Notice</b>:  Trying to get property of non-object in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>81</b><br />
    <br />
    <b>Notice</b>:  Undefined variable: fournisseur in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>81</b><br />
    <br />
    <b>Notice</b>:  Trying to get property of non-object in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>81</b><br />
    <pre>array(3) {
      [0] =&gt; array(2) {
        [&quot;id&quot;] =&gt; string(1) &quot;1&quot;
        [&quot;text&quot;] =&gt; NULL
      }
      [1] =&gt; array(2) {
        [&quot;id&quot;] =&gt; string(1) &quot;2&quot;
        [&quot;text&quot;] =&gt; NULL
      }
      [2] =&gt; array(2) {
        [&quot;id&quot;] =&gt; string(1) &quot;3&quot;
        [&quot;text&quot;] =&gt; NULL
      }
    }
    </pre>[{"id":"1","text":null},{"id":"2","text":null},{"id":"3","text":null}]
    La ligne concernée par l'erreur est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    foreach ($Fournisseurs as $Fournisseur) {$list[] = array(  'id'=> $Fournisseur->numero_fournisseur, 'text'=> $fournisseur->nom_fournisseur);
    J'ai omis quelque chose ou placé quelque chose ou il ne fallait pas ??

    EDIT : j'avais simplement oublié une majuscule à fournisseur.
    maintenant j'ai ce retour ci avec l'url :
    http://localhost/xxxx/ajax/fournisseur
    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
     
    array(3) {
      [0] => array(2) {
        ["id"] => string(1) "1"
        ["text"] => string(17) "fournisseur 1"
      }
      [1] => array(2) {
        ["id"] => string(1) "2"
        ["text"] => string(7) "fournisseur 2"
      }
      [2] => array(2) {
        ["id"] => string(1) "3"
        ["text"] => string(28) "Fournisseur 3"
      }
    }
     
    [{"id":"1","text":"fournisseur 1"},{"id":"2","text":"fournisseur 2"},{"id":"3","text":"fournisseur 3"}]
    mais toujours rien ne s'affiche, je vais tenter d'en savoir un peu plus en continuant d'utiliser firebug => remarquablement excellent cet outil !!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  19. #39
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Points : 184
    Points
    184
    Par défaut
    Cyrux,

    J'ai vu que tu as lu le post sur les listes déroulantes qui s'auto renseignent liste-liees , tu pourrais t'en inspirer.

    J'ai une idée pour utiliser un seul textBox qui proposera de moins en moins de proposition. mais complexe à mettre en place.

    Je pense qu'il faut aller voir les utilisateurs pour connaitre leurs habitudes de recherche, c'est très important de comprendre le métier des gens (tes utilisateurs)

    Je fais un autre message pour construire ton tableau, mais il faut lire la doc JQuery
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  20. #40
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Points : 66
    Points
    66
    Par défaut
    Actuellement ma vue ressemble a ceci :
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    <html>
    	<head>
    		<title>
    			<?php echo $this->escape($this->title); ?>
    		</title>
    	</head>
    	<form id="form">
    			<fieldset>
    			<LEGEND>&nbsp;Recherche&nbsp;</LEGEND> 
    			<span>
    				Nom :
    				<?php 
    					echo $this->formText("suggestBoxClient", "Tapez les premières lettres pour une suggestion", array( 'size' => '53','class' => 'estompe'))
    				?>
    			</span>
    			</fieldset>
    		</form>
    	<fieldset>
    	<body>
    			<h4>
    				<p><a href="<?php echo $this->url(array('controller'=>'index','action'=>'ajouter')); ?>">Ajouter un client</a></p>
    			</h4>
    				<table>
    					<tr>
    						<th>Num&eacute;ro</th>
    						<th>Nom</th>
    						<th>Raison sociale</th>
    						<th>Responsable</th>
    						<th>Adresse</th>
    						<th>Code postal</th>
    						<th>Ville</th>
    						<th>D&eacute;partement</th>
    						<th>Pays</th>
    						<th>Mail</th>
    						<th>Telephone Domicile</th>
    						<th>Action</th>
    					</tr>
    					<?php foreach($this->client as $client) : ?>
    					<tr>
    						<td><?php echo $this->escape($client->numero_client);?></td>
    						<td><?php echo $this->escape($client->nom_client);?></td>
    						<td><?php echo $this->escape($client->numero_raison_sociale_client);?></td>
    						<td><?php echo $this->escape($client->responsable_client);?></td>
    						<td><?php echo $this->escape($client->adresse_client);?></td>
    						<td><?php echo $this->escape($client->code_postal_client);?></td>
    						<td><?php echo $this->escape($client->ville_client);?></td>
    						<td><?php echo $this->escape($client->numero_departement_client);?></td>
    						<td><?php echo $this->escape($client->numero_pays_client);?></td>
    						<td><?php echo $this->escape($client->mail_client);?></td>
    						<td><?php echo $this->escape($client->telephone_domicile_client);?></td>						
    						<td><a href="<?php echo $this->url(array('controller'=>'index','action'=>'modifier', 'id'=>$client->numero_client));?>">Modifier</a>
    						<a href="<?php echo $this->url(array('controller'=>'index','action'=>'supprimer', 'id'=>$client->numero_client));?>">Supprimer</a>
    						<a href="<?php echo $this->url(array('controller'=>'index','action'=>'consulter', 'id'=>$client->numero_client));?>">Consulter</a>
    						</td>
    					</tr>
    					<?php endforeach; ?>
    				</table>
    		</body>
    	</fieldset>
    </html>
    Je voudrais que lors de chaque "première consultation de la page", et tant qu'aucun renseignement de recherche n'as été saisie l'intégralité des clients soit affiché.

    une fois les renseignement fournis, le tableau ne contiendra que les résultats de la requête.
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2015, 21h12
  2. Rechercher dans une page
    Par eric41 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/05/2006, 21h34
  3. [PHP-JS] Rechercher dans une page
    Par eric41 dans le forum Langage
    Réponses: 7
    Dernier message: 08/05/2006, 11h05

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