Bonjour à tous,

Toujours en quête d'amélioration, je cherche le moyen d'afficher/masquer du contenu à l'aide du script ci-dessous.

Je précise que le script fonctionne, mais pas à 100%.

En fait quand je clique sur le "+" du premier élément, il affiche le contenu pour ce premier enregistrement. => a priori c'est correct.
Par contre je clique sur le "+" du second enregistrement et là, le script est en erreur car il m'affiche le contenu du 1er enregistrement sans trouver celui du 2ème.

2 petites images valent mieux que de longues explications:
Le premier est correct :Nom : correct.jpg
Affichages : 107
Taille : 236,4 Ko


Pas correct: Nom : pascorrect.jpg
Affichages : 114
Taille : 237,8 Ko

On voit que j'ai cliqué sur le second et il m'affiche le premier


Voici le code
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<body>
<!-- Le JS... -->
<script type="text/javascript">
function toggle_div(bouton, id) { // On déclare la fonction toggle_div qui prend en param le bouton et un id
  var div = document.getElementById(id); // On récupère le div ciblé grâce à l'id
  if(div.style.display=="none") { // Si le div est masqué...
    div.style.display = "block"; // ... on l'affiche...
    bouton.innerHTML = "-"; // ... et on change le contenu du bouton.
  } else { // S'il est visible...
    div.style.display = "none"; // ... on le masque...
    bouton.innerHTML = "+"; // ... et on change le contenu du bouton.
  }
}
</script>
 
 
 
<table> 
 
<tbody>
 
<?php
 
 
 
 
include("../../org/folder/data.php");
include("../../org/folder/connexion.php");
 
function ClassDate($date) {
   $now = date('Y-m-d');
   if ($date < $now) {
        return 'past';
   }
   elseif ($date > $now) {
       return 'futur';
   }
   else {
       return 'today';
   }
}
 
$next = TRUE;
 
$sql = "SELECT no,lieu, description, contact,  date_debut, date_format(date_debut, '%d.%m.%Y') AS date FROM agenda ORDER by date_debut ASC "; 
$req = mysql_query($sql);
 
$i = 0;
$c = 0;
 
while ($row= mysql_fetch_assoc($req)) {
 
   $ClassDate = ClassDate($row['date_debut']);
   if ($ClassDate == 'futur' && $next == TRUE) {
           $ClassDate = 'next';
           $next = FALSE;
   }
   $row['ClassDate'] = $ClassDate;
 
   $data[] = $row;
 
}
                                                                                                
for ($i = 0; $i <= 10; $i++) {
    if (!isset($data[$i])) { break; }
    else { ?>
 	<tr>
        <td> <div class=" <?php echo $data[$i]['ClassDate'];?>"> <button type="button" style="background:none; border:hidden" onclick="toggle_div(this,'subinfo');"><h7>+</h7></button></div></td> 
        <td>  <?php echo htmlspecialchars($data[$i]['lieu']);?><div id="subinfo" style="display:none;"><?php echo $data[$i]['description'];?></div></td>
        <td> <?php echo htmlspecialchars($data[$i]['date']);?></td>
 
 <?php
       $j = $i + 11;
       if (isset($data[$j])) { ?>
           <td><div class="<?php echo $data[$j]['ClassDate'];?>"> <button type="button" style="background:none; border:hidden" onclick="toggle_div(this,'subinfo');"><h7>+</h7></button> </div> </td> 
           <td> <?php echo htmlspecialchars($data[$j]['lieu']);?> </td>
           <td> <?php echo htmlspecialchars($data[$j]['date']);?> </td>
 
        <?php }
       else {
         echo '<td></td><td></td></tr>';
       }
   }
}
?>
 
</tbody>
 
</table> &nbsp;
En vous remerciant pour l'aide.