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. #61
    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 viens de m'apercevoir de quelque-chose, lorsque je fais une recherche avec ma suggestbox celle ci m'affiche un tableau contenant le résultat de ma recherche => parfait.

    Le problème est que quand je redemandes une recherche sans recharger la page, un autre tableau s'ajoute en dessous contenant le résultat de la 2eme recherche.


    Est il possible de faire disparaitre le tableau a chaque fois que l'on effectue une recherche ??
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  2. #62
    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
    est il possible de n'afficher qu'un tableau ? c'est à dire que lorsque j'arrive sur la page, mon tableau qui liste tous les clients soit apparent et lorsque je saisis une recherche, celui ci disparaisse une fois les résultats de cette recherche retournée pour laisser place aux résultats ???
    Il faut vraiment que tu te familiarises avec JQUERY, il faut simplement faire un display:none de cette façon :
    Mettre ton tableau complet de tous les clients dans un <DIV id="toutclient"></DIV>
    et rajoute en gras das le code client.js
    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
    	
    function ficheClient (item) {
    		
    		 // Envoi requête AJAX   	
    	    $.ajax({
    	         type: "POST"
    	       , url: "ajax/monclient"
    	       , data : {'id':[item.id]}
    	       , dataType: "html"
    	       , success: function(reponse){
     
                            // Cache mon tableau complet
                            $("#toutclient").hide();
    
             		$("#clients").append(reponse);
    // Sur Succès de la réponse AJAX
    	 	    	 
    	              // Reinitialise l'input de recherche
    	 	     	$("input#suggestBoxClient").val("Tapez les premières lettres pour une suggestion");
    	 		$("input#suggestBoxClient").addClass("estompe");
    		    		
    			} // Eof:: success
    		});  //Eof:: ajax
    	}//Eof:: ficheClient
     
    ....
    
    // Supprime la valeur de l'input de saisie suggest lors du focus par la souris
     	$("input#suggestBoxClient").focus (
     			function() {
     				$("input#suggestBoxClient").val("");
     				$("input#suggestBoxClient").removeAttr("class");
                            // Affiche mon tableau complet
                            $("#toutclient").show();
    
     			}
     	); // Eof:: $("input#suggestBoxClient").focus

    autre question :
    maintenant, pour effectuer une recherche sur mes clients par ville, il ne me reste qu'a rajouter une suggestboxVilleClient et à recréer les requetes, je n'ai rien d'autre à ajouter comme code js ou ajax ??

    j'avais tenté de faire une recherche mais cette fois ci dans mes fournisseurs et j'ai bien un retour sur le zend_debug::dump($liste) mais rien ne s'affiche en dessous de la suggestbox ... pourtant la requête retourne bien ce qui est demandé. mais nous verrons le problème un peu plus tard.
    Fais attention à tes ID dans ton HTML qui doivent être unique, et coté javascript bien utiliser $("#monID")..... selon doc JQUERY
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  3. #63
    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
    Le problème est que quand je redemandes une recherche sans recharger la page, un autre tableau s'ajoute en dessous contenant le résultat de la 2eme recherche.
    ?
    C'est tout à fait normale, car dans le code clients.js tu as fais

    $("#clients").append(reponse);

    rajoute au préalabre
    $("#clients").empty();

    Apprend à connaitre les fonctions JQUERY tape l'adresse suivante puis le nom de la fonction (exemple avec empty)
    http://api.jquery.com/empty
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  4. #64
    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 commence à me dire que la perfection a un nom, => Freeseb74 !!

    A chaque fois c'est juste !!!

    Félicitations Freeseb74, t'es vraiment un as !!!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  5. #65
    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
    justement j'étais en train de faire un tour sur cette page, j'allais tenter remove

    je m'aperçoit d'une chose, les liens qui amènent au diverses actions dans mon tableau (modifier/supprimer/consulter) fonctionnent tous sauf consulter.
    en effet, il "n'est plus d'accord" avec l'affichage de mes informations dans la page consulter et me donne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\XXXXXXX\application\views\scripts\index\consulter.phtml on line 14
    la ligne concernée est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $numero_client = $array[$i]['numero_client'];
    pourtant le numéro retourné est le bon car l'url affichée contient le bon numéro
    http://localhost/XXXXXXX/index/consulter/id/4
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  6. #66
    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 tente de faire la sélection de client par ville seul et je posterais mes divers ennuis si j'en rencontre. => il n'y a que comme sa que l'on apprends !! n'est ce pas


    => EDIT : Euh ... Pas facile du tout !! la partie est loin d'être gagnée !!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  7. #67
    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,

    Fatal error: Cannot use object of type stdClass as array
    $array est du type arrayObject à mon avis donc plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $numero_client = $array->numero_client;
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  8. #68
    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
    J'avais bien tenté mais j'ai cette erreur lorsque j'effectue cette modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Notice: Trying to get property of non-object in C:\wamp\www\XXXXXXX\application\views\scripts\index\consulter.phtml on line 14
    Numéro : 
    Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\XXXXXXX\application\views\scripts\index\consulter.phtml on line 16
    Cela fonctionnait pourtant et il me semble ne rien avoir modifié hormis l'ajax/js etc...
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  9. #69
    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
    Concernant la création de la suggestbox de recherche par ville :

    premièrement, ma fonction est elle correcte ??
    elle se trouve dans la classe client à la suite du code préalablement écrit
    (C:\wamp\www\XXXXXXX\application\models\TClients.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /**
    	 * Selection d'une fiche client en fonction du nom de la ville saisi dans la suggestboxVilleClient
    	 */
    	public function selectDataByVille ($ville) 
    	{
    		$sql = "SELECT * FROM client WHERE ville_client = ".$ville_client;
    		return $this->getAdapter('db')->fetchAll($sql);		
    	}
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  10. #70
    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
    premièrement, ma fonction est elle correcte ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	 * Selection d'une fiche client en fonction du nom de la ville saisi dans la suggestboxVilleClient
    	 */
    	public function selectDataByVille ($ville_client) 
    	{
    		$sql = "SELECT * FROM client WHERE ville_client = '".$ville_client." ' ";
    		return $this->getAdapter('db')->fetchAll($sql);		
    	}
    Non, attention au nom de variable (avec Zend_Studio tu l'aurais vu tout de suite)
    et mets entre guillemet $ville_client pour bien gérer les espaces au niveau de la requête SQL
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  11. #71
    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 2 étourderies qui m'auraient occasionnées pas mal de temps de recherche d'erreur !!

    Voici le code corrigé, cette fois ci, je pense qu'il est correct !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	/**
    	 * Selection d'une fiche client en fonction du nom de la ville saisi dans la suggestboxVilleClient
    	 */
    	public function selectDataByVille ($ville_client) 
    	{
    		$sql = "SELECT * FROM client WHERE ville_client = '".$ville_client." ' ";
     
    		return $this->getAdapter('db')->fetchAll($sql);		
    	}
    Si ce code est correct, je passerais à l'étape suivante ! encore !!

    EDIT : OOOPS, J'avais pas vu que tu avais changé le code dans ma citation, toutes mes excuses !!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  12. #72
    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
    Maintenant l'AjaxController :
    Premiere fonction :
    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
     
             /**
    	 * Renvoie la liste des villes des client
    	 */
    	public function villeclientAction() {
     
    		// désactive le rendu de vue et layout
            if($this->_request->isXmlHttpRequest()){
    	        $this->_helper->layout->disableLayout();
                $this->_helper->viewRenderer->setNoRender(true);
            }
    		$TClients = new TClients;
     
    		// Extraction de mes données
    		$Clients = $TClients->selectDataByVille($ville_client);
     
    		foreach ($Clients as $Client) {$list[] = array('text'=> $Client->ville_client);
    		}
    			// Je renvoie ce tableau à ma vue au format JSON
                $this->_helper->json($list, array('enableJsonExprFinder' => true));
            }//Eof:: villeclientclientAction
    Et forcement, premières hésitations : dans la fonction précédente, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($Clients as $Client) {$list[] = array('text'=> $Client->ville_client);
    ce qui me parait correct puisque je n'ai qu'un nom de ville à passer et non un id + un nom de client, mais je ne suis pas sur d'avoir bien saisi, c'est pour cela que je préfères demander !!
    Est-ce correct ??
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  13. #73
    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
    Et voici ma deuxième fonction => de même, je doute que celle ci soit correcte !
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    	/**
    	 * Renvoie la liste des clients dont le nom de la ville correspond au nom de la ville passé en paramêtres.
    	 */
    	public function mavilleclientAction() {
     
    		// désactive le layout
            if($this->_request->isXmlHttpRequest())
    		{
    	        $this->_helper->layout->disableLayout();
            }
     
    		// Récupère le nom de la ville du client	
    		$array = $this->_request->getValue('ville_client');
    		$ville_client = $array[6]; // $array[6] car ville_client est placé en 7ème dans ma base et comme on commmence a 0
     
    		// Appel de mon modèle de table
    		$TClients = new TClients;
     
    		// Extraction de mes données
    		$VilleClients = $TClients->selectDataByVille($ville_client);
     
    		$html = ' 
    		<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épartement</th>
    				<th>Pays</th>
    				<th>Mail</th>
    				<th>Telephone Domicile</th>
    				<th>Action</th>
    			</tr>
    		';	
     
    	foreach($VilleClients as $client) {
    		$html .= '<tr>';
    		$html .= '<td>'.$client->numero_client.'</td>';
    		$html .= '<td>'.$client->nom_client.'</td>';
    		$html .= '<td>'.$client->numero_raison_sociale_client.'</td>';
    		$html .= '<td>'.$client->responsable_client.'</td>';
    		$html .= '<td>'.$client->adresse_client.'</td>';
    		$html .= '<td>'.$client->code_postal_client.'</td>';
    		$html .= '<td>'.$client->ville_client.'</td>';
    		$html .= '<td>'.$client->numero_departement_client.'</td>';
    		$html .= '<td>'.$client->numero_pays_client.'</td>';
    		$html .= '<td>'.$client->mail_client.'</td>';
    		$html .= '<td>'.$client->telephone_domicile_client.'</td>';					
    		$html .= '<td>';
    		$html .= '<a href="'.$this->view->url(array('controller'=>'index'
    													  ,'action'=>'modifier'
    													  , 'id'=>$client->numero_client))
    													  .'">Modifier</a>&nbsp;&nbsp;';
    		$html .= '<a href="'.$this->view->url(array('controller'=>'index'
    		 												,'action'=>'supprimer'
    		 												, 'id'=>$client->numero_client))
    		 												.'">Supprimer</a>&nbsp;&nbsp;';
            $html .= '<a href="'.$this->view->url(array('controller'=>'index'
            												,'action'=>'consulter'
            												, 'id'=>$client->numero_client))
            												.'">Consulter</a>';
    		$html .= '</td>';
    		$html .= '</tr>';
    	}
     
    		$html .= '</table>';
     
    		// Assignation de mes différents éléments à ma vue
    		$this->view->html = $html;
     
    		// Appel automatique de ma vue
     
    	}//Eof:: mavilleclientAction
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  14. #74
    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
    Troisième étape :
    L'inclusion de suggestbox dans le index.phtml devient :
    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
     
    <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'))
    		?>		
    		Ville :
    		<?php 
    		echo $this->formText("suggestBoxVilleClient", "Tapez les premières lettres pour une suggestion", array( 'size' => '53','class' => 'estompe'))
             	?>		
    		</span>
    	</fieldset>
    </form>
    Pour rappel : C:\wamp\www\XXXXXXX\application\views\scripts\index\index.phtml
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  15. #75
    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 Client.js
    Concernant le client.js, il faut que j'y ajoute la suggestboxVilleClient et,
    la aussi sa se gate , je n'arrive à rien afficher et rien n'est retourné ... sauf une erreur me disant qu'il ne connais pas $ville_client.
    pour info, voici mon client.js
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    // sur chargement du document DOM termniné (soit notre page HTML) 
    $(document).ready(function() {
     
    function ficheClient (item) {
     
    		 // Envoi requête AJAX   	
    	    $.ajax({
    	         type: "POST"
    	       , url: "ajax/monclient"
    	       , data : {'id':[item.id]}
    	       , dataType: "html"
    	       , success: function(reponse){
     
    			 // Cache mon tableau complet
                $("#grandclient").hide();
     
    			// efface le tableau de recherche
    			$("#clients").empty();
     
    			$("#clients").append(reponse);
    // Sur Succès de la réponse AJAX
     
    	              // Reinitialise l'input de recherche
    	 	     	$("input#suggestBoxClient").val("Tapez les premières lettres pour une suggestion");
    	 		$("input#suggestBoxClient").addClass("estompe");
     
    			} // Eof:: success
    		});  //Eof:: ajax
    	}//Eof:: ficheClient
     
    	// Gère le suggest après retour de la liste des documents au format json
     	// fait appel au script jquery.jsonsuggest.js
     	jQuery(function() {
     		$.getJSON("ajax/client",
     			function(data){
     				$('input#suggestBoxClient').jsonSuggest(data,  {minCharacters:3,onSelect:ficheClient});
     			}
     		);	
     	}); // Eof:: jQuery
     
     
     // Supprime la valeur de l'input de saisie suggest lors du focus par la souris
     	$("input#suggestBoxClient").focus (
     			function() {
     				$("input#suggestBoxClient").val("");
     				$("input#suggestBoxClient").removeAttr("class");
     			// Affiche mon tableau complet
                            $("#grandclient").show();
    						$("#clients").empty();
    			}
     	); // Eof:: $("input#suggestBoxClient").focus
     
    function ficheVilleClient (item) {
     
    		 // Envoi requête AJAX   	
    	    $.ajax({
    	         type: "POST"
    	       , url: "ajax/mavilleclient"
    	       , data : {'id':[item.id]}
    	       , dataType: "html"
    	       , success: function(reponse){
     
    			 // Cache mon tableau complet
                $("#grandclient").hide();
     
    			// efface le tableau de recherche
    			$("#clients").empty();
     
    			$("#clients").append(reponse);
    // Sur Succès de la réponse AJAX
     
    	              // Reinitialise l'input de recherche
    	 	     	$("input#suggestBoxVilleClient").val("Tapez les premières lettres pour une suggestion");
    	 		$("input#suggestBoxVilleClient").addClass("estompe");
     
    			} // Eof:: success
    		});  //Eof:: ajax
    	}//Eof:: ficheClient
     
    	// Gère le suggest après retour de la liste des documents au format json
     	// fait appel au script jquery.jsonsuggest.js
     	jQuery(function() {
     		$.getJSON("ajax/villeclient",
     			function(data){
     				$('input#suggestBoxVilleClient').jsonSuggest(data,  {minCharacters:3,onSelect:ficheClient});
     			}
     		);	
     	}); // Eof:: jQuery
     
     
     // Supprime la valeur de l'input de saisie suggest lors du focus par la souris
     	$("input#suggestBoxVilleClient").focus (
     			function() {
     				$("input#suggestBoxVilleClient").val("");
     				$("input#suggestBoxVilleClient").removeAttr("class");
     			// Affiche mon tableau complet
                            $("#grandclient").show();
    						$("#clients").empty();
    			}
     	); // Eof:: $("input#suggestBoxVilleClient").focus	
     
    }); // Eof:: Chargement de ma page terminé
    Alors la, si y'a pas masse d'erreurs, moi je suis curé comme on dit par chez moi !!!! j'ai fait ce que j'ai pensé depuis le début, mais bon, les problèmes s'accumulent ...

    Quelqu'un peut il me sortir de ce bourbier ?? d'avance!!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  16. #76
    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 bourbier continue ...
    je n'ai plus accès à aucune fonction consulter que j'avais créé et qui (fonctionnait parfaitement avant malheureusement)
    Voici la fonction consulter de mon indexController.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
     
    function consulterAction()
    	{
    	        $this->view->title = "Consultation de client";
    		$client = new Clients();
    		//récupération de l'id du client
    		$id = (int)$this->_request->getParam('id');
    		$this->view->client = $client->select_all_client($id);
    		// on selectione les dossiers en rapport avec le client selectionné précédemment.
     
    		$dossier = new Dossiers();
    		// l'id passé en paramêtre est celui du client qui permetra de retrouver les dossiers lui appartenant avec le numero_client_dossier.
    		$this->view->dossier = $dossier->select_all_dossier_client($id);
    	}
    et voici consulter.phtml :
    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
     
    <html>
    	<head>
    		<title>
    			<?php echo $this->escape($this->title); ?>
    		</title>
    	</head>
    	<body>
     
    		<?php
    			$array = $this->client;
    			for ($i = 0; $i < count($this->client);$i++) 
    			{
     
    		$numero_client = $array->numero_client;
    			?>		
    				Num&eacute;ro :	<?php echo $array[$i]['numero_client'];?></br>
    				Nom : <?php echo $array[$i]['nom_client'];?></br>
    				Raison sociale : <?php echo $array[$i]['numero_raison_sociale_client'];?></br>
    				Responsable : <?php echo $array[$i]['responsable_client'];?></br>
    				Adresse : <?php echo $array[$i]['adresse_client'];?></br>
    				Code postal : <?php echo $array[$i]['code_postal_client'];?></br>
    				Ville : <?php echo $array[$i]['ville_client'];?></br>
    				Mail : <?php echo $array[$i]['mail_client'];?></br>
    				Telephone Domicile : <?php echo $array[$i]['telephone_domicile_client'];?></br>
     
    		<?php	
    			} 
    		?>
    			<!--dossier en rapport avec le client préalablement séléctionné.-->
    	<h3>
    		Dossiers du client :
    	</h3>
     
    	<table>
    				<tr>
    					<th>Num&eacute;ro Dossier</th>
    					<th>Libell&eacute;</th>
    					<th>Date</th>
    				</tr>
    		<?php $array = $this->dossier;
    			for ($i = 0; $i < count($this->dossier);$i++) 
    			{
    		?>
    				<tr>
    					<td><?php  echo $array[$i]['numero_dossier'];?></td>
    					<td><?php  echo $array[$i]['libelle_dossier'];?></td>
    					<td><?php  echo $array[$i]['date'];?></td>
    				</tr>
    		<?php	
    			} 
    		?>	
    	</table>	
    	</body>
    </html>
    et voici les erreurs générées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\XXXXXXX\application\views\scripts\index\consulter.phtml on line 14
    Et la ligne concernée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //la ligne 14
    $numero_client = $array[$i]['numero_client'];
    Merci d'avance, je ne sais pas du tout d'où provient le problème, cela fonctionnait pourtant sans problème ??


    EDIT : quand je fais un var_dump($array); juste avant la ligne 14 j'ai en retour les bons résultats ... incompréhensible !!!
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  17. #77
    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
    Maintenant l'AjaxController :
    Premiere fonction :
    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
     
             /**
    	 * Renvoie la liste des villes des client
    	 */
    	public function villeclientAction() {
     
    		// désactive le rendu de vue et layout
            if($this->_request->isXmlHttpRequest()){
    	        $this->_helper->layout->disableLayout();
                $this->_helper->viewRenderer->setNoRender(true);
            }
    		$TClients = new TClients;
     
    		// Extraction de mes données
    		$Clients = $TClients->selectDataByVille($ville_client);
     
    		foreach ($Clients as $Client) {$list[] = array('text'=> $Client->ville_client);
    		}
    			// Je renvoie ce tableau à ma vue au format JSON
                $this->_helper->json($list, array('enableJsonExprFinder' => true));
            }//Eof:: villeclientclientAction
    Et forcement, premières hésitations : dans la fonction précédente, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($Clients as $Client) {$list[] = array('text'=> $Client->ville_client);
    ce qui me parait correct puisque je n'ai qu'un nom de ville à passer et non un id + un nom de client, mais je ne suis pas sur d'avoir bien saisi, c'est pour cela que je préfères demander !!
    Est-ce correct ??
    Non, tu envoies des données au plugin jsonsuggest.js qui a besion de deux clés :
    - id, qui sera l'identifiant qui sera retourné
    - text, pour le texte visible à l'écran

    Comme tu veux rechercher sur la ville client alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach ($Clients as $Client) {$list[] = array(
     'id'=> $Client->ville_client
    , 'text'=> $Client->ville_client
    );
    Apprendre c'est se faciliter la vie !
    http://e-tuto.fr

  18. #78
    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
    Ok ! sa c'est corrigé et compris !!

    Je ne savais pas que l'on pouvais mettre la même chose en id et en text (je n'ai pas de numero_ville) c'est juste un champs texte qui se trouve dans ma table client.

    D'autre problèmes doivent exister étant donné que rien ne s'affiche, je cherche les autre erreurs, mais en vain !!

    si quelqu'un voit quelque chose qui cloche, toute suggestion est la bienvenue !!

    Merci d'avance !

    Petite précision : Selon Firebug, j'aurais une erreur dans mon ajaxController à la ligne 126
    Voici l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <br />
    <b>Notice</b>:  Undefined variable: ville_client in <b>C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php</b> on line <b>126</b><br />
    et voici la fameuse ligne 126 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Clients = $TClients->selectDataByVille($ville_client);
    Pourquoi ne connais il pas ma variable $ville_client ??

    Autre petite précision, je teste avec des villes "en dur" comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ville_client = 'Paris';
    et suite à cela, la liste déroulante s'affiche en dessous de la suggestbox => et ma requête ajax est correcte.
    cependant quand je clique pour valider mon choix j'ai une autre erreur que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Paris' in 'where clause'' in C:\wamp\www\XXXXXXX\library\Zend\Db\Statement\Pdo.php:228 Stack trace: 
    #0 C:\wamp\www\XXXXXXX\library\Zend\Db\Statement\Pdo.php(228): PDOStatement->execute(Array) 
    #1 C:\wamp\www\XXXXXXX\library\Zend\Db\Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array) 
    #2 C:\wamp\www\XXXXXXX\library\Zend\Db\Adapter\Abstract.php(468): Zend_Db_Statement->execute(Array) 
    #3 C:\wamp\www\XXXXXXX\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT * FROM c...', Array) 
    #4 C:\wamp\www\XXXXXXX\library\Zend\Db\Adapter\Abstract.php(706): Zend_Db_Adapter_Pdo_Abstract->query('SELECT * FROM c...', Array) 
    #5 C:\wamp\www\XXXXXXX\application\models\TClients.php(35): Zend_Db_Adapter_Abstract->fetchAll('SELECT * FROM c...') 
    #6 C:\wamp\www\XXXXXXX\application\controllers\AjaxController.php(49): TClients->selectDataByID('Paris') 
    #7 C:\wamp\www\XXXXXXX\library\Zend\Controller\A in C:\wamp\www\XXXXXXX\library\Zend\Db\Statement\Pdo.php on line 234
    Je n'y comprends décidément plus rien !
    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !

  19. #79
    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
    Personne n'a de réponse ???
    j'ai beau tenter de retourner le schmilblick dans tous les sens possibles et inimaginables, rien n'y fait !!!
    je n'ai toujours rien hormis des erreurs !!!

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

  20. #80
    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
    Réponse à moi même (sa peut toujours servir pour des "paumés" comme moi )

    Un problème résolu :
    pour ma fonction villeclientaction il fallait faire 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
     
             /**
    	 * Renvoie la liste des villes des client
    	 */
    	public function villeclientAction() 
    	{
    		// désactive le rendu de vue et layout
            if($this->_request->isXmlHttpRequest())
    		{
    	        $this->_helper->layout->disableLayout();
                $this->_helper->viewRenderer->setNoRender(true);
            }
     
    		// 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->ville_client, 'text'=> $Client->ville_client);
    			}
     
    		// Je renvoie ce tableau à ma vue au format JSON
            $this->_helper->json($list, array('enableJsonExprFinder' => true));
        }//Eof:: villeclientAction
    Et non pas tout le "baratin" que j'avais noté précédemment. je suis un réel !!

    Maintenant j'arrive a avoir la liste déroulante avec le nom des villes en dessous de ma suggestboxvilleclient mais j'ai toujours l'erreur lorsque je clique pour valider ma recherche.

    Je vais chercher pourquoi et posterais la réponse si je trouve.
    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, 20h12
  2. Rechercher dans une page
    Par eric41 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/05/2006, 20h34
  3. [PHP-JS] Rechercher dans une page
    Par eric41 dans le forum Langage
    Réponses: 7
    Dernier message: 08/05/2006, 10h05

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