Aller au contenu

Problème avec un checkbox


P.O.K

Sujets conseillés

Bonjour,

je vais essayer d'être le plus claire possible pour vous exposer mon problème.

Je suis en train de créer une page qui affiche une liste de personnes (liste d'élèves dans une classe). Pour cela, je vais chercher les noms des élèves qui sont dans une base de données.

A côté de ces noms, j'ai mis un checkbox qui sert à contrôler les présences. En effet, lorsque l'élève est là, je le coque, s'il n'est pas la, je ne le coche pas (ou l'inverse on verra ;-))

Pour que ce procédé fonctionne, j'ai attribué comme value au checkbox le numéro de l'élève auquel il appartient.

Ce numéro sera donc enregistrer dans une table. Pour chaque numéro (et donc pour chaque élève) une nouvelle ligne dans la base de données va se créer à chaque fois que le checkbox sera coché.

Mais voilà, le problème est que lorsque je coche plusieurs checkbox, ceux-ci sont considéré comme la même "valeur"

Exemple : Si je coche un seul élève, j'aurai comme résultat "334". Si je coche plusieurs élèves j'aurai "334, 335, 336, ...". Je voudrais que si je coche plusieurs élèves j'ai "334" "335"

Voici mon code :

<html>
<head>
<title></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<% If session("access")="ok" then%>
<table cellpadding="0" cellspacing="0" border="0" id="mainTable">
<tr>
<td id="header-left"> 
</td>
<td id="header">
<h1>aaa</h1>
</td>
<td id="header-right"> 
</td>
</tr>
<tr>
<td id="conteneurcontenu1-left"> 
</td>
<td id="conteneurcontenu1">
<p class="cont-titre">
Bienvenue sur le serveur d'exercices du cours Webmaster<br>
</p>
<br>
<p class="cont">
<form method="get" name="MyForm">
<p class="cont">Choisissez une classe :
<%dim conn, ConnString, rs, nocours1, annee1%>
<%set conn = Server.CreateObject("ADODB.Connection")
ConnString = "DBQ=" & Server.MapPath("BD/etudiant.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
conn.Open connString
SQL = "select * from cours order by NomCours asc, Annee desc"
set rs = conn.execute (SQL)%>
<%
nocours1 = request.querystring("classe")
if nocours1 = "" then
nocours1 = rs("nocours")
end if
%>
<select name="classe" onChange="MyForm.submit()">
<%Do while not RS.EOF%>
<option value="<%= rs("NoCours")%>" <%if int(nocours1) =int(rs("nocours")) then %> selected <% end if%>><%= rs("NomCours")%> <%= rs("Annee")%></option>
<%= rs("annee")%>
<% RS.MoveNext%>
<%loop%>
<% RS.Close %>
<% conn.Close %>
<% Set conn=nothing %>
</select>
</p>
</form>

</p>
</td>
<td id="conteneurcontenu1-right"> 
</td>
</tr>
<tr>
<td> 
</td>
<td id="conteneurcontenu2">
<table cellpadding="5" cellspacing="0" border="0" width="101.5%">
<tr>
<td bgcolor= "#50504f"> 

</td>
<td id="TitleTableAdmin">
Photo
</td>
<td id="TitleTableAdmin">
Etudiant
</td>
<td id="TitleTableAdmin">
Présence
</td>
</tr>
</table>
<%set conn = Server.CreateObject("ADODB.Connection")
ConnString = "DBQ=" & Server.MapPath("BD/etudiant.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
conn.Open connString
SQL = "select * from etudiant where NoCours=" &nocours1& " order by nom asc"
set rs = conn.execute (SQL)%>

<% noetudiant = rs("noetudiant") %>

<table cellpadding="5" cellspacing="0" border="0" width="101.5%">
<tr>
<form name="FormAbsence" action="absence.asp" method="post">
<% compteur = 0
do while rs.eof = false
If session("access")="ok" then
compteur = compteur + 1
if compteur mod 2 = 0 then
couleur = "white"
else
couleur = "#c0c0c0"
end if%>
<td bgcolor="<%= couleur %>"> 
</td>
<td id="TableAdmin" bgcolor="<%= couleur %>">
<%if rs("image")<>"" then%>
<img width="100" height="133.33" src="PhotoSTDx/<%=rs("image")%>">
<%else%>
<img width="100" height="133.33" src="PhotoSTDx/07/DSCN4501.JPG">
<%end if%>
</td>
<td id="TableAdmin" bgcolor="<%= couleur %>">
<a href="etudiant.asp?NoEtudiant=<%=rs("NoEtudiant")%>"><%=rs("prenom")%> <%=rs("Nom")%></a>
</td>
<td id="TableAdmin" bgcolor="<%= couleur %>">
<input type="checkbox" name="absence" value="<%= rs("NoEtudiant") %>">
</td>
<%end if%>
</tr>
<% RS.MoveNext %>
<%loop%>
<input type="submit">
</form>
</table>
<% RS.Close %>
<% conn.Close %>
<% Set conn=nothing %>
</td>
<td> 
</td>
</tr>
<tr>
<td> 
</td>
<td align="center">
</td>
<td> 
</td>
</tr>
<tr>
<td> 
</td>
<td> 
</td>
<td> 
</td>
</tr>
</table>
<%end if %>
</body>
</html>

J'espère avoir été assez clair et que vous vous y retrouverez dans mon code...

merci

Modifié par Patrick
Merci d'utiliser la balise [codebox] pour y placer ton code source quand celui-ci est long
Lien vers le commentaire
Partager sur d’autres sites

Hello

Utilise un tableau pour récupérer tes données.

Transforme <input type="checkbox" name="absence" value="<%= rs("NoEtudiant") %>">

en <input type="checkbox" name="absence[]" value="<%= rs("NoEtudiant") %>">

Et tu devrais avoir le tableau absence qui se crée en POST.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

merci pour votre réponse. Malheureusement, lorsque je rajoute les "[]", cela ne change rien...

Voici la page qui récupère les données, cela peut peut-être vous aider :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title></title>
</head>
<body>

<%absence = request.form("absence[]")%>

<%
set RS = Server.CreateObject("ADODB.recordset")
ConnString = "DBQ=" & Server.MapPath("BD/etudiant.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25"
rs.open "absence", ConnString, 2, 3, 2
rs.addnew()


rs("NoEtudiant")= absence


rs.update
rs.close
%>

</body>
</html>

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines plus tard...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...