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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut Création "section" de recherche dans une page
    tout le monde,

    Le nombre d'information que j'ai à gérer avec mon application étant gigantesque, je cherche à créer dans mes pages une "section de recherche".

    Je m'explique :

    Je voudrais par exemple pouvoir taper le nom/ début du nom d'un client ou sa date d'arrivée ou encore son numéro de client. et récupérer les résultats qui seront en fonctions des informations saisies.

    je souhaiterais que les résultats s'affichent "instantanément" si possible (le temps de faire la requête et de récupérer les infos bien évidement pris en compte ).

    Je ne sais pas du tout comment m'y prendre, si il faut obligatoirement un rechargement de page ou si l'on peut afficher les résultats dans un tableau presque instantanément sans avoir à cliquer sur un bouton valider ...

    Quelqu'un pourrait il m'éclairer la dessus ???
    J'espère ne pas avoir été trop flou ...

    Merci d'avance !!!!

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut Sa avance ...
    J'ai trouvé comment faire pour ajouter le formulaire de recherche

    maintenant reste à trouver comment :
    - faire la requête de sélection en fonction de plusieurs critères qui seront remplis, ou non ...

    - charger les résultats dans un tableau placé en dessous du formulaire dans la même page (sans rechargement de page si possible ...)

    ... va pas être facile tout sa ...

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

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

    C'est tout à fait possible, mais cela demande une organisation et des connaissances en JSON, Ajax, Jquery.
    Il faudra bien faire la différencie entre ce qui se passe du coté client et du coté serveur.
    JSON (Javascript Object Notation) qui permet de transmettre des informations entre le serveur et le client pour le javascript.
    Ajax pour gérer les requêtes en mode silencieux sans recharger la page.
    JQuery pour l'autocomplete et la manipulation du DOM pour afficher un popup ou modifier la page en fonction du retour d'information de la question de l'utilisateur.

    Il faut donc bien s'organiser, ne connaissant pas tes données je vais te guider dans la démarche, et tu posteras le code au fur et à mesure.

    Premièrement les requêtes.
    Créer dans tes modèles de tables les fonctions pour interroger la DB :
    - liste des clients (exemple id_client, nom_client)
    - les informations dont tu veux afficher pour un client (where id_client)

    Ces fonctions seront appelés depuis les controller.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Un énorme pour cet aide !!!

    Premièrement les requêtes.
    Créer dans tes modèles de tables les fonctions pour interroger la DB :
    - liste des clients (exemple id_client, nom_client)
    - les informations dont tu veux afficher pour un client (where id_client)
    Pour la liste des clients :
    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);
    	}
    }
    Par contre pour le where, j'ai peu de ne pas avoir bien compris ce que je devais faire,
    ceci est il correct ?? : (il reste quelque points pas très clair, je les ai mis en commentaire)
    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
     
    <?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('numero_client', 'nom_client', 'responsable_client', 'adresse_client', 'code_postal_client', 'ville_client')
    	      ->from($this->_name)
    	      ->where('numero_client='.$id)
                  ->or ('nom_client'=.) // je ne sais pas quoi mettre ici comme je ne recupère que l'id ...
                  ->or ('responsable_client'=.) //pareil ici ...
                  ->or ('code_postal_client'=. ); //pareil ici ...
     
     
    	return  $db->fetchAll($select);
    	}
    }
    mais comment faire pour ne prendre en compte que les champs qui ont été saisis ?

    et tu posteras le code au fur et à mesure.
    Pas de soucis
    et j'espère que cela servira à d'autres !!!

    Encore Merci !

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

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

    Non il te faut 2 requêtes :
    une pour la liste de tous les clients, pour l'autocomplete (la recherche pour l'instant sur le nom du client)
    l'autre pour renvoyer toutes les informations d'un client choisi lors de la recherche.

    De Plus n'utilise pas cette syntaxe select_all_client qui pour ZF veut dire quelques chose.
    Autre chose avant d'utiliser Zend_Db_Select, une bonne requête SQL est plus fiable et claire.

    Voici notre modèle de table 'client'
    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
    ?>
    Dans ton bootsrap (si tu n'utilise pas Zend_Application) définit ton adapter par défaut une fois pour toutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // fournit les paramètres de connexion à Zend_Db
    $db = Zend_Db::factory($this->_configMain->db); // Selon ta méthode
    // Réalise une connexion à la base de données pour contrôle
    $db->getConnection();
    // Je donne à ma classe Zend_Db_Table l'objet adaptateur par défaut 
    Zend_Db_Table::setDefaultAdapter($db);
    // Tous les résultats des requêtes seront sous forme d'objet
    $db->setFetchMode(Zend_Db::FETCH_OBJ);
    Je passe à le deuxième étape, post suivant.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Questions pour être sur de bien comprendre :
    je pense dire des bétises mais comme je l'ai dit c'est pour bien comprendre.

    il me faut une nouvelle classe ?? dans ma classe client j'ai actuellement 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
     
    <?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);
    	}
    }
    concernant mon boostrap maintenant (il se situe dans : C:\wamp\www\XXXXXXX\index.php)
    contient 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
     
    <?php
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 1);
    date_default_timezone_set('Europe/Paris');
     
    // mise en place des répertoires et chargement des classes
    set_include_path('.'
    . PATH_SEPARATOR . './library'
    . PATH_SEPARATOR . './application/models/'
    . PATH_SEPARATOR . get_include_path());
     
    require_once 'Zend/Loader/Autoloader.php'; 
    Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
     
    // Chargement de la configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
     
    // Mise en place de la BDD
    $db = Zend_Db::factory($config->db);
    Zend_Db_Table::setDefaultAdapter($db);
     
    // mise en place du controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
    Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
     
    // execution
    $frontController->dispatch();
    j'y ajoute ton code ?

    Merci de ta patience et de tes précieux conseils

    Pour information, pour ma connection j'utilise un fichier config.ini
    qui se situe dans: C:\wamp\www\XXXXXXX\application\config.ini
    et qui contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [general]
    db.adapter = PDO_MYSQL
    db.params.host = localhost
    db.params.username = ********
    db.params.password = ********
    db.params.dbname = *********

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

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

    Deuxième étape le controller AJAX

    Nous avons besoin d'un controller spécifique à des requêtes AJAX du client.
    Voir explication dans 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
    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
     
    <?php
    class AjaxController extends Zend_Controller_Action {
     
    	/**
    	 * Initialiseur de ma classe
    	 */
     	public function init () {
     
            //si requete ajax on désactive les layouts et le rendu de la vue
            if($this->_request->isXmlHttpRequest()){
    	        $this->_helper->layout->disableLayout();
                $this->_helper->viewRenderer->setNoRender(true);
                $this->_helper->viewRenderer->setNeverRender(true);
            }
     
     	}//Eof:: init
     
    	/**
    	 * Renvoie la liste de mes noms de client
    	 */
    	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
     
     
    	/**
    	 * Renvoie la fiche d'un client
    	 */
    	public function monclientAction() {
     
    		// Récupère le numéro du client
    		$numero_client = $this->_request->getParam('id');
     
    		// Appel de mon modèle de table
    		$TClients = new TClients;
     
    		// Extraction de mes données
    		$Clients = $TClients->selectDataByID($numero_client);
     
    		// Création de ma liste
    		foreach ($Clients as $Client) {
    			$list['client'][] = array(  'numero_client'	=> $Client->numero_client
    									  , 'nom_client'	=> $Client->nom_client
    									  , 'responsable_client'	=> $Client->responsable_client
    									  , 'adresse_client'	=> $Client->adresse_client
    									  , 'code_postal_client'	=> $Client->code_postal_client
    									  , 'ville_client'	=> $Client->ville_client
    							);
    		}
     
    			// Je renvoie ce tableau à ma vue au format JSON
                $this->_helper->json($list
                                      , array(
                                        		'enableJsonExprFinder' => true
                                              ));
     
    	}//Eof:: clientAction	
     
    }//Eof::Class
    ?>
    Voilà pour notre controller, il nous faut une zone de texte pour la recherche.
    Le plus simple est d'utiliser une aide de vue et non la construction d'un formulaire avec Zend_Form

    Dans ta page (la vue) ou tu veux faire la recherche met le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form id="form">
    <span>
    	<?php echo $this->formText(
    						"suggestBoxClient"
    					  , "Tapez les premières lettres pour une suggestion"
    					  , array( 'size' => '53'
    			  		  ,'class' => 'estompe'	
    				  		)	
    			)?>
    </span>
    </form>
    Terminer pour le coté serveur maintenant, plus que du javascript avec l'aide de JQUERY.

    3ème étapes l'autocomplete, post suivant.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

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

    Pour ton bootstrap si je reprends une partie de ton code en ajoute du code cela donne

    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
     
    // Mise en place de la BDD
    try {
          // fournit les paramètres de connexion à Zend_Db
          $db = Zend_Db::factory($config->db);
          // Réalise une connexion à la base de données pour contrôle
        	$db->getConnection();
        	// Je donne à ma classe Zend_Db_Table l'objet adaptateur par défaut 
    	Zend_Db_Table::setDefaultAdapter($db);
    	// Tous les résultats des requêtes seront sous forme d'objet
    	$db->setFetchMode(Zend_Db::FETCH_OBJ);
     
    // Jeu d'exception
    } catch (Zend_Db_Adapter_Exception $e) {
        die ("Probablement mauvais identifiants,ou alors le SGBD n'est pas joignable: ".$e->getMessage());
    } catch (Zend_Exception $e){
        die("factory() n'a pas réussi à charger la classe de l'adaptateur demandé : ".$e->getMessage());
    }
    Pour le modèle de table j'ai effectivement refait une class TClients en remplacement de la tienne.

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    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.

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

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

    Pour ton dernier message, je pense que tu devrais construire ton tableau 'table' en tant que chaine de caractère HTML dans la fonction "monClient". Tu n'enverras plus une réponse json mais HTML donc modifier la requête AJAX pour le type de json à html.

    Ton code javascript
    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
    function ficheClient (item) {
    		
    		 // Envoi requête AJAX   	
    	    $.ajax({
    	         type: "POST"
    	       , url: "ajax/monclient"
    	       , data : {'id':[item.id]}
    	       , dataType: "html"
    	       , success: function(reponse){
     
             		$("#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
    Dans ton ajaxController, il faut supprimer le init, car nous voulons une réponse json et html dans le même controller et init est commun à toutes les actions.
    Donc petite explication sur le rendu de la vue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // désactive le layout
    $this->_helper->layout->disableLayout();
    // Désactive le rendu pour l'action en cours
    $this->_helper->viewRenderer->setNoRender(); 
    // Désactive le rendu pour toutes les actions du controller (a mettre dant init)
    $this->_helper->viewRenderer->setNeverRender(true);
    Pour envoyer une réponse HTML à une requête ajax il faut simplement désactiver le layout.
    construit ton tableau html '<table>...</table>' dans ton action/controller comme une chaine de caractères à mettre dans une variable que tu assignes à la vue.

    dans la vue , la où tu as mis ton formulaire de recherche ajoute ceci , qui va recevoir le tableau .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <div id="clients">
    </div>

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Merci de ta réponse Freeseb74, mais, je suis dans le regret de te dire que je n'ai pas compris grand chose ...

    reprenons les points les uns après les autres :
    1) Concernant le init, il faut tout bonnement le supprimer ?

    2)
    construit ton tableau html '<table>...</table>' dans ton action/controller comme une chaine de caractères à mettre dans une variable que tu assignes à la vue.
    Comment tu fais cela ?? de cette manière ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $row->responsable_client = $form->getValue('responsable_client');
    3)
    dans la vue , la où tu as mis ton formulaire de recherche ajoute ceci , qui va recevoir le tableau .
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <div id="clients">
    </div>
    au niveau du tableau ?? je retire totalement le tableau que j'avais préalablement créé ??

    Désolé, j'ai un peu perdu le fil ...

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

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Citation Envoyé par cyrux Voir le message
    Merci de ta réponse Freeseb74, mais, je suis dans le regret de te dire que je n'ai pas compris grand chose ...

    reprenons les points les uns après les autres :
    1) Concernant le init, il faut tout bonnement le supprimer ?
    Oui, car on veut une réponse Json qui ne nécessite pas une vue et une réponse HTML qui nécessite une vue (comportement normale du MVC).
    Pour informations le init d'un controller se comporte comme une action commune à tous les autres actions de ce controller
    2) Comment tu fais cela ?? de cette manière ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $row->responsable_client = $form->getValue('responsable_client');
    3)
    au niveau du tableau ?? je retire totalement le tableau que j'avais préalablement créé ??
    Nom le tableau que tu définies dans ta vue tu le fait au niveau du controller
    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
    <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>
    N'oublies pas que tu as 2 requêtes Ajax l'une pour la liste de suggestion qui s'attend à une réponse JSON et l'autre qui va afficher la liste des clients sous forme d'un tableau HTML qu'elle aura reçue. Cette 2ème requête Ajax va ensuite insérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#clients").append(reponse);
    ton tableau HTML table préalablement construit dans le controller dans la page en cours au niveau du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="clients">
    </div>

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