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 mise à jour bd avec checkbox


Sujet :

CodeIgniter PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut AJAX mise à jour bd avec checkbox
    Bonjour,
    Je fais appel a vous car je suis bloque sur plusieurs points. J'espere que je poste dans la bonne partie du forum.

    J'ai une table ( cree comme ca) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    		foreach ($type_broadcasts as $type_broadcast){
    			if ($type_broadcast->isVisible == 1)
    				$isVisblelabel='<input  checked  type="checkbox" name="' . $type_broadcast->isVisible . '" value="' . $type_broadcast->isVisible . '"><br />';
    			else
    				$isVisblelabel='<input type="checkbox" name="' . $type_broadcast->isVisible . '" value="' . $type_broadcast->isVisible . '"><br />';
    			$actions = "";
    			$actions .= anchor('typebroadcast/update/'.$type_broadcast->id,'update',array('class'=>'update')) . ' ';
    			$actions .=	anchor('typebroadcast/delete/'.$type_broadcast->id,'delete',array('class'=>'delete','onclick'=>"return confirm('Are you sure want to delete this type of broadcast?')"));
    			$this->table->add_row($type_broadcast->id, $type_broadcast->name, $type_broadcast->parent_name , $isVisblelabel , $actions);
    		}
    		$data['table'] = $this->table->generate();

    A chaque fois qu'il y a une modification d'une checkbox, il doit y avoir une requete ajax pour mettre a jour la valeur dans la base de donnees.

    Pour ca une methode dans le controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	function updateVisibility($id, $checked){
    		//mise a jour de l'enregistrement $id avec la valeur checked
    	}
    javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $.ajax({
        url: 'index.php/type_broadcast/updateVisibility/' + boxName.getElementByTagName('td')[0]; ,
        dataType: 'json',
        success: function( response ) {
             //l'operation c'est bien passe
        }
    });

    J'ai plusieurs probleme :
    - le 1er c'est que je ne sais pas comment passer tout les parametres notemment le parametre checked qui dit si la checkbox is checked.
    - le second c'est comment faire pour retrouver l'id de la ligne que je dois mettre a jour.


    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Points : 402
    Points
    402
    Par défaut
    Bonjour,
    J'ai eu le temps de retravailler un peu dessus.
    Voila ou j'en suis.

    Generation de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    foreach ($type_broadcasts as $type_broadcast){
    			//on peut faire un update uniquement si le type de broacast est visible sinon on va perdre le pere
    			$actions = "";
    			if ($type_broadcast->isVisible == 1)
    				$isVisblelabel='<input id="'. $type_broadcast->id.'" checked  type="checkbox" name="' . $type_broadcast->isVisible . '"><br />';
    			else
    				$isVisblelabel='<input id="'. $type_broadcast->id.'" type="checkbox" name="' . $type_broadcast->isVisible . '"><br />';
    			$actions .= anchor('typebroadcast/update/'.$type_broadcast->id,'update',array('class'=>'update')) . ' ';
    			$actions .=	anchor('typebroadcast/delete/'.$type_broadcast->id,'delete',array('class'=>'delete','onclick'=>"return confirm('Are you sure want to delete this type of broadcast?')"));
    			$this->table->add_row($type_broadcast->id, $type_broadcast->name, $type_broadcast->parent_name , $isVisblelabel , $actions);
    		}
    		$data['table'] = $this->table->generate();
    Methode dans le controlleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function updateVisibility(){
    		$id=$_POST["id"];
    		$valeur= ($_POST["valeur"])?1:0;
     
    		$typebroadcast = array('isVisible' => $valeur);
    		$this->Type_broadcast_model->update($id,$typebroadcast);
     
    	}
    Et enfin le 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
    	$(document).ready(function() {
    		// bind to the click event on all checkboxes
    		$('input[type=checkbox]').click(function(){
     
    			$.ajax({
    				type: "POST",
    				url: "typebroadcast/updateVisibility",
    				data: "id=" + $(this).attr('id')+"&valeur="+$(this).is(':checked') ,
    				success: function( response ) {
    					showhide('updateSuccess'); 
    					setTimeout(
    					  function() 
    					  {
    						showhide('updateSuccess'); 
    						//do something special
    					  }, 2000);
    				}
    			});
    		});
    	});
    Le second probleme ( le second c'est comment faire pour retrouver l'id de la ligne que je dois mettre a jour.) est resolu.

    En faisant des alert(); je recuperes bien les bonnes valeur en javascript.

    Par contre, avec les logs du navigateur, j'obtiens bien un code status 200 (success) mais il n'y a aucun argement passe au server.
    Pourquoi ?

    Merci de votre aide.

Discussions similaires

  1. [AJAX] Mise à jour d'une variable php avec Ajax
    Par amine2208 dans le forum AJAX
    Réponses: 5
    Dernier message: 03/07/2014, 01h49
  2. Réponses: 1
    Dernier message: 08/06/2014, 07h59
  3. [AJAX] Mise à jour tr avec ajax
    Par zeclad01 dans le forum AJAX
    Réponses: 4
    Dernier message: 10/09/2012, 18h59
  4. [AJAX] mise à jour d'une base avec un select
    Par farooko dans le forum AJAX
    Réponses: 12
    Dernier message: 11/06/2009, 10h30
  5. [MySQL] Mise à jour mysql avec une checkbox non checké
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/08/2006, 16h45

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