|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
Aiuto per query select mysql+jsp
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>
__________________
PSU: Corsair GS600 - MB: Asrock G31M-V2 - CPU: Intel Q6600 - RAM: 4GB Kingston DDR2 800MHz - VGA: Sapphire R7 250x 1GB GDDR5 |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Mar 2012
Messaggi: 2
|
Devi fare un ciclo while, in modo da restituire tutti i record con quella specifica condizione..
Utilizza quindi un while(rs.next()) e dentro assegni alle variabili i valori presi dal database come hai già fatto nelle if.. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Oct 2008
Messaggi: 97
|
Quote:
Non ho capito però se il ciclo while lo devo mettere al posto dell'if o prima o dopo.... Purtroppo come dicevo sono mooolto ignorante in materia e praticamente il codice lo improvviso
__________________
PSU: Corsair GS600 - MB: Asrock G31M-V2 - CPU: Intel Q6600 - RAM: 4GB Kingston DDR2 800MHz - VGA: Sapphire R7 250x 1GB GDDR5 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:56.




















