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

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

Zend Framework PHP Discussion :

Ajax et Zend pour mettre des données à jour d'un tableau


Sujet :

Zend Framework PHP

  1. #1
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Points : 1 667
    Points
    1 667
    Par défaut Ajax et Zend pour mettre des données à jour d'un tableau
    Bonjour, j'ai un tableau dans lequel j'ai des données, jusque là, c'est classique.

    Au dessus de ce tableau, j'ai un menu select où on peut choisir des valeurs et en fonction de la valeur choisit, je souhaiterais que mon tableau soit mit à jour en fonction de ce qu'à demandé le client.

    J'ai donc bien créé mes fonctions javascript pour faire l'Ajax:
    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
    function chargeEcole()
    {
    	var xhr = getXhr();
    	var etat = getEtatRequete(xhr);
    	xhr.open("GET","",true);
    	//xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	xhr.send(null);
    }
     
    function getXhr()
    {
    	if(window.XMLHttpRequest) // Firefox et autres
    	{
    		xhr = new XMLHttpRequest(); 
    	}else if(window.ActiveXObject)
    	{ // Internet Explorer 
    		try 
    		{
    	    	xhr = new ActiveXObject("Msxml2.XMLHTTP");
    	    }catch (e) 
    	    {
    	    	xhr = new ActiveXObject("Microsoft.XMLHTTP");
    	    }
    	}
    	else 
    	{ // XMLHttpRequest non supporté par le navigateur 
    		   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    		   xhr = false; 
    	}
    	return xhr;
    }
     
    function getEtatRequete(xhr)
    {
    	 if(xhr.readyState  == 4)
    	 {
    	 	if(xhr.status  == 200) 
    	 	{	
    		 	return true; 
    	 	}
    	 }else
    	 {
    		 return false;
    	 }
    }
    Mon menu select:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Secteur : <select onchange="chargeEcole()" name="idSecteur" id="selectSecteur">
    ...
    En temps normal, j'aurais placé un bouton submit qui retournerais sur la même page en envoyant la valeur du select sélectionné puis j'aurais chargé ce dont j'ai besoin mais là je ne sais pas comment faire vu que j'utilise Zend et donc il y a les layouts, les controllers et les actions, tout n'est pas fait dans un seul fichier .php.

    Où dois-je placer mon fichier .php sachant que mon action index fonctionne très bien dans le cas où je ne l'aurais pas fais en AJAX?
    Le mieux pour moi serait que l'action index de mon controlleur index soit rechargé automatiquement en AJAX.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Bonjour,

    peux tu être plus clair sur la façon dont tu as structuré ton code?

    Pour ma part, j'ai déjà eu à utiliser du ajax pour mettre à jour une liste "select" de mon formulaire, en fonction de la valeur d'un autre champ.
    Voilà comment je m'y suis pris:
    1. création de mes deux champs dans mon formulaire
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
       
      $champ1 = new Zend_Form_Element_Text ('mon_champ1');
      $this->addElement($champ1);
       
      $champ2 = new Zend_Form_Element_Select ('mon_champ2');
      $this->addElement($champ2);
    2. Création du fichier javascript qui contient la fonction qui met à jour la liste en faisant appel à un fichier php. Ce fichier correspond au controlleur dans lequel est définie l'action qui met à jour la liste en allant interroger la base de données
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
       
      ...
      xhr_object.open("GET", "/monControleur/monAction/arg1/val1/arg2/val2, true); // (arg1, val1), .. correspondent aux elements que je veux transmettre en GET pour permettre le lancement de l'action de mon controleur
      ...
    3. dans ma vue (mon fichier .phtml), je rajoute le lien vers mon fichier javascript
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      <script type="text/javascript" src="/js/moDossier/monFichier.js"></script>


    Je sais pas si ça répond à ta question car j'ai pas bien compris, j'espère que oui....

    Bon courage pour la suite!

Discussions similaires

  1. [XL-2013] Script pour mettre des données sur une même ligne
    Par initial32 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/12/2014, 13h45
  2. [AC-2003] Mettre des données sous forme de tableau
    Par GPZ{^_^} dans le forum IHM
    Réponses: 0
    Dernier message: 29/04/2010, 09h36
  3. Réponses: 1
    Dernier message: 28/11/2009, 19h20
  4. Réponses: 10
    Dernier message: 14/02/2007, 17h03
  5. Réponses: 3
    Dernier message: 05/12/2005, 02h30

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