Liste liée dynamiquement en JSP et MYSQL

cs_simo333 Messages postés 2 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 28 mai 2009 - 28 mai 2009 à 13:39
cs_simo333 Messages postés 2 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 28 mai 2009 - 28 mai 2009 à 14:31
Bnjour,

Je souhaiterais développer des liste liée dynamiquement en fonction du choix de la première via une BDD. Pour cela j'utilise l'événement Onchange de java script mais je n'arrive pas. il y a plus que 2 semaines que je bloque sur ça, si quelqu'un pourrait m'aider je serai reconnaissans.

Probléme :

j'utilise la variable sValue = request.getParameter("groupName") pour récupérer le groupName sélectionné dans la liste "affcihe2Suite.jsp" et je veux qu'il m affiche dans la 2iéme liste les moniteurs correspondants au groupe selectionné dans le premiére Liste 'affiche1Suite.jsp'

voici mon code :

affiche1Suite.jsp :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" import="java.sql.*"%>

<%
String url = "jdbc:mysql://localhost/test";
String username = "root";
String password = null ;
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,username,password);
Statement stmt = con.createStatement();
%>
<%
String sValue = request.getParameter("groupName");
%>
<%
out.println("<select name ='monitor' >");

ResultSet rs = (ResultSet) stmt.executeQuery("select monitorName from CPUgraph where groupName like '"+sValue+"' group by groupName, monitorName order by groupName asc");

out.println("<option >--Choisissez un moniteur---</option>");

while (rs.next()) {

out.println("
");
out.println("<option value ='"+rs.getString("monitorName")+"'>"+rs.getString("monitorName")+"</option>");
out.println("
");

}
rs.close();

out.println("</select>");

%>

-------------------

affiche2Suite.jsp :

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page language="java" import="java.sql.*"%>
<%
String url = "jdbc:mysql://localhost/test";
String username = "root";
String password = null ;
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url,username,password);
Statement stmt = con.createStatement();
%>

<html>
<head>
<title>SiteScope graph old</title>
<script type='text/javascript'>

function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}

/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est okif(xhr.readyState 4 && xhr.status 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('monitor').innerHTML = leselect;
}
}

// Ici on va voir comment faire du post
xhr.open("POST","affiche1Suite.jsp",true);

// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id du groupName
sel = document.getElementById('group');
idgroup = sel.options[sel.selectedIndex].value;
xhr.send("idGroup="+idgroup);
}
function changer(){
document.formulaire.champstext.value=document.formulaire.groupName.value;
}
</script>

</head>

<center>SiteScope +

<form name="formulaire">

<select name='groupName' id='group' onChange ='go();'>
<option value ='-1' >--Choisissez un groupe---</option>
<%
ResultSet rs2 = (ResultSet) stmt.executeQuery("select groupName from CPUgraph group by groupName");

while (rs2.next()) {
out.println("<option name 'test' value '"+rs2.getString("groupName")+"'>"+rs2.getString("groupName")+"</option>");

}
rs2.close();
%>

</select>

</form>

<label> moinitor</label>

<select name ='monitor'>
<option value ='-1'> Choisir 1 monitor</option>
</select>

</html>

<!-- / message -->

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
28 mai 2009 à 14:22
Salut,

Et voilà, c'est la meilleure façon de se prendre les pieds dans le tapis, et ne pas comprendre qui se passe : PAS DE CODE JAVA DANS LES JSP, PAS DE CODE JAVASCRIPT DANS LES JSP, PAS DE STYLE CSS DANS LES JSP !!! Tout code java doit être codé dans une servlet, tout code javascript ne doit pas être intrusif et être codé dans un .js, tout style doit être codé dans un fichier css, c'est le B.A.BA de tout site de programmation un temps soit peu réfléchit avant d'être codé !

Comment veux-tu comprendre comment se fait la construction de ta jsp, et surtout, la debugguer avec ton code là ? Je te souhaite bien du courage et une bonne prise de tête !!!

Alors va lire un bon tutorial sur J2EE, oublie la façon de coder en PHP où l'on mélange allégrement du code PHP à du code HTML, et surtout, respecte les standards...
0
cs_simo333 Messages postés 2 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 28 mai 2009
28 mai 2009 à 14:31
Salut,

Merci pour ta réponse, je suis un débutant sur la technologie J2EE, en fait j'avais trouvé la réponse mais pour PHP et j'ai traduit en JAVA c'est pour ça que mon code n'est pas clair.
est ce que tu as une idée, car je dois donner une réponse pour la semaine prochaine.

Merci d'avance.
0
Rejoignez-nous