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

CodeIgniter PHP Discussion :

AJAX et mise à jour d'une balise select


Sujet :

CodeIgniter PHP

  1. #1
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut AJAX et mise à jour d'une balise select
    Bonjour à tous,

    mon but est qu'au click sur un select, le chargement des options depuis une base de données se face automatiquement et de manière transparante.

    ma structure :
    2 controllers : Welcome et un ajax/Ajax_welcome (ajax étant un dossier dans controllers)
    2 models : un "normal" et un ciblé ajax
    vue : page principale : profil, template/header, template/footer (template étant un dossier dans views)

    Le fonctionnement actuel :
    par javascript, onMouseDown sur ma balise select -> déclenche l'appel au controller ajax via ajax : ajax_welcome/ajax_select -> le model ajax est appelé.
    == via firebugs, dans le html, le résultat est juste et j'ai bien les toutes dernières valeurs sans recharger la page entière.

    MAIS -> le contenu de mon select ne s'adapte pas avec les nouvelles données de la BDD.

    voici mes codes :

    Mon footer comprend (views/template/footer):
    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
     
    //select
    function chercheActivite(){
    			$.ajax({
    				url: "<?php echo base_url().'index.php/'; ?>ajax_welcome/ajax_select",
    				type: 'POST',
    				async : true,
    				success: function() 
    				{
    					$('#message').html('En théorie cest bon');
    				}
     
    			});
    			return false;
    };
    Mon controller spécial ajax comprend (controllers/ajax/Ajax_welcome):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public function ajax_select()
    	{
    		$this->load->model("m_tache"); // on charge le fichier model
    		$data['listeselect'] = $this->m_tache->listeselect();
    		// var_dump($data);		
    		$this->load->view('profil',$data);
    		echo 'RE1- en théorie cest bon';
    	}

    Mon model spécial ajax (models/M_tache) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	public function listeselect()
    	{
    		$this->db->order_by('tache','asc');
    		$query = $this->db->get('listeactivite'); // récupère toute la table
    		if ($query->num_rows() > 0) // si il y a un résultat
    		{
    			foreach($query->result() as $row) 
    			{
    				$data[] = $row ; // on place toute les entrées dans un tableau
    			}
    			return $data; // on retourne le tableau
    		}
    	}

    Si vous savez comment me permettre de mettre à jour la balise select à son click ça serait génial.

    Merci d'avance
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'incorporerai dans le footer une portion <script></script>

    Dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script>
     
       $('#toniddeselect').on('click',function(){
            chercheActivite();
        });
     
    </script>
    Et dans ton cherche activité, tu essaies de faire en sorte de lister dans un echo PHP au préalable les différentes <option></option>.

    Un petit tour de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('#toniddeselect').html(data);
    et le tour est joué

    En espérant t'avoir aidé !

    PS: je reste sur la conv' si jamais tu as besoin de plus d'informations.

  3. #3
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    HEllo

    merci pour ton aide !

    suivant tes conseils :
    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
     
    <script>
    function chercheActivite(){
    	$.ajax({
    		url: "<?php echo base_url().'index.php/'; ?>a_welcome/ajax_select",
    		type: 'POST',
    		async : true,
    		success: function() 
    		{
     
    			<?php 				
    				$sortie = '<select id="select" name="select">';
    				if($listeselect != null)
    				{
     
    					foreach($listeselect as $op)
    					{
    						$sortie .= "<option value='$op->tache'>$op->tache</option>";
    					}
    				}
    				$sortie .= '</select>';
    			?>
    			var data = '<?php echo $sortie; ?>' ;
    			$('#select').html(data);
    		}
     
    	});
    	return false;
    };
    	</script>
    <script>
     
       $('#select').on('click',function(){
            chercheActivite();
        });
     
    </script>
    mais encore un souci avec Firebugs qui m'indique :
    ReferenceError: chercheActivite is not defined
    chercheActivite();


    MErci pour ta dispo ;o)
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Re,

    Je pense que le fait de mettre ton bloc jQuery (qui concerne l'actualisation du <select>) dans l'autre bloc script pourrait changer quelquechose ?

    Autre chose, l’événement on 'change' est mieux je pense

  5. #5
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    hello,

    pour le moment click/change ne change pas grand chose.
    dès le chargement de la page j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SyntaxError: missing ; before statement
    ...ct" name="select"><option value='1'>1</option><option value='2'>2</option><optio...
    mon code sans la séparation avec les balises script:
    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
     
    <script>
    //select
    function chercheActivite(){
    	$.ajax({
    		url: "<?php echo base_url().'index.php/'; ?>a_welcome/ajax_select",
    		type: 'POST',
    		async : true,
    		success: function() 
    		{
     
    			<?php 				
    				$sortie = '<select id="select" name="select">';
    				if($listeselect != null)
    				{
     
    					foreach($listeselect as $op)
    					{
    						$sortie .= "<option value='$op->tache'>$op->tache</option>";
    					}
    				}
    				$sortie .= '</select>';
    			?>
    			var data = '<?php echo $sortie; ?>' ;
    			$('#select').html(data);
    		}
     
    	});
    	return false;
    };
     // on click/change select
        $('#select').on('click',function(){
            chercheActivite();
        });
     
    </script>
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    C'est ajax_select qui doit générer les <option></option> et non ton AJAX.

    Ce qui donne quelquechose comme ça :

    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
     
    <script>
    function chercheActivite(region){
    	$.ajax({
    		url: "<?php echo base_url().'index.php/'; ?>a_welcome/ajax_select?r=" + region,
    		type: 'GET',
    		success: function(data) {
    			$('#selectVilles').html(data);
    		}
    	});
    };
     
    $('#select').on('change',function(){
        chercheActivite();
    });
     
    </script>
    Dans cet esprit là : http://jsfiddle.net/v1zbm3vp/

    Ce n'est que la base. Réessaie un coup, si jamais ca ne marche pas, repasse sur ce post.

  7. #7
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Hello,

    Avec ce simple bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#select").hide().html(data).show();
    Mon problème est résolu.

    le fait de cacher et de réafficher la balise sélect , recharge son contenu. C'est quasi transparant


    MERCI AasgardDev pour ton aide !!
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Mais de rien, le sujet est passé en Résolu, tout est OK

    A la revoyure !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] mise à jour d'une base avec un select
    Par farooko dans le forum AJAX
    Réponses: 12
    Dernier message: 11/06/2009, 10h30
  2. mise à jour d'une fenetre apres selection dans une combo
    Par mnssylvain dans le forum WinDev
    Réponses: 51
    Dernier message: 06/03/2008, 11h10
  3. [AJAX] Mise à jour d'une page après réception d'une requête
    Par M.Dlb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/11/2006, 15h48
  4. Mise à Jour d'une table via un Update (select)
    Par Arola78 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/09/2006, 14h59
  5. Mise à jour d'une balise par innerHTML qui pose pb !!
    Par nerik38 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2006, 16h13

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