Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    9

    Aiuto per gestione database

    Ciao a tutti. Ho provato già senza successo (errore mio) a postare una richista su questo forum, spero che questa volta sia più fortunato
    Premetto di essere più che inesperto in programmazione, quello che faccio lo faccio improvvisando e chiedo per questo scusa se magari farò domande banali.
    Il mio problema è questo: avrei bisogno di estrarre, tramite una pagina jsp, i dati da un database mysql facendo una ricerca sulla base di due parametri o, come seconda scelta, di un solo parametro. La query dovrebbe darmi tutti i dati rispondenti alla ricerca effettuata, indipendentemente da quanti questi siano. Il problema è che la pagina che ho scritto fino ad ora mi restituisce sempre un solo risultato, anche se i dati in tabella rispondenti alla ricerca effettuata sono molti di più. Potete aiutarmi a capire cosa sbaglio???
    Ecco la pagina in questione:
    codice:
     
        <%
            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 "esame"
            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 = "";
            String result4 = "";
            String result5 = "";
            String result6 = "";
            String result7 = "";
            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()){
                result4 = rs1.getString("attivita");
                result5 = rs1.getString("citta");
                result6 = rs1.getString("tipo");
                result7 = rs1.getString("commento");                  
            } else {
                out.println("Nessuna recensione trovata");
            }      
           }
    
    //out.println(result);
    %>
    <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 align="center"><td><textarea name="commento" rows="8" cols="37"><%=result4%><%=result5%><%=result6%><%=result7%> </textarea></td></tr>
           
    </p>
    
    
    
    </p>
    
    
    </p>
    
    
    </p>
    
    
    </p>
    
    
    </p>
    
    
    </p>
    
    </body>
        </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: Aiuto per gestione database

    Non vedo alcun ciclo sul resultset, dovresti metterlo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    9
    Scusami se approfitto della tua disponibilità, ma come ti dicevo non sono molto esperto. Potresti spiegarti meglio, magari con un esempio?

    Grazie mille

  4. #4

    Re: Aiuto per gestione database

    Originariamente inviato da ligar
    Premetto di essere più che inesperto in programmazione, quello che faccio lo faccio improvvisando e chiedo per questo scusa se magari farò domande banali.
    Se pensi di imparare chiedendo su un forum stai sbagliando di brutto, qui al più ti si può dare una mano se non ti è chiaro un concetto.
    Per prendere la patente ed andare in macchina sei dovuto andare a scuola, non sei montato in macchina per improvvisarti pilota sterminando il quartiere dove abiti.

    Il mio problema è questo: avrei bisogno di estrarre, tramite una pagina jsp, i dati da un database mysql facendo una ricerca sulla base di due parametri o, come seconda scelta, di un solo parametro. La query dovrebbe darmi tutti i dati rispondenti alla ricerca effettuata, indipendentemente da quanti questi siano.
    Perfetto questa è la tua soluzione ad un problema. Stai cercando di usare Java come se fosse PHP ma lasciamo stare per il momento ed andiamo avanti.

    Il problema è che la pagina che ho scritto fino ad ora mi restituisce sempre un solo risultato, anche se i dati in tabella rispondenti alla ricerca effettuata sono molti di più. Potete aiutarmi a capire cosa sbaglio???
    Non so se hai sbagliato il codice o se l'hai pensato male. Dalla risposta che hai dato a Joe direi la seconda.
    Ci hai descritto la tua soluzione, ora prova a descrivere il tuo algoritmo per passi successivi.
    P.e.
    - Estraggo i due parametri
    - Apro la connessione al db
    - Creo la query
    ...

    Continua tu.
    ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    9
    Ti ringrazio per avermi risposto. So benissimo che non è questo il modo di imparare ad usare java, ne è questa la mia intenzione.
    Come dicevo sono praticamente a zero, quello che ho scritto l'ho fatto andando ad intuizione e seguendo un esempio che avevo. D'altra parte lavoro dieci ore al giorno e trovo il tempo di dedicarmi a questo sito solo un'oretta la sera.
    Ho scritto qui perchè speravo che qualcuno di buona volontà potesse aiutarmi a superare questo che è l'ultimo scoglio per completare il mio sito. Se hai voglia di dirmi materialmente come fare ti ringrazio, altrimenti ti ringrazio comunque per aver perso tempo nel darmi una risposta, putroppo non è una lezione di informatica che mi serve....non ne ho il tempo

  6. #6
    Utente di HTML.it L'avatar di MatCap83
    Registrato dal
    Jun 2005
    residenza
    Firenze
    Messaggi
    1,319
    Originariamente inviato da ligar
    Ti ringrazio per avermi risposto. So benissimo che non è questo il modo di imparare ad usare java, ne è questa la mia intenzione.
    [...]
    Non preoccuparti, io ti capisco ... Sono un po' arrugginito con Java, ma credo che Joe Taras abbia detto bene, prova a mettere un ciclo per la lettura di ResultSet anziché un if. Questo perché con if viene eseguita una sola lettura del risultato, dopodiché il programma passa oltre. Dunque verrà stampato solo il primo risultato. Con un ciclo while invece, la lettura dei risultati (oggetto ResultSet) continua fino a quando ci sono dati:

    codice:
    // 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 = "";
            String result4 = "";
            String result5 = "";
            String result6 = "";
            String result7 = "";
            while (rs.next()){
                result = rs.getString("attivita");
                result1 = rs.getString("citta");
                result2 = rs.getString("tipo");
                result3 = rs.getString("commento");
            } else [...]
    Automaticamente il ciclo while terminerà quando non ci saranno più dati da leggere nel risultato.

    Prova a vedere se funziona così ...
    "Nessuno mi ha visto farlo, e non puoi provarlo in nessun modo!" (Bart Simpson)

    >>> www.ombresulweb.com <<<

  7. #7
    Mat... anche la tua soluzione è errata perché il tuo ciclo non stampa nulla.
    al più...
    codice:
    <%
    ...
    %>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
    <%
    while (rs.next()){
    %>
      
    
    <%= rs.getString("attivita")%></p>
      ...
    <%
            } else [...]
        </body>
    </html>
    ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    9
    Ciao e grazie ad entrambi per la risposta.
    Mat ho provato a sostiuire all'if il while come mi hai proposto ma il compilatore mi da l'errore "else without if"...
    Invece la soluzione di Caiodark non l'ho capita bene...praticamente dovrei lasciare la parte iniziale inalterata e poi andare a inserire un ciclo while nell'html finale giusto?
    Ho anche provato ma il compilatore mi da diversi errori, tra cui il solito "else without if" e un errore legato alle parentesi.

  9. #9
    Colpa nostra, l'else va solo con l'if.
    Una soluzione possibile:

    codice:
     <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
    
        <%
            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 "esame"
            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);
            if (rs.first()){
              do{%>
                
    
    <%= rs.getString("attivita")%></p>
                ...
              <%}while(rs.next());
            } 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.first()){
                     do{%>
                
    
    <%= rs.getString("attivita")%></p>
                ...
                     <%} while(rs.next());
            } else {
                out.println("Nessuna recensione trovata");
            }      
           }
    
    //out.println(result);
    %>
        
    
    </body>
    </html>
    ...

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    9
    Sei un grandissimo!!! Funziona
    Finalmente mi da tutti i dati!!!!
    Ora devo smanettare un po' con l'html per formattare decentemente i dati del db e mostrarli in una tabella ed il gioco è fatto!
    Grazie mille davvero

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.