2009-11-17 3 views
1

im essayant d'adapter ce petit extrait:JQuery MySql jour

$("#checkbox_id").change(function(){ 
    /* CODE HERE */ 
}); 

J'ai une série de cases à cocher qui sont générées dynamiquement et leurs id sont toujours comme « hug3443 » étaient « hug » est la colonne dans le DB et "3443" est l'identifiant unique de chaque ligne.

Mon objectif serait que chaque fois que la case à cocher change d'état pour mettre à jour son propre état dans la base de données.

Peut-il être accompli avec jQuery?

Merci.

+0

En supposant une application Web avec la base de données en cours d'exécution sur le côté serveur, et le javascript sur le côté client, vous aurez besoin d'une interface entre les deux. Quels langages côté serveur (PHP, Python, .NET, etc.) sont disponibles? –

+0

PHP est mon option. – Jay

+0

une pensée sur cette méthode de travail est que chaque fois que quelqu'un coche une case, il fera un appel au serveur, ce qui pourrait causer des problèmes si beaucoup sont faites à un, disons si un utilisateur a parcouru la liste en cliquant sur toutes les cases succession rapide, ce qui pourrait ralentir le serveur ou manquer certains appels. Il peut être préférable de soumettre un formulaire avec toutes les informations à la fin et de faire un appel au serveur en mettant à jour la base de données. Kinda dépend du nombre de cases à cocher et comment le site sera utilisé – andyface

Répondre

0

Oui. Utilisez live events pour attacher le gestionnaire d'événements de modification à vos cases à cocher (afin que les cases à cocher dynamiquement ajoutées soient également gérées). Ensuite, faites simplement une requête AJAX dans le gestionnaire d'événements en passant votre script dans le nouvel état et le nom/id de la case à cocher (vous pouvez ensuite "analyser" l'identifiant et le nom de la colonne dans le script).

+0

Cette méthode a la possibilité de modifier les données sur la base de données? – Jay

+0

Votre script PHP doit modifier la base de données. JavaScript en lui-même ne peut pas faire cela. –

0

Pas sans script côté serveur qui s'occuperait des changements de données. JQuery est un framework javascript côté client et n'a pas d'accès direct à mysql, qui est un démon côté serveur.

Jetez un oeil sur l'association de jQuery avec php et mysql.

+0

Si oui, est-ce que cela déclencherait également un événement si je désélectionne la case à cocher? – Jay

+1

Si vous attachez un événement à la modification, alors il sera déclenché sur les deux actions (cocher/décocher), il vous appartiendra d'effectuer les actions requises en fonction de l'événement qui a déclenché votre gestionnaire d'événements. –

+0

Merci pour votre précision. – Jay

0

Le code en javascript que vous écrivez à l'aide de jQuery est exécuté du côté client dans un navigateur. Une solution est à partir de votre script pour faire un appel à une page du serveur qui va exécuter une mise à jour MySQL. Par exemple comme ça.

$("#checkbox_id").change(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "/page-that/makes/update.php", 
     data: {param1:value1} 
    }); 
}); 
+0

Du PHP, je sais comment gérer les choses, mais l'obtenir est ce qui me pose problème, à partir de votre exemple en supposant que la case à cocher avait l'attribut "name =" CON1 "" ce qui passerait exactement comme $ _POST à ​​PHP ? – Jay

0

Vous devriez écrire du code côté serveur pour gérer la base de données (php, ruby, peu importe). Vous devriez créer quelque chose comme l'API, ce qui signifie que ce script côté serveur a besoin de certaines variables qui lui ont été envoyées par les clients (les ID des lignes, le nom et la valeur des colonnes par exemple). Ensuite, vous devez écrire votre script frontend jQuery, qui demandera un script côté serveur pour la gestion des tables de base de données. Pour toute demande, vous pouvez utiliser la technologie AJAX, quelque chose comme ceci:

$.ajax({ 
    url: 'http://somesite.com/path/to/server/side/script', 
    type : 'POST', 
    success: function (data, textStatus) { 
     alert('yahoo! we get some data from server!' + data); 
    } 
}); 
+0

Je suis désolé de répéter mon commentaire, mais mon doute est le même ici: Du PHP, je sais comment gérer les choses, mais l'obtenir est ce qui me pose problème, de votre exemple en supposant que la case à cocher "nom = "CON1" "qu'est-ce qui passerait exactement comme $ _POST à ​​PHP? – Jay

+0

Je viens de réaliser la dernière partie de votre code, désolé pour la question stupide, je vais essayer. Je vous remercie. – Jay

+0

Je ne suis pas sûr que le code fasse quoi que ce soit comment puis-je réellement ce qui se passe? – Jay

0

Vous pouvez obtenir la valeur de l'id de la case à cocher en utilisant javascript vous pouvez diviser le nom dans le nom du champ et identifiant. Pour cet exemple, j'ai ajouté - en identifiant pour donner un seperator

(je pense que vous devrez peut-être utiliser l'événement click plutôt que le changement, pense que le changement ne peut fonctionner que pour menus déroulants)

$("#checkbox_id").click(function(){ 

    var checkbox_id = $(this).attr("id"); 
    var id_bits = checkbox_id.split("-"); 
    // this would split hug-3443 into hug and 3443 setting id_bits[0] = hug and id_bits[1] = 3443 

    $.post("update,php", 
    { 
     row: id_bits[0], 
     id: id_bits[1] 
    } 
    ); 

});