• User Newbie

    questionario html/jsp aiuto?!?

    In pratica vorrei fare questo sito in JSP con queste 10 domande con le varie opzioni (realizate con le checkbox) insomma le risposte devono essere mandate o comunque salvate in un database che elaborerà le varieopzioni scelte per ogni domanda.Infine clicando su una aposito link che si collegherà ad un file Risultati.jsp che visualizzera i risultati(cioè quante persone hanno scelto quella determinata opzione) in un grafico a istogramma.

    
    <html>
    <head><title>QUESTIONARIO - PERITI INFORMATICI</title></head>
    <body>
    <body bgcolor=#CCFFFF>
    
    
    
    
    Ipotizzando che lei debba assumere per la propria azienda un collaboratore informatico, quali di queste
    caratteristiche pensa debba avere? </p>
    
    **<big>COMPETENZE TECNICHE:</big>**
    
    
    
    **1. Secondo lei,quali delle seguenti capacità deve essere in possesso l?informatico?**</p>
    <form action="quest.jsp">
    <input name="risp1" type="checkbox" value="00">[url="cap_analisi.html"]Capacità di analisi
    
    <input name="risp1" type="checkbox" value="01">[url="cap_problemi.html"]Capacità di risolvere i problemi
    
    <input name="risp1" type="checkbox" value="02">[url="cap_sintesi.html"]Capacità di sintesi
    
    <input name="risp1" type="checkbox" value="03">Predisposizione allo studio
    
    <input name="risp1" type="checkbox" value="04">[url="cap_sperim.html"]Capacità di sperimentazione
    
    
    
    
    **2. Quale dei seguenti sistemi operativi l?informatico dovrebbe saper utilizzare?**</p>
    <form action="quest.jsp">
    <input name="risp2" type="checkbox" value="10">Macintosh
    
    <input name="risp2" type="checkbox" value="11">Windows
    
    <input name="risp2" type="checkbox" value="12">Linux</a>
    
    <input name="risp2" type="checkbox" value="13">altro
    
    
    
    
    **3. Quale dei seguenti linguaggi l?informatico deve saper utilizzare?**</p>
    <form action="quest.jsp">
    <input name="risp3" type="checkbox" value="20">Java
    
    <input name="risp3" type="checkbox" value="21">C/C++
    
    <input name="risp3" type="checkbox" value="22">SQL
    
    <input name="risp3" type="checkbox" value="23">Pascal
    
    <input name="risp3" type="checkbox" value="24">HTML
    
    <input name="risp3" type="checkbox" value="25">Fortran
    
    <input name="risp3" type="checkbox" value="26">COBOL
    
    <input name="risp3" type="checkbox" value="27">Assembler
    
    <input name="risp3" type="checkbox" value="28">altro
    
    
    
    
    **4. Di quali conoscenze h/w l?informatico deve essere in possesso?**</p>
    <form action="quest.jsp">
    <input name="risp4" type="checkbox" value="30">Assemblaggio
    
    <input name="risp4" type="checkbox" value="31">Riparazione
    
    <input name="risp4" type="checkbox" value="32">Manutenzione
    
    <input name="risp4" type="checkbox" value="33">Altro
    
    
    
    **<big>CARATTERISTICHE PERSONALI&#58;</big>**
    
    
    
    **5. Qanto tepmpo dovrebbe dedicare al lavoro l'informatico? **</p>
    <form action="quest.jsp">
    <input name="risp5" type="checkbox" value="40">Tempo pieno
    
    <input name="risp5" type="checkbox" value="41">Partime
    
    <input name="risp5" type="checkbox" value="42">Altro
    
    
    
    
    **6. Che tipo di contratto offrirebbe al suo ipotetico dipendente?**</p>
    <form action="quest.jsp">
    <input name="risp6" type="checkbox" value="50">Temporaneo
    
    <input name="risp6" type="checkbox" value="51">Tempo indeterminato
    
    <input name="risp6" type="checkbox" value="52">Interinale
    
    
    
    
    **7. E' chiaro che la personalità di una persona influisca sulla modalità di lavoro, per cui di quali delle seguenti caratteristiche caratteriali dovrebbe essere in possesso un lavoratore?**</p>
    <form action="quest.jsp">
    <input name="risp7" type="checkbox" value="60">Ambizioso
    
    <input name="risp7" type="checkbox" value="61">Socievole
    
    <input name="risp7" type="checkbox" value="62">Riservato
    
    <input name="risp7" type="checkbox" value="63">Modesto
    
    <input name="risp7" type="checkbox" value="64">Tenace
    
    <input name="risp7" type="checkbox" value="65">Competitivo
    
    <input name="risp7" type="checkbox" value="66">Dotato di autocontrollo
    
    <input name="risp7" type="checkbox" value="67">Autostima
    
    <input name="risp7" type="checkbox" value="68">Altro
    
    
    
    **<big>CAPACITA' PROFESSIONALI&#58;</big>**
    
    
    
    **8. Quali delle seguenti capacità gestionali, secondo lei, l'informatico dovrebbe possedere?**</p>
    <form action="quest.jsp">
    <input name="risp8" type="checkbox" value="70">Capacità di organizzare
    
    <input name="risp8" type="checkbox" value="71">[url="cap_controllo.html"]Capacità di controllo
    
    <input name="risp8" type="checkbox" value="72">Capacità di attuazione/realizzazione
    
    <input name="risp8" type="checkbox" value="73">Capacità di definire la priorità
    
    <input name="risp8" type="checkbox" value="74">Capacità d'iniziativa
    
    
    
    
    **9. Quali lingue dovrebbe saper parlare in modo scorrevole l'informatico ?**</p>
    <form action="quest.jsp">
    <input name="risp9" type="checkbox" value="80">Inglese
    
    <input name="risp9" type="checkbox" value="81">Francese
    
    <input name="risp9" type="checkbox" value="82">Tedesco
    
    <input name="risp9" type="checkbox" value="83">Spagnolo
    
    <input name="risp9" type="checkbox" value="84">Altro
    
    
    
    
    **10. Quali capacità &#40;innovative&#41; deve possedere l'informatico?**</p>
    <form action="quest.jsp">
    <input name="risp10" type="checkbox" value="90">[url="disp_cambiamento.htm"]Disponibilità al cambiamento
    
    <input name="risp10" type="checkbox" value="91">Autonomia
    
    <input name="risp10" type="checkbox" value="92">Elasticità intellettuale, originalità
    
    
    
    
    [url="quest.jsp"]<input type="submit" value="INVIA"> </p>
    
    
    </form>
    </font>
    </body>
    </html> 
    
    

    Ho preso come modello di riferimento questo esempio di pagina in JSP SONDAGGIO
    *
    L'applicazione pratica con jsp che viene analizzata in seguito consiste nella creazione di un sondaggio, in cui gli utenti di un sito possono rispondere ad una domanda scegliendo tra le risposte proposte ed eventualmente visualizzare i risultati parziali delle votazioni. Come per tutti i sondaggi seri realizzati per un sito Internet è previsto il controllo del doppio voto, reso impossibile dalla memorizzazione degli indirizzi ip degli utenti che votano. L'applicazione è costituita da 4 file:

    sondaggio.htm, contenente il form da cui l'utente risponde alla domanda

    vota.jsp, che esegue la votazione proveniente dal form

    risultati.jsp, che visualizza i risultati parziali delle votazioni

    sondaggio.mdb, il database che gestisce tutto il sondaggio. Questo è costituito da due tabelle. La prima "frequenza" contiene un campo chiamato "risp" di tipo byte che indica il numero della risposta, e un campo "frequenze" di tipo intero che indica il numero di volte che si è votato per la rispettiva risposta. Nell'esempio, con 4 possibili risposte al sondaggio, la tabella è stata completata inserendo nelle prime 4 righe del campo "risp" i valori 0-1-2-3 e nel campo "frequenze", ovviamente, i valori 0-0-0-0. La seconda tabella si chiama "ip_tab" e contiene in un campo "ip" di tipo testo la lista degli indirizzi ip di tutti gli utenti che hanno effettuato il voto. Vediamo nel dettaglio gli altri 3 file:*

    Sondaggio.htm

    
    <html><head>
    <title>Sondaggio</title>
    </head>
    
    <body>
    
    **<big>Domanda&#58;</big>**
    <form action="vota.jsp">
    <input name="risposta" type="radio" value="0">Risposta 1
    
    <input name="risposta" type="radio" value="1">Risposta 2
    
    <input name="risposta" type="radio" value="2">Risposta 3
    
    <input name="risposta" type="radio" value="3">Risposta 4
    
    <input type="submit" value="vota">
    </form>
    [url="risultati.jsp"]Visualizza i risultati parziali
    </font>
    </body>
    </html>
    

    Vota.jsp
    *
    Questo file esegue in pratica la votazione, aggiornando il database dopo aver fatto il controllo sull'ip dell'utente. Non deve essere necessariamente modificato. Al limite si possono personalizzare i messaggi di eseguita o fallita votazione.*

    
    <html>
    <head>
    <title>Sondaggio</title>
    </head>
    <body>
    <font face="verdana" color="#3300ff" size="2">
    <% page errorPage = "PaginaErrore.jsp" %>
    <%@ page language="java" import="java.sql.*" %>
    <%
    
    Connection conn = null;
    
    //carica il file di classe del driver
    Class.forName&#40;"sun.jdbc.odbc.JdbcOdbcDriver"&#41;;
    
    //crea la connessione con l'origine dati
    conn = DriverManager.getConnection&#40;"jdbc&#58;odbc&#58;sondaggio","",""&#41;;
    
    //crea lo statement
    Statement st = conn.createStatement&#40;&#41;;
    
    //legge il parametro contenente la risposta
    String preferenza = new String &#40;request.getParameter&#40;"risposta"&#41;&#41;;
    String ip = new String&#40;request.getRemoteAddr&#40;&#41;&#41;;
    
    ResultSet rs = st.executeQuery&#40;"SELECT ip from ip_tab WHERE ip LIKE '"+ip+"'"&#41;;
    if&#40;!rs.next&#40;&#41;&#41;&#123;
    //l'ip non ha mai votato
    
    //esito dell'aggiormanento al Data base
    int esito;
    
    //crea la tringa SQL per l'aggiornamento
    String stringaSql = new String &#40;"INSERT INTO ip_tab &#40;ip&#41; VALUES &#40;'"+ip+"'&#41;"&#41;;
    st.executeUpdate&#40;stringaSql&#41;;
    
    //crea la stringa SQL per l'aggiornamento
    stringaSql = "UPDATE frequenze SET frequenza=frequenza+1 WHERE risp LIKE '"+preferenza+"'";
    esito = st.executeUpdate&#40;stringaSql&#41;;
    
    //controlla che tutto sia andato bene
    if &#40;esito==1&#41;
    out.println&#40;"Votazione eseguita con successo"&#41;;
    else
    out.println&#40;"Errore, non stato possibile eseguire la votazione"&#41;;
    &#125;//if
    else&#123; //l'utente ha gia votato
    out.println&#40;"Spiacenti, hai già votato!
    "&#41;;
    out.println&#40;"Per ragioni di credibilità del sondaggio
    "&#41;;
    out.println&#40;"ogni visitatore può votare una sola volta
    
    "&#41;;
    &#125;//else
    st.close&#40;&#41;;
    conn.close&#40;&#41;;
    %>
    
    
    
    [url="risultati.jsp"]Visualizza i risultati parziali
    </font>
    </body>
    </html>
    

    Risultati.jsp
    *
    Questo è il file che esegue il compito più complicato. Deve estrarre dal database il numero di utenti che hanno votato in totale e per ogni singola risposta, calcolare la percentuale e stampare una breve tabella di riepilogo e un grafico che riassume visivamente l'andamento del sondaggio. Nel file appena visto deve essere modificato il numero di possibili risposte (riga 20) e il valore delle stringhe contenenti le risposte (righe 25-28). Tutto il resto del codice può rimanere invariato.*

    
    <html>
    <head>
    <title>Risultati del sondaggio</title>
    </head>
    <body bgcolor=#FFFF99><center>
    **<big>Domanda del sondaggio**</big>
    
    
    <% page errorPage = "PaginaErrore.jsp" %>
    <%@ page language="java" import="java.sql.*" %>
    <%
    Connection conn = null;
    
    //carica il file di classe del driver
    Class.forName&#40;"sun.jdbc.odbc.JdbcOdbcDriver"&#41;;
    
    //crea la connessione con l'origine dati
    conn = DriverManager.getConnection&#40;"jdbc&#58;odbc&#58;sondaggio","",""&#41;;
    
    //crea lo statement
    Statement st = conn.createStatement&#40;&#41;;
    /* --- DEFINIZIONE DI VARIABILI --- */
    int numRisp = 4; //numero possibili risposte
    int votiTot; //numero totale dei voti
    float percentuale; //percentuale per ogni risposta
    int frequenze&#91;&#93; = new int&#91;numRisp&#93;; //numero di voti per ogni risposta
    String risposte&#91;&#93; = new String&#91;numRisp&#93;; //array di stringhe con le risposte
    risposte&#91;0&#93;="Risposta 1";
    risposte&#91;1&#93;="Risposta 2";
    risposte&#91;2&#93;="Risposta 3";
    risposte&#91;3&#93;="Risposta 4";
    
    //crea il recordset -> calcolo dei voti totali
    ResultSet rs = st.executeQuery&#40;"SELECT sum&#40;frequenza&#41; as tot from
    frequenze"&#41;;
    rs.next&#40;&#41;;
    votiTot = rs.getInt&#40;"tot"&#41;;
    out.println&#40;"Totale dei voti&#58; "+votiTot+"
    "&#41;;
    //calcolo dei voti per ogni singola risposta e stampa
    for &#40;int i=0; i<numRisp; i++&#41;&#123;
    rs=st.executeQuery&#40;"SELECT sum&#40;frequenza&#41; as tot from frequenze WHERE
    risp = "+i&#41;;
    rs.next&#40;&#41;;
    frequenze&#91;i&#93;=rs.getInt&#40;"tot"&#41;;
    out.println&#40;risposte&#91;i&#93;+"&#58; "+frequenze&#91;i&#93;+" voti
    "&#41;;
    &#125;//for
    %>
    
    
    
    <table align=center border=0>
    
    <%//creazione del grafico dei voti
    for &#40;int i=0; i<numRisp; i++&#41;&#123;
    //calcolo della percentuale
    percentuale = &#40;float&#41;frequenze&#91;i&#93;/votiTot*100;
    out.println&#40;"<tr valign='center' align='left'><td>"&#41;;
    out.println&#40;risposte&#91;i&#93;+"</td><td>"&#41;;
    out.println&#40;"![image](blu.gif)"&#41;;
    out.println&#40;&#40;int&#41;percentuale+"%</td>"&#41;;
    &#125;//for
    %>
    </tr>
    </table>
    <%
    st.close&#40;&#41;;
    rs.close&#40;&#41;;
    conn.close&#40;&#41;;
    %>
    </body>
    </html>
    
    

    QUESTA PARTE DI CODICE DEL FILE Vota.jsp
    vorrei modificarla in modo tale da acquisire ed elaborare le 10 riposte

    
    //crea la stringa SQL per l'aggiornamento
    stringaSql = "UPDATE frequenze SET frequenza=frequenza+1 WHERE risp LIKE '"+preferenza+"'";
    esito = st.executeUpdate&#40;stringaSql&#41;; 
    
    

    LO STESSO PER QUESTA PARTE DI CODICE DEL FILE Risultati.jsp
    vorrei modificarla in modo tale da acquisire ed elaborare le 10 riposte

    
    //crea il recordset -> calcolo dei voti totali
    ResultSet rs = st.executeQuery&#40;"SELECT sum&#40;frequenza&#41; as tot from
    frequenze"&#41;;
    rs.next&#40;&#41;;
    votiTot = rs.getInt&#40;"tot"&#41;;
    out.println&#40;"Totale dei voti&#58; "+votiTot+"
    "&#41;;
    //calcolo dei voti per ogni singola risposta e stampa
    for &#40;int i=0; i<numRisp; i++&#41;&#123;
    rs=st.executeQuery&#40;"SELECT sum&#40;frequenza&#41; as tot from frequenze WHERE
    risp = "+i&#41;;
    rs.next&#40;&#41;;
    frequenze&#91;i&#93;=rs.getInt&#40;"tot"&#41;;
    out.println&#40;risposte&#91;i&#93;+"&#58; "+frequenze&#91;i&#93;+" voti
    "&#41;;
    &#125;//for
    %>
    
    

    IL MIO VERO PROBLEMA e che credo che il principio sia lo stesso di questo /i file o sito SONDAGGIO ma non riesco a capire ma sopratutto a trovare il modo pratico ( insomma la parte di codice che dovrei modificare se non cambiare) in modo tale da elaborare queste maledette 10 domande.
    Per non parlare del database, vorrei sapere cosa dovrei o potrei cambiare per il mio scopo.

    Quando penso alla soluzione di questo sito o problema, mi chiedo come sarebbe questo esempio di SONDAGGIO SE INVECE DI UNA DOMANDA CON 4 RIPOSTE NE AVESSE 10 DI DOMANDE CON ALTRE TANTE RISPOSTE ed in quelle due parti di codice qui sopra in cui vedo e credo andrebbero fatte le modifiche.

    Se qualcuno mi volesse aiutare gli sarei veramente grato e veramente urgente va bene qualsiasi suggerimento GRAZIE CIAO


  • Super User

    Ciao sonik benvenuto nel forum 🙂

    Purtroppo il tuo post richiederebbe molto tempo sol per essere studiato a fondo e comunque di JSP ne so pochissimo 😞

    Il tempo è tiranno specie in questo periodo... spero si trovi a passare qualcuno che abbia già affrontato il tuo stesso problema e sappia consigliarti una soluzione 😉

    Ciao :ciauz: