Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* questionario in jsp???°o°
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 14 Mag 2006 19:57    Oggetto: * questionario in jsp???°o° Rispondi citando

Vorrei fare un sito con domande tipo un questionario.Ho gia fatto la pagina web in html con 20 domande con le varie opzioni/possibilli riposte usando delle CHECKBOX. Le risposte devono andare in un database che elaborera i dati ricevuti e infine presentera i risultati sottoforma di grafico tipo un sondaggio. Quindi per fare collegare il sito e il database credo dovrò usare jsp.Qunindi vorrei una mano per impostare il lavoro non dove incominciare accetto qualunque suggerimento. Grazie
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 15 Mag 2006 17:58    Oggetto: Re: questionario in jsp???°o° Rispondi citando

markus ha scritto:
Vorrei fare un sito con domande tipo un questionario.Ho gia fatto la pagina web in html con 20 domande con le varie opzioni e possibilli riposte usando delle CHECKBOX. Le risposte devono andare in un database che elabora i dati ricevuti e infine presenta risultati sottoforma di grafico,come in questo esempio di sondaggio:
(http://java.html.it/guide/lezione/805/gestire-un-sondaggio/).

Quindi per fare collegare il sito e il database credo che dovrò usare jsp.Qunindi vorrei una mano per impostare il lavoro non sò dove incominciare. Grazie
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 18 Mag 2006 12:55    Oggetto: Rispondi citando

Non conosco jsp quindi sul codice ti posso aiutare poco (credo di riuscire a leggerlo ma non a scriverne).

Sostanzialmente la tua pagina html deve inviare tramite l'action di un form i dati alla pagina jsp che apre una connessione e inserisce i dati su una tabella del db. Successivamente puoi mostrare un messaggio di ringraziamento.
Hai poi una terza pagina che tramite query su quella tabella ti permette di visualizzare i risultati (che potrai elaborare come vuoi graficamente o no).
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 20 Mag 2006 01:42    Oggetto: Rispondi citando

Si esattamente Horus te ne sarei grato se tu mi dessi una mano grazie
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 22 Mag 2006 08:18    Oggetto: Rispondi citando

Ci posso provare, come detto non conosco jsp quindi il grosso del lavoro lo devi fare tu ma se hai dubbi o problemi e posti il codice penso di riuscire a darti una mano.
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 22 Mag 2006 19:06    Oggetto: Rispondi citando

horus ha scritto:
Ci posso provare, come detto non conosco jsp quindi il grosso del lavoro lo devi fare tu ma se hai dubbi o problemi e posti il codice penso di riuscire a darti una mano.



Questa è la pagina HTML con le 10 domande:
Codice:
----------------------------------------------------------------------------------------
<html>
<head><title>QUESTIONARIO - PERITI INFORMATICI</title></head>
<body>
<body bgcolor=#CCFFFF>


<p>Ipotizzando che lei debba assumere per la propria azienda un collaboratore informatico, quali di queste
caratteristiche pensa debba avere? </p>

<b><big>COMPETENZE TECNICHE:</big></b>

<p><b>1. Secondo lei,quali delle seguenti capacità deve essere in possesso l'informatico?</b></p>
<form action="quest.jsp">
<input name="risp1" type="checkbox" value="00"><a href="cap_analisi.html">Capacità di analisi</a><br>
<input name="risp1" type="checkbox" value="01"><a href="cap_problemi.html">Capacità di risolvere i problemi</a><br>
<input name="risp1" type="checkbox" value="02"><a href="cap_sintesi.html">Capacità di sintesi</a><br>
<input name="risp1" type="checkbox" value="03">Predisposizione allo studio<br>
<input name="risp1" type="checkbox" value="04"><a href="cap_sperim.html">Capacità di sperimentazione</a><br>

<p><b>2. Quale dei seguenti sistemi operativi l'informatico dovrebbe saper utilizzare?</b></p>
<form action="quest.jsp">
<input name="risp2" type="checkbox" value="10">Macintosh<br>
<input name="risp2" type="checkbox" value="11">Windows<br>
<input name="risp2" type="checkbox" value="12">Linux</a><br>
<input name="risp2" type="checkbox" value="13">altro<br>

<p><b>3. Quale dei seguenti linguaggi l'informatico deve saper utilizzare?</b></p>
<form action="quest.jsp">
<input name="risp3" type="checkbox" value="20">Java<br>
<input name="risp3" type="checkbox" value="21">C/C++<br>
<input name="risp3" type="checkbox" value="22">SQL<br>
<input name="risp3" type="checkbox" value="23">Pascal<br>
<input name="risp3" type="checkbox" value="24">HTML<br>
<input name="risp3" type="checkbox" value="25">Fortran<br>
<input name="risp3" type="checkbox" value="26">COBOL<br>
<input name="risp3" type="checkbox" value="27">Assembler<br>
<input name="risp3" type="checkbox" value="28">altro<br>

<p><b>4. Di quali conoscenze h/w l'informatico deve essere in possesso?</b></p>
<form action="quest.jsp">
<input name="risp4" type="checkbox" value="30">Assemblaggio<br>
<input name="risp4" type="checkbox" value="31">Riparazione<br>
<input name="risp4" type="checkbox" value="32">Manutenzione<br>
<input name="risp4" type="checkbox" value="33">Altro<br>

<br/><b><big>CARATTERISTICHE PERSONALI:</big></b>

<p><b>5. Qanto tepmpo dovrebbe dedicare al lavoro l'informatico? </b></p>
<form action="quest.jsp">
<input name="risp5" type="checkbox" value="40">Tempo pieno<br>
<input name="risp5" type="checkbox" value="41">Partime<br>
<input name="risp5" type="checkbox" value="42">Altro<br>

<p><b>6. Che tipo di contratto offrirebbe al suo ipotetico dipendente?</b></p>
<form action="quest.jsp">
<input name="risp6" type="checkbox" value="50">Temporaneo<br>
<input name="risp6" type="checkbox" value="51">Tempo indeterminato<br>
<input name="risp6" type="checkbox" value="52">Interinale<br>

<p><b>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?</b></p>
<form action="quest.jsp">
<input name="risp7" type="checkbox" value="60">Ambizioso<br>
<input name="risp7" type="checkbox" value="61">Socievole<br>
<input name="risp7" type="checkbox" value="62">Riservato<br>
<input name="risp7" type="checkbox" value="63">Modesto<br>
<input name="risp7" type="checkbox" value="64">Tenace<br>
<input name="risp7" type="checkbox" value="65">Competitivo<br>
<input name="risp7" type="checkbox" value="66">Dotato di autocontrollo<br>
<input name="risp7" type="checkbox" value="67">Autostima<br>
<input name="risp7" type="checkbox" value="68">Altro<br>

<br/><b><big>CAPACITA' PROFESSIONALI:</big></b>

<p><b>8. Quali delle seguenti capacità gestionali, secondo lei, l'informatico dovrebbe possedere?</b></p>
<form action="quest.jsp">
<input name="risp8" type="checkbox" value="70">Capacità di organizzare<br>
<input name="risp8" type="checkbox" value="71"><a href="cap_controllo.html">Capacità di controllo</a><br>
<input name="risp8" type="checkbox" value="72">Capacità di attuazione/realizzazione<br>
<input name="risp8" type="checkbox" value="73">Capacità di definire la priorità<br>
<input name="risp8" type="checkbox" value="74">Capacità d'iniziativa<br>

<p><b>9. Quali lingue dovrebbe saper parlare in modo scorrevole l'informatico ?</b></p>
<form action="quest.jsp">
<input name="risp9" type="checkbox" value="80">Inglese<br>
<input name="risp9" type="checkbox" value="81">Francese<br>
<input name="risp9" type="checkbox" value="82">Tedesco<br>
<input name="risp9" type="checkbox" value="83">Spagnolo<br>
<input name="risp9" type="checkbox" value="84">Altro<br>

<p><b>10. Quali capacità (innovative) deve possedere l'informatico?</b></p>
<form action="quest.jsp">
<input name="risp10" type="checkbox" value="90"><a href="disp_cambiamento.htm">Disponibilità al cambiamento</a><br>
<input name="risp10" type="checkbox" value="91">Autonomia<br>
<input name="risp10" type="checkbox" value="92">Elasticità intellettuale, originalità<br>

<p><a href="quest.jsp"><input type="submit" value="INVIA"> </a></p>


</form>
</font>
</body>
</html>
-------------------------------------------------------------------------------------


Mentre questi sono i tre codici che ho preso come modello di riferimento per riuscire a fare questa cosa:

Vota.jsp
Codice:
<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("sun.jdbc.odbc.JdbcOdbcDriver");

//crea la connessione con l'origine dati
conn = DriverManager.getConnection("jdbc:odbc:sondaggio","","");

//crea lo statement
Statement st = conn.createStatement();

//legge il parametro contenente la risposta
String preferenza = new String (request.getParameter("risposta"));
String ip = new String(request.getRemoteAddr());

ResultSet rs = st.executeQuery("SELECT ip from ip_tab WHERE ip LIKE '"+ip+"'");
if(!rs.next()){
//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 ("INSERT INTO ip_tab (ip) VALUES ('"+ip+"')");
st.executeUpdate(stringaSql);

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

//controlla che tutto sia andato bene
if (esito==1)
out.println("Votazione eseguita con successo");
else
out.println("Errore, non stato possibile eseguire la votazione");
}//if
else{ //l'utente ha gia votato
out.println("Spiacenti, hai già votato!<br>");
out.println("Per ragioni di credibilità del sondaggio<br>");
out.println("ogni visitatore può votare una sola volta<br><br>");
}//else
st.close();
conn.close();
%>
<br><br>
<a href="risultati.jsp">Visualizza i risultati parziali</a>
</font>
</body>
</html>


Risultati.jsp
Codice:
<html>
<head>
<title>Risultati del sondaggio</title>
</head>
<body bgcolor=#FFFF99><center>
<b><big>Domanda del sondaggio</b></big><br><br>
<% page errorPage = "PaginaErrore.jsp" %>
<%@ page language="java" import="java.sql.*" %>
<%
Connection conn = null;

//carica il file di classe del driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//crea la connessione con l'origine dati
conn = DriverManager.getConnection("jdbc:odbc:sondaggio","","");

//crea lo statement
Statement st = conn.createStatement();
/* --- DEFINIZIONE DI VARIABILI --- */
int numRisp = 4; //numero possibili risposte
int votiTot; //numero totale dei voti
float percentuale; //percentuale per ogni risposta
int frequenze[] = new int[numRisp]; //numero di voti per ogni risposta
String risposte[] = new String[numRisp]; //array di stringhe con le risposte
risposte[0]="Risposta 1";
risposte[1]="Risposta 2";
risposte[2]="Risposta 3";
risposte[3]="Risposta 4";

//crea il recordset -> calcolo dei voti totali
ResultSet rs = st.executeQuery("SELECT sum(frequenza) as tot from
frequenze");
rs.next();
votiTot = rs.getInt("tot");
out.println("Totale dei voti: "+votiTot+"<br>");
//calcolo dei voti per ogni singola risposta e stampa
for (int i=0; i<numRisp; i++){
rs=st.executeQuery("SELECT sum(frequenza) as tot from frequenze WHERE
risp = "+i);
rs.next();
frequenze[i]=rs.getInt("tot");
out.println(risposte[i]+": "+frequenze[i]+" voti<br>");
}//for
%>
<br><br>
<table align=center border=0>

<%//creazione del grafico dei voti
for (int i=0; i<numRisp; i++){
//calcolo della percentuale
percentuale = (float)frequenze[i]/votiTot*100;
out.println("<tr valign='center' align='left'><td>");
out.println(risposte[i]+"</td><td>");
out.println("<img src='blu.gif' width="+percentuale*5+" height=20>");
out.println((int)percentuale+"%</td>");
}//for
%>
</tr>
</table>
<%
st.close();
rs.close();
conn.close();
%>
</body>
</html>
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 23 Mag 2006 08:35    Oggetto: Rispondi citando

Innanzi tutto ho fatto un paio di modifiche al tuo messaggio:
1. ho inserito il codice nei tag Code, questo evita che si perdano dei pezzi a causa della formattazione del forum (ad esempio il tag a)
2. ho rimosso il testo dell'articolo che avevi copiato: per il codice non c'è problema in quanto lo stai usando e quindi lavoriamo sulle tue pagine mentre per il testo completo di un articolo sarebbe sempre meglio copiare al massimo una piccola parte e citare la fonte originale (cosa che peraltro hai già fatto qualche messaggio fa e quindi so dove andarla a prendere).

Ma torniamo a noi e al tuo problema. Prima di tutto una domanda di carattere generale, come mai vuoi farla in jsp?
Ti consiglio inoltre di leggerti qualche tutorial di html per essere padrone del linguaggio prima di procedere alla creazione di pagine dinamiche, non vorrei smontarti ma fare una gestione di un sondaggio senza conoscere almeno l'html mi sembra come cercare di risolvere equazioni differenziali senza saper fare le somme.

Comunque,
la pagina con le domande contiene alcuni errori:

1) il tag body va messo una volta sola

2) il tag form va inserito 1 sola volta magari all'inizio e non per tutte le domande, inoltre l'action va indirizzato alla pagina che realmente analizzerà i dati, inserirei inoltre il method in modo da passare i dati in post invece che in querystring; nel tuo caso io metterei una cosa del tipo:
Codice:
<p>Ipotizzando che lei debba assumere per la propria azienda un collaboratore informatico, quali di queste
caratteristiche pensa debba avere? </p>

<b><big>COMPETENZE TECNICHE:</big></b>
<form method="post" action="vota.jsp">

<p><b>1. Secondo lei,quali delle seguenti capacità deve essere in possesso l'informatico?</b></p>
<form action="quest.jsp">
<input name="risp1" type="checkbox" value="00"><a href="cap_analisi.html">Capacità di analisi</a><br>
.....


3) il pulsante di invio del form non ha bisogno di essere un link, quando all'interno di un form inserisci un oggetto input di tipo submit al click sarà automaticamente associato l'invio dei dati alla pagina indicata nell'action del form. Nel tuo caso quindi:
Codice:
.....
<input name="risp10" type="checkbox" value="92">Elasticità intellettuale, originalità<br>
<p><input type="submit" value="INVIA"></p>
</form>


4) hai un tag font chiuso ma mai aperto

5) la gestione dei checkbox è leggermente differende da quella dei radio, anche la pagina di gestione dei risultati quindi andrà leggermente modificata.

Comincia a rivedere questa, poi passeremo al resto. Il db l'hai già creato, se non l'hai fatto questo può essere un buon momento.
P.S.: non è detto che le mie risposte saranno velocissime, non disperare se non lo faccio subito.
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 26 Mag 2006 21:47    Oggetto: Rispondi citando

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

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


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

//crea il recordset -> calcolo dei voti totali
ResultSet rs = st.executeQuery("SELECT sum(frequenza) as tot from
frequenze");
rs.next();
votiTot = rs.getInt("tot");
out.println("Totale dei voti: "+votiTot+"<br>");
//calcolo dei voti per ogni singola risposta e stampa
for (int i=0; i<numRisp; i++){
rs=st.executeQuery("SELECT sum(frequenza) as tot from frequenze WHERE
risp = "+i);
rs.next();
frequenze[i]=rs.getInt("tot");
out.println(risposte[i]+": "+frequenze[i]+" voti<br>");
}//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.

PS: grazie per il suggerimento o meglio per la correzione riguardo gli errori di sintassi html, se ne vedi altri ti prego di farmelo presente subito, vorrei fare meno errori possibilmente ed ovviamente imparare ad evitarli.
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 28 Mag 2006 10:52    Oggetto: Rispondi citando

Mi è venuto un dubbio su i campi della tabella frequenza, ma i campi "risp"e "frequenze" di che tipo sono esattamente, perchè mi sto confodendo tra il tipo "contatore" e il tipo "numerico"

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.
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 29 Mag 2006 10:42    Oggetto: Rispondi citando

Dunque, il file vota.jsp è fatto per una sola domanda con la risposta di tipo radio mentre tu vuoi n domande con risposte di tipo checkbox, questo vuol dire che per ogni domanda l'utente potrà mettere m risposte per un totale di n*m possibili variabili.

In controllo dell'ip invece lo puoi fare anche una volta sola.

Sostanzialmente io farei qualcosa del tipo:
Codice:
String ip = new String(request.getRemoteAddr());

ResultSet rs = st.executeQuery("SELECT ip from ip_tab WHERE ip LIKE '"+ip+"'");
if(!rs.next()){
//l'ip non ha mai votato

//crea la tringa SQL per l'aggiornamento
String stringaSql = new String ("INSERT INTO ip_tab (ip) VALUES
('"+ip+"')"); st.executeUpdate(stringaSql);

//esito dell'aggiormanento al Data base
int esito = 0;

// numero massimo di domande
int max_domande = 10;

// cicla su tutte le domande
for (int x; x < max_domande; x++)
{
  string[] risposta = request.getParameterValues("risp"+x);

  for (int j=0;j<risposta.length;j++)
 {
   //crea la stringa SQL per l'aggiornamento
   stringaSql = "UPDATE frequenze SET frequenza=frequenza+1 WHERE risp = '"+risposta[j]+"'";
   esito += st.executeUpdate(stringaSql);
 }
}

//controlla che tutto sia andato bene
if (esito==max_domande)
out.println("Votazione eseguita con successo");
else
out.println("Errore, non stato possibile eseguire la votazione");
}//if
else{ //l'utente ha gia votato

Ovviamente potrebbe non compilare perché la sintassi l'ho presa dal C e da qualche breve ricerca su google. Considera questo codice come uno spunto per fare le tue personali ricerche e capire i concetti.

Fondamentalmente l'idea è di ciclare su tutte le domande e poi su tutti i check di una domanda per recuperare il valore di quelli selezionati ed usarlo per gli update sul db.

Per quanto riguarda il db il tipo contatore è un numero che si autoincrementa e che serve per generare una chiave univoca per una tabella, nel tuo caso non è necessario perché devi avere un campo risp che contiene il numero della risposta (01,02,...,11,12,...,91,92,...) che puoi usare come chiave e un numero chiamato frequenza dove andrai a sommare i singoli voti.
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 29 Mag 2006 13:57    Oggetto: Rispondi citando

potresti chiarirmi meglio questa parte sul database, non ho capito bene qual' è la parte obsoleta e quale no, inoltre vorrei sapere esattamente quante tabelle dovrei utilizzare e il tipo dei campi.

Una curiosita: Ho provato CON NETBEANS 3.6 (e separattamente con tomcat 5.5) a mettere in pratica i 3 file dell' esercizio SONDAGGIO con il database impostato ma mi da svariati errori, mi chiedevo se a te andava o se lo puoi provare e dirmi se anche ate dà errori.
Codice:

Per quanto riguarda il db il tipo contatore è un numero che si autoincrementa e che serve per generare una chiave univoca per una tabella, nel tuo caso non è necessario perché devi avere un campo [i]risp[/i] che contiene il numero della risposta (01,02,...,11,12,...,91,92,...) che puoi usare come chiave e un numero chiamato [i]frequenza[/i] dove andrai a sommare i singoli voti.[/quote]
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 29 Mag 2006 15:17    Oggetto: Rispondi citando

Riguardando farei qualche modifica a quanto consigliato dai file che hai trovato tu e creerei due tabelle:

Codice:
ip_tab
---------
ip    testo (15)

Che dovrà contenere gli ip di chi ha votato.

Codice:
frequenze
---------
risp  numero
frequenza numero

Che conterrà i voti presi da ciascuna domanda. risp sarà il numero della domanda mentre frequenza sarà il numero di voti.

Quando un utente vota il programma controlla se ha già votato facendo una query sulla tabella ip_tab con il suo ip, nel caso non abbia ancora votato (sul codice è: !rs.next()) passa all'analisi dei voti e per ogni checkbox selezionata, da come ha fatto l'html nell'oggetto request troverai i valori selezionati dall'utente in un formato chiave-valore tipo:
Codice:
risp1=01&risp1=02&risp10=92

Ciclando su questi risultati puoi comporre la seconda query che, tenendo conto che il campo sul db l'ho fatto diventare number e quindi tolgo gli apici, sarebbe qualcosa del tipo:
Codice:
//crea la stringa SQL per l'aggiornamento
   stringaSql = "UPDATE frequenze SET frequenza=frequenza+1 WHERE risp = "+risposta[j];

E cioè aggiorna la tebella frequenze aggiungendo 1 al campo frequenza dove il campo risp ha il valore di risposta[j] (che dovrebbe essere il valore della checkbox: 01,02,...,92,...).

Per le prove purtroppo non posso aiutarti in quanto non ho nessun tool di sviluppo per il tuo ambiente. Il compilatore comunque dovrebbe darti la riga e la descrizione di ogni errore e da quella lista puoi partire a risolvere uno per uno con pazienza.
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 04 Giu 2006 20:43    Oggetto: Rispondi citando

horus ti ho mandato messaggio in pv se lo vedi rispondi appena possibile grazie ciao
Top
Profilo Invia messaggio privato
markus
Mortale devoto
Mortale devoto


Registrato: 14/05/06 19:20
Messaggi: 9

MessaggioInviato: 05 Giu 2006 18:47    Oggetto: Rispondi citando

La mia idea è questa per adesso-->

Il il file con le 10 domande è questa con le modifiche da te suggerite:

Sondaggio.html

Codice:

<html>
<body bgcolor=#CCFFFF>
[b][u]<font>[/u][/b]
<head><title>QUESTIONARIO - PERITI INFORMATICI</title></head>



<p>Ipotizzando che lei debba assumere per la propria azienda un collaboratore informatico, quali di queste
caratteristiche pensa debba avere? </p>

<b><big>COMPETENZE TECNICHE:</big></b>
[u]<form method="post" action="vota.jsp">[/u]
<p><b>1. Secondo lei,quali delle seguenti capacità deve essere in possesso l?informatico?</b></p>

<input name="rispo" type="checkbox" value="00"><a href="cap_analisi.html">Capacità di analisi</a><br>
<input name="rispo" type="checkbox" value="01"><a href="cap_problemi.html">Capacità di risolvere i problemi</a><br>
<input name="rispo" type="checkbox" value="02"><a href="cap_sintesi.html">Capacità di sintesi</a><br>
<input name="rispo" type="checkbox" value="03">Predisposizione allo studio<br>
<input name="rispo" type="checkbox" value="04"><a href="cap_sperim.html">Capacità di sperimentazione</a><br>

<p><b>2. Quale dei seguenti sistemi operativi l?informatico dovrebbe saper utilizzare?</b></p>

<input name="rispo" type="checkbox" value="10">Macintosh<br>
<input name="rispo" type="checkbox" value="11">Windows<br>
<input name="rispo" type="checkbox" value="12">Linux</a><br>
<input name="rispo" type="checkbox" value="13">altro<br>

<p><b>3. Quale dei seguenti linguaggi l?informatico deve saper utilizzare?</b></p>

<input name="rispo" type="checkbox" value="20">Java<br>
<input name="rispo" type="checkbox" value="21">C/C++<br>
<input name="rispo" type="checkbox" value="22">SQL<br>
<input name="rispo" type="checkbox" value="23">Pascal<br>
<input name="rispo" type="checkbox" value="24">HTML<br>
<input name="rispo" type="checkbox" value="25">Fortran<br>
<input name="rispo" type="checkbox" value="26">COBOL<br>
<input name="rispo" type="checkbox" value="27">Assembler<br>
<input name="rispo" type="checkbox" value="28">altro<br>

<p><b>4. Di quali conoscenze h/w l?informatico deve essere in possesso?</b></p>

<input name="rispo" type="checkbox" value="30">Assemblaggio<br>
<input name="rispo" type="checkbox" value="31">Riparazione<br>
<input name="rispo" type="checkbox" value="32">Manutenzione<br>
<input name="rispo" type="checkbox" value="33">Altro<br>

<br/><b><big>CARATTERISTICHE PERSONALI:</big></b>

<p><b>5. Qanto tepmpo dovrebbe dedicare al lavoro l'informatico? </b></p>

<input name="rispo" type="checkbox" value="40">Tempo pieno<br>
<input name="rispo" type="checkbox" value="41">Partime<br>
<input name="rispo" type="checkbox" value="42">Altro<br>

<p><b>6. Che tipo di contratto offrirebbe al suo ipotetico dipendente?</b></p>

<input name="rispo" type="checkbox" value="50">Temporaneo<br>
<input name="rispo" type="checkbox" value="51">Tempo indeterminato<br>
<input name="rispo" type="checkbox" value="52">Interinale<br>

<p><b>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?</b></p>

<input name="rispo" type="checkbox" value="60">Ambizioso<br>
<input name="rispo" type="checkbox" value="61">Socievole<br>
<input name="rispo" type="checkbox" value="62">Riservato<br>
<input name="rispo" type="checkbox" value="63">Modesto<br>
<input name="rispo" type="checkbox" value="64">Tenace<br>
<input name="rispo" type="checkbox" value="65">Competitivo<br>
<input name="rispo" type="checkbox" value="66">Dotato di autocontrollo<br>
<input name="rispo" type="checkbox" value="67">Autostima<br>
<input name="rispo" type="checkbox" value="68">Altro<br>

<br/><b><big>CAPACITA' PROFESSIONALI:</big></b>

<p><b>8. Quali delle seguenti capacità gestionali, secondo lei, l'informatico dovrebbe possedere?</b></p>

<input name="rispo" type="checkbox" value="70">Capacità di organizzare<br>
<input name="rispo" type="checkbox" value="71"><a href="cap_controllo.html">Capacità di controllo</a><br>
<input name="rispo" type="checkbox" value="72">Capacità di attuazione/realizzazione<br>
<input name="rispo" type="checkbox" value="73">Capacità di definire la priorità<br>
<input name="rispo" type="checkbox" value="74">Capacità d'iniziativa<br>

<p><b>9. Quali lingue dovrebbe saper parlare in modo scorrevole l'informatico ?</b></p>

<input name="rispo" type="checkbox" value="80">Inglese<br>
<input name="rispo" type="checkbox" value="81">Francese<br>
<input name="rispo" type="checkbox" value="82">Tedesco<br>
<input name="rispo" type="checkbox" value="83">Spagnolo<br>
<input name="rispo" type="checkbox" value="84">Altro<br>

<p><b>10. Quali capacità (innovative) deve possedere l'informatico?</b></p>

<input name="rispo" type="checkbox" value="90"><a href="disp_cambiamento.htm">Disponibilità al cambiamento</a><br>
<input name="rispo" type="checkbox" value="91">Autonomia<br>
<input name="rispo" type="checkbox" value="92">Elasticità intellettuale, originalità<br>

<p><input type="submit" value="INVIA"></p>

</form>
<a href="risultati.jsp">Visualizza i risultati parziali</a>
</font>
</body>
</html>


Poi c'è il file vota.jsp a cui deciso di eliminare per il momento il la parte che riguarda il controllo dell'indirizzo ip:

Vota.jsp
Codice:

<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">


<%@ page language="java" import="java.sql.*" %>
<%

    Connection conn = null;
 
    //carica il file di classe del driver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   
    //crea la connessione con l'origine dati
    conn = DriverManager.getConnection("jdbc:odbc:sondaggio");
   
    //crea lo statement
    Statement st = conn.createStatement();

    //legge il parametro contenente la risposta
   String responses =new String (request.getParameter("risposta"));
 [b]
//crea la stringa SQL per l'aggiornamento
   stringaSql = "UPDATE frequenze SET frequenza=frequenza+1 WHERE risp = "+risposta[j];
[/b]


    st.close();
    conn.close();
 %>
<br><br>
<a Grazie per la colaborazione</a>
<a href="risultati.jsp">Visualizza i risultati parziali</a>
</font>
</body>
</html>


c'è poi questa altra versione o alternativa dello stesso file Vota.jsp, dove la parte sottolineata si basa sul file originale dell'esempio online di Sondaggio in jsp

vota1.jsp

Codice:

<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">


<%@ page language="java" import="java.sql.*" %>
<%

    Connection conn = null;
 
    //carica il file di classe del driver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   
    //crea la connessione con l'origine dati
    conn = DriverManager.getConnection("jdbc:odbc:sondaggio");
   
    //crea lo statement
    Statement st = conn.createStatement();

    //legge il parametro contenente la risposta
   String responses =new String (request.getParameter("risposta"));
 
[u]
 //crea la tringa SQL per l'aggiornamento
String stringaSql = "UPDATE frequenze SET frequenza=frequenza+1 WHERE risp LIKE

'"+responses+"'";

[/u]


    st.close();
    conn.close();
 %>
<br><br>
<a Grazie per la colaborazione</a>
<a href="risultati.jsp">Visualizza i risultati parziali</a>
</font>
</body>
</html>


Ho eliminato la parte che riguardava il controlo dell' indirizzo perchè non m'interessa al momento visto che ci lavoro solo io,ma quello che mi preme è riuscire a mandare questi dati da value="00" alla "risposta" in questa riga
Codice:
String responses =new String (request.getParameter("risposta"));


Vedi horus il problema è che provando sia vota.jsp che Vota1.jsp nessuna delle due riesce ad inviare i dati nel database

Se il problema fosse il database ho fatto come mi hai sugerito tu solo che adesso ho solo una tabella frequenze con campo risp di tipo "numerico" con "dimensione campo" intero e zero 0 come "valore predefinito" e la stessa cosa nel campo frequenza ;il database l'ho impostato in: Amministrazione Origine dati (ODBC),

Quindi mi chiedo perchè non mi manda niente nel database quando clicko
"invia" (nella pagina HTML) insommma perchè non mi aggiorna questo database?

Lo sò che con solo il file HTML(Sondaggio.html) e il file Vota.jsp non posso
visualzzare niente in nessuna pagina senza la pagina Risultati.jsp (che 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)

o meglio dopo il click su invia mi compare una pagina con scritto errore 500 il che vuol dire che non c'è nessun errore nel codice di vota.jsp (premetto che uso NETBEANS 3.6 per lanciare la pagina html o per modificare il codice delle pagine jsp) e quindi aprendo il database e clicando sulla tabella (e non facendo visualizza struttura) dovrei poter vedere i campi aggiornati con questo tipo d'informazioni (01,02,...,11,12,...,91,92,...) o al limite di questo come dici tu Horus risp1=01&risp1=02&risp10=92 ma niente di niente.

In pratica il mio dilemma è che sono 3 blocchi di istruzioni (sempre in Vota.jsp) il primo blocco si connette al database, il secondo riceve i dati dal pagina html e il terzo aggiorna il database.
Cosa c'è di più semplice ma soprattutto perchè non funziona?.


risp grazie ciao
Top
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 10:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 06 Giu 2006 10:00    Oggetto: Rispondi

Il file del sondaggio direi che può andare, si potrebbe migliorare ma fa il suo dovere.

In questo messaggio ti avevo suggerito di fare un loop che però non vedo nel codice del tuo ultimo post. Probabilmente è una svista quindi parto dal presupposto che tu abbia studiato i loop e come funzionano.

Rispetto a quella versione però hai modificato il file dove ci sono le domande quindi c'è bisogno di un adattamento. Quando premi invia viene inviato alla pagina vota.jsp un array di valori con i checkbox selezionati. Il valore che devi prendere è però quello giusto, fino a che cercherai di leggere il parametro risposta che nella pagina sondaggio.htm non esiste ti darà sempre errore.
L'errore 500 vuol dire tutto e niente, nel tuo caso credo avvenga perché c'è un errore in uno script lato server.

La parte relativa alla memorizzazione dei dati io la farei così (sempre ricordando che non conosco jsp, quindi se ci sono problemi la sintassi dovrai necessariamente verificarla tu in base ai tuoi studi):
Codice:
string[] risposta = request.getParameterValues("rispo");
for (int j=0;j<risposta.length;j++)
{
  //crea la stringa sql per l'aggiornamento
  stringaSql = "update frequenze set frequenza=frequenza+1 where risp='"+risposta[j]+"'";
  esito += st.executeUpdate(stringaSql);
}


Nel db poi dovrai preparare la tabella per l'arrivo dei dati quindi la tua tabella dovrà essere così:

Codice:
risp -> tipo: testo -> dimensione: 2 (o di più se prevedi più di 100 possibli risposte)
frequenza -> tipo: numerico -> default: 0


Codice:

  risp  |  frequenza
----------------------
   00   |     0
   01   |     0
   02   |     0
   03   |     0
   04   |     0
   10   |     0
   11   |     0
   12   |     0
   13   |     0
   20   |     0
   21   |     0
   22   |     0
   ..   |     .
   82   |     0
   83   |     0
   84   |     0
   90   |     0
   91   |     0
   92   |     0

Altrimenti se la riga non esiste non potrai mai fare un'update, per questo argomento consiglio una ricerca sulla sintassi sql.
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi