Capture d'evenements checkbox sur tableau genere dynamiquement

cs_eikichi Messages postés 9 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 9 mai 2011 - 7 janv. 2011 à 10:44
squonk14 Messages postés 16 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 20 juin 2012 - 12 janv. 2011 à 13:44
Bonjour a tous,

J'espère que vous serez indulgents concernant mon premier post sur ce forum, mais en l'ayant parcouru, je ne parviens toujours pas à mettre la main sur une piste qui pourrait me permettre de résoudre mon problème:

J'essaie en ce moment d'implémenter une interface permettant à un utilisateur de manipuler une base de données. Pour ce faire, je parcours le contenu de la table et je l'affiche sous la forme d'un tableau avec une colonne remplie de checkbox où je propose à l'utilisateur de sélectionner l'entrée qu'il voudrait supprimer.

Le code javascript associé:

<script type="text/javascript">
<!--
var idSpan = "txt_";     // masque des span (partie commune des id)
var idChk = "idchk_";    // masque des checkbox (partie commune des id)
 
var coul1 = "#0000FF";  // couleur si checkbox cochee
var coul2 = "#11AA44";  // couleur si checkbox pas cochee
 
function ChangeCouleur(chk)
{
    var expr = /\d+$/gi;   // expression reguliere  pour extraction de l indice du checkbox 
    var indice = chk.id.match(expr);  // on recupere l indice du chekbox
 
    var sp = document.getElementById(idSpan+indice);
 
    if (chk.checked)
        sp.style.color = coul1;
    else
        sp.style.color = coul2;
}
 
function initchk()
{
    var i;
    var tabChk = document.getElementsByTagName("input");
    var n = tabChk.length;
    var expr = new RegExp(idChk, "gi");
 
    for (i=0; i<n; i++)
    {
        if (tabChk[i].type.toLowerCase()=="checkbox" && expr.test(tabChk[i].id))
        {
            ChangeCouleur(tabChk[i]);
        }
        expr.test("");  // reinitialistion de l attribut lastIndex de la regexp (FF)
    }
}
 
 
//-->
</script>



Et voici mon fichier php:

<?php
       // connexion à la base
$id = mysql_connect('localhost', 'root')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  
$dbname = 'ans';
$db_selected = mysql_select_db($dbname,$id)  or die('Erreur de selection '.mysql_error());

$select = 'SELECT reference, titre, theme, auteur, source FROM article';
$result = mysql_query($select,$id) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

// si on a récupéré un résultat on l'affiche.
if($total) {


    // debut du tableau
    echo ''.\"\n\";
// première ligne on affiche les titres prénom et surnom dans 2 colonnes
echo '----
';
echo 'Reference, ';
echo 'Titre, ';
echo 'Theme, ';
echo 'Auteur, ';
echo 'Source, ';
echo 'Supprimer?, ';

echo ''.\"\n\";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.

while($row = mysql_fetch_array($result)) {

echo '----
';
echo ''.$row["reference"].', ';
echo ''.$row["titre"].', ';
echo ''.$row["theme"].', ';
echo ''.$row["auteur"].', ';
echo ''.$row["source"].', ';
echo ', ';
echo ''.\"\n\";
}
    echo '
'."\n";

    // fin du tableau.

}
else echo 'Pas d\'enregistrements dans cette table...';
// on libère le résultat
 mysql_free_result($result);
 
?>


Pour l'instant je cherche juste à modifier la couleur du champ sélectionné pour vérifier que l'évènement est bien passé.

Quelqu'un pourrait-il me mettre sur une piste svp? Je vois bien comment procéder pour une seule checkbox mais apparement j'aurai peut etre du proceder autrement pour construire mon tableau.


Excusez moi d'avance si mon code n'est pas beau, je débute ^^.

Merci pour vos réponses et à bientôt.

4 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
7 janv. 2011 à 13:39
Bonjour,
récupération des INPUT type=checkbox de la TABLE, test si coché et si oui destruction de la ligne.

;O)
0
squonk14 Messages postés 16 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 20 juin 2012
7 janv. 2011 à 16:28
Bonjour,

je ne vois pas à quoi se réfère idSpan et idChk. Il y a peut-être un problème de ce côté là.
Comme tu définis ton id pour chaque checkbox, il faudrait que tu fasses de même pour chaque ligne.
Je n'y connais rien en php mais je pense que ça pourrait donner un truc du style
echo '<tr id="l_check'.$row["reference"].'">';


Ensuite comme argument à ta fonction ChangeCouleur, tu passes le nom de la checkbox (tu le fais peut-être déjà mais on ne voit pas) :
onclick="ChangeCouleur(this.id)"


Puis :
function ChangeCouleur(idchk)
{
 
    var tr = document.getElementById("l_"+idchk);
 
    if (document.getElementById(idchk).checked)
        tr.style.color = coul1;
    else
        tr.style.color = coul2;
}


Enfin dans ta fonction init, je ne vois pas trop à quoi correspond
var expr = new RegExp(idChk, "gi");

Dans ta boucle, il te suffit d'appeler ChangeCouleur(tabChk[i].id)
Si tu n'as pas d'autre checkbox laisse tomber les tests avec expressions régulières.
0
cs_eikichi Messages postés 9 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 9 mai 2011
12 janv. 2011 à 11:27
Merci beaucoup pour vos suggestions, cela m'a bien aiguillé.
0
squonk14 Messages postés 16 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 20 juin 2012
12 janv. 2011 à 13:44
De rien.
N'oublie pas d'accepter la Réponse pour cloturer la discussion.


-------------------------------------------------------------
Il ne suffit pas d'être inutile. Encore faut-il être odieux.
0
Rejoignez-nous