ligar
18-03-2012, 16:46
Ciao a tutti! Premetto che sono mooolto inesperto in programmazione, tuttavia sto pian piano riuscendo a creare un sito web molto semplice. Mi sono bloccato però su questo problema:
in pratica ho un db mysql con una tabella, una pagina jsp che continene un form di ricerca la cui action rimanda ad un'altra pagina jsp che contiene le istruzioni per ricercare i dati nel db.
Si tratta di 2 query alternative. In parole povere devo effettuare una ricerca per città (dato obbligatorio) e per attività (dato opzionale), ho quindi creato una prima query che effettua la ricerca nel caso in cui l'utente specifichi entrambi i dati ed una seconda che interviene nel caso in cui sia inserito solo il dato obbligatorio (città). La pagina in linea di massima funziona, l'unico problema è che entrambe le query mi restituiscono solo il primo dato della tabella. Se ho la stessa attività nella stessa città presente in due righe del db o due attività nella stessa città, il risultato della query è sempre il primo dato.
Vi posto il codice della pagina sperando che qualcuno possa aiutarmi
<%
String citta = new String();
citta = request.getParameter("citta");
String attivita = new String();
attivita = request.getParameter("attivita");
Connection dbconn = null;
// carica il file di classe del driver
// per il collegamento al database
Class.forName("com.mysql.jdbc.Driver");
// apre la connessione con il database
dbconn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=admin");
// manda in esecuzione l'istruzione SQL
Statement statement = dbconn.createStatement();
String select_query = ("SELECT nick, attivita, citta, tipo, voto, commento from opinioni WHERE opinioni.citta = '" + citta + "' and opinioni.attivita = '" + attivita + "'");
ResultSet rs = statement.executeQuery(select_query);
String result = "";
String result1 = "";
String result2 = "";
String result3 = "";
if (rs.next()) {
result = rs.getString("attivita");
result1 = rs.getString("citta");
result2 = rs.getString("tipo");
result3 = rs.getString("commento");
}
else {
String select_query1 = ("SELECT nick, attivita, citta, tipo, voto, commento from opinioni WHERE opinioni.citta = '" + citta + "'");
ResultSet rs1 = statement.executeQuery(select_query1);
if (rs1.next()) {
result = rs1.getString("attivita");
result1 = rs1.getString("citta");
result2 = rs1.getString("tipo");
result3 = rs1.getString("commento");
} else {
out.println("Utente non trovato");
}
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"><font color="#FFFFFF" face="Arial Black" size="4">DESCRIZIONE
AUTO</font></p>
<p align="center"> <td><textarea name="commento" rows="8" cols="37"><%=result3%> <%=result1%> <%=result2%> <%=result%></textarea></td></tr>
</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</body>
</body>
</html>
in pratica ho un db mysql con una tabella, una pagina jsp che continene un form di ricerca la cui action rimanda ad un'altra pagina jsp che contiene le istruzioni per ricercare i dati nel db.
Si tratta di 2 query alternative. In parole povere devo effettuare una ricerca per città (dato obbligatorio) e per attività (dato opzionale), ho quindi creato una prima query che effettua la ricerca nel caso in cui l'utente specifichi entrambi i dati ed una seconda che interviene nel caso in cui sia inserito solo il dato obbligatorio (città). La pagina in linea di massima funziona, l'unico problema è che entrambe le query mi restituiscono solo il primo dato della tabella. Se ho la stessa attività nella stessa città presente in due righe del db o due attività nella stessa città, il risultato della query è sempre il primo dato.
Vi posto il codice della pagina sperando che qualcuno possa aiutarmi
<%
String citta = new String();
citta = request.getParameter("citta");
String attivita = new String();
attivita = request.getParameter("attivita");
Connection dbconn = null;
// carica il file di classe del driver
// per il collegamento al database
Class.forName("com.mysql.jdbc.Driver");
// apre la connessione con il database
dbconn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=admin");
// manda in esecuzione l'istruzione SQL
Statement statement = dbconn.createStatement();
String select_query = ("SELECT nick, attivita, citta, tipo, voto, commento from opinioni WHERE opinioni.citta = '" + citta + "' and opinioni.attivita = '" + attivita + "'");
ResultSet rs = statement.executeQuery(select_query);
String result = "";
String result1 = "";
String result2 = "";
String result3 = "";
if (rs.next()) {
result = rs.getString("attivita");
result1 = rs.getString("citta");
result2 = rs.getString("tipo");
result3 = rs.getString("commento");
}
else {
String select_query1 = ("SELECT nick, attivita, citta, tipo, voto, commento from opinioni WHERE opinioni.citta = '" + citta + "'");
ResultSet rs1 = statement.executeQuery(select_query1);
if (rs1.next()) {
result = rs1.getString("attivita");
result1 = rs1.getString("citta");
result2 = rs1.getString("tipo");
result3 = rs1.getString("commento");
} else {
out.println("Utente non trovato");
}
}
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<p align="center"> </p>
<p align="center"> </p>
<p align="center"><font color="#FFFFFF" face="Arial Black" size="4">DESCRIZIONE
AUTO</font></p>
<p align="center"> <td><textarea name="commento" rows="8" cols="37"><%=result3%> <%=result1%> <%=result2%> <%=result%></textarea></td></tr>
</p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</body>
</body>
</html>