Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/03/2011, 02h02   #1
Membre éclairé
 
Inscription : janvier 2009
Messages : 318
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : janvier 2009
Messages : 318
Points : 355
Points : 355
Envoyer un message via MSN à wakan
Par défaut codeigniter ajax mise a 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 :
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 :
1
2
3
4
 
	function updateVisibility($id, $checked){
		//mise a jour de l'enregistrement $id avec la valeur checked
	}
javascript :
Code :
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.
wakan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 23h21   #2
Membre éclairé
 
Inscription : janvier 2009
Messages : 318
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : janvier 2009
Messages : 318
Points : 355
Points : 355
Envoyer un message via MSN à wakan
Bonjour,
J'ai eu le temps de retravailler un peu dessus.
Voila ou j'en suis.

Generation de la table :
Code :
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 :
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 :
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.
wakan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h42.


 
 
 
 
Partenaires

Hébergement Web