Capture d'evenements checkbox sur tableau genere dynamiquement
cs_eikichi
Messages postés9Date d'inscriptionmercredi 26 mars 2003StatutMembreDernière intervention 9 mai 2011
-
7 janv. 2011 à 10:44
squonk14
Messages postés16Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention20 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.
A voir également:
Capture d'evenements checkbox sur tableau genere dynamiquement
squonk14
Messages postés16Date d'inscriptionmardi 20 avril 2010StatutMembreDernière intervention20 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.