Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581

    Problema in ciclo se rs vuoto ... HELP

    Ciao a tutti
    ho una pagina che processa dei sondaggi

    La pagina prende l'id del sondaggio e cicla tutte le domande con le possibili risposte (possono essere piu' di una) facevndo vedere di volta in volta i radio per scegliere la risposta relativa alla domanda in questione

    Il problema è, che io posso avere inserito una domanda, ma NON aver messo le sue relative risposte

    In questo caso va ovviamente in errore in quanto trova un record vuoto

    Qualcuno che mi riesce ad aiutareper risolvere questo problema?

    eccovi il codice
    codice:
    <%@ LANGUAGE="VBSCRIPT" %>
    <%
    Immaginiperfila=1      
    NumeroImmagini=8
    Scadenza=0        'MINUTI 
    
    Registra=Request.Form("registra")  'VARIBILE DI CONTROLLO. DON'T TOUCH!!!!
    
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.Open Application("DBConnSysPoll")
    
    Iip=request.servervariables("REMOTE_ADDR")
    FNome=request.form("Nome")
    FCognome=request.form("Cognome")
    FEmail=request.form("Email")
    Fserie=request.form("valore")
    
    ultimosort = Request.form("ultimosort")
    if ultimosort = "" then ultimosort=0
    ultimoid = Request.form("ultimoid")
    if ultimoid = "" then ultimoid=0
    progressivo = Request.form("progressivo")
    if progressivo = "" then progressivo=0
    
    Session("serie")=Fserie
    
    set rsConteggio = conn.Execute("select vedirisultati,count(*) from V_domande where idserie = " & Fserie & " Group by vedirisultati")
    quante = rsConteggio(1)
    rsConteggio.close
    set rsConteggio = nothing
    
    If session("serie") = 0 then%>
             <html><body> 
    
             <TABLE height=100% width=100%>
             <TR>
             <TD valign=center align=center>
             <Font color=red size=+3>Attualmente non c'è alcuna serie da votare</Font>
             </TD>
             </TR>
             </TABLE>
    
             </body></html>
    <%else%>
    <%
    	'VISUALIZZAZIONE DOMANDE
    	sql = "SELECT Domande.id, Domande.titolo, Domande.descrizione, Domande.sort, Serie.titolo as titolo_serie, Serie.vedirisultati"
    	sql = sql & " FROM Domande INNER JOIN Serie ON Serie.id = Domande.idserie"
    	sql = sql & " WHERE idserie = " & FSerie
    	sql = sql & " AND (Domande.sort > " & ultimosort
    	sql = sql & " OR (Domande.sort = " & ultimosort & " AND Domande.id > " & ultimoid & "))"
    	sql = sql & " ORDER BY Domande.sort, Domande.id"
    	set rsDomande = conn.Execute(sql)
    
    	if not rsDomande.EOF then
    
    		progressivo = progressivo + 1
    		
    		set rs=conn.execute("select Nomefile,Didascalia,id,sort,simbolo from scelte where idserie=" & Fserie & " AND iddomanda =" & rsDomande("id") & " ORDER BY sort,id")
             rs.movefirst
    %>
    <script language=javascript>
    function controllo_voto(form){
    	Messaggio='';
    	if (form.voto.length) {
    		index = -1;
    		for (i = 0; i < form.voto.length; i++) {		
    			if (form.voto[i].checked) {
    				index = i;
    				break;
    			}
    		}
    		if (index < 0){
    			Messaggio=Messaggio+"Occorre effettuare una scelta!\n";
    		} 
    	}
    	if (Messaggio != '')  {alert(Messaggio);return false;}
    }
    </script>
             <html><body>
    
             <center><h2><%=rsDomande("titolo_serie")%></h2></center>
             <center><h3>"<%=rsDomande("titolo")%>"(<%=progressivo%>/<%=quante%>)</h3></center>
             <center>
    		<FORM ACTION="scheda_do.asp" METHOD=POST NAME="form" onsubmit="return controllo_voto(this);">
    		<INPUT TYPE=HIDDEN NAME="Nome" VALUE=<%=Fnome%>>
    		<INPUT TYPE=HIDDEN NAME="Cognome" VALUE=<%=Fcognome%>>
    		<INPUT TYPE=HIDDEN NAME="Email" VALUE=<%=Femail%>>
    		<INPUT TYPE=HIDDEN NAME="valore" VALUE=<%=Fserie%>>
    		<INPUT TYPE=HIDDEN NAME="ultimosort" VALUE=<%=rsDomande("sort")%>>
    		<INPUT TYPE=HIDDEN NAME="ultimoid" VALUE=<%=rsDomande("id")%>>
    		<INPUT TYPE=HIDDEN NAME="progressivo" VALUE=<%=progressivo%>>
    		<INPUT TYPE=HIDDEN NAME="iddomanda" VALUE=<%=rsDomande("id")%>>
             <TABLE WIDTH=200>
             <%
             n=0
             set root=conn.Execute("select cartella from admin where id in (select idadmin from serie where id="&session("serie")& ")")
             cartella = "http://syspoll.multimodo.com/" & root(0)& "/" & session("serie")&"/"
             for j=0 to (numeroimmagini/Immaginiperfila)
    		%><TR><%
    			for i=1 to Immaginiperfila
    				n=n+1
    				if ((not rs.eof) and (n<=numeroimmagini)) then
    					Estensione=Right(Rs("Nomefile"),3)	
    					%>
    					<TD ALIGN=center title="<%=rs("didascalia")%>" width="15%">
    					</td><TD ALIGN=left title="<%=rs("didascalia")%>">
    					
    					<input type="radio" name="voto" value=<%=rs.fields("id")%>>
    					<%=rs("simbolo")%>
    					<%'response.write(rs.fields("Didascalia"))%>
    					</TD>
    				<%else
    					if rs.eof then exit for
    				 end if
    
    			     rs.movenext
    			 next
    			 %>  
    			 </TR>
    			<%
              next
    			rsDomande.close
    			set rsDomande=nothing
    			rs.close
    			set rs=nothing
              %>
    		<tr><td colspan="<%=2*Immaginiperfila%>" align=center><input type="submit" value="Conferma"></td></tr>
            </table>
    		</FORM>
              </center>
    	<%
    	else 'domande finite
    		rsDomande.close
    		set rsDomande=nothing
    		conn.Close
    		set conn=nothing
    		session("registrato")=true
    		if vedirisultati = 0 then
    			Response.Redirect("grazie.asp?id=" & session("serie"))
    		else
    			Response.Redirect("grazie.asp?id=" & session("serie")) 'grafico.asp
    		end if
    	end if
    %>	
    
    </body></html>
    <%
      End if
    
    conn.Close
    set conn=nothing
    %>

  2. #2
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    dimenticavo ..
    in pratica questa pagina mi fa votare al sondaggio .. esempio

    se ho 4 domande con le relative risposte, me le farà vedere una alla volta, voterò in ognuna e mi dirà Grazie

    Se invece di quelle 4 domande solo 3 hanno le risposte, mi deve fare vedere nel ciclo solo le domande che hanno delle risposte altrimenti passare a quella successiva

    E' proprio su questo che chiedo aiuto .. dove mettere il controllo nel codice..e come metterlo?

  3. #3
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    up

  4. #4
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    lascia perdere il codice per ora.
    Come hai strutturato il DB? Le domande sono nella stessa tabella delle risposte? Explain.
    www.beppegrillo.it
    Il blog di Beppe!!

  5. #5
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    Il codice che ho postato è quello attuale che funziona, peccato solo che il "fenomeno" che ha scritto il tutto a suo tempo non avesse preventivato che potevano esserci delle domande senza le risposte inserite!!!

    Non riesco a postare la struttura del DB .. è troppo incasinata e già il codice è abbastanza capibile :|

  6. #6
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Allora non posso esserti di aiuto.
    Non voglio avere la struttura completa del DB ma vorrei solo sapere come funziona la relazione domanda-risposta e in che modo è strutturata questa parte (sono su una stessa tabella? hanno un campo in comune? ecc.)

    Data la lunghezza del codice che hai postato, non mi sembra il caso di controllarlo tutto per reperire le info sulla struttura del DB senò domani sono ancora qui, sempre che si possano reperire tutte le info del caso.

    Se non metti qualche info in piu (il che non vuol dire 2000 righe di codice) non penso che avrai molti aiuti. Prima devi dare info generali e poi eventualmente posti il codice.

    Se domani ho un po di tempo e hai ancora lo stesso problema posso provare a darti una mano, sempre che tu abbia aggiunto le info che ti ho chiesto.

    Sorry.
    www.beppegrillo.it
    Il blog di Beppe!!

  7. #7
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    Le tabelle sono così strutturate:

    "Serie" con colonne:
    - ID
    - Titolo
    - Descrizione
    - vedirisultati (booleano 0/1)

    "Domande"
    - id
    - idserie
    - titolo
    - descrizione
    - sort

    "Scelte"
    - Id
    - Nome
    - Didascalia
    - Idserie
    - Descrizione
    - iddomanda
    - sort

    "Voti"
    - ID
    - Idscelta
    - iddomanda
    - idserie

    Poi sull'SQL server ci sono altri incroci strani tipo il V_domande ... ma no ci voglio nemmeno pensare

    In pratica qua si tratta di intercettare quando cicla le varie risposte per la domanda del sondaggio, di saltare al record (domanda) successivo, nel caso in cui la domanda attuale non abbia risposte inserite come possibili scelte

    Comq vedi chi l'ha fatto è un pazzo .. nopmi assurdi e gran casino

  8. #8
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Le risposte sarebbero nella tabella "Scelte"?
    Le altre tabelle che hai postato a cosa servono?

    "In pratica qua si tratta di intercettare quando cicla le varie risposte per la domanda del sondaggio, di saltare al record (domanda) successivo, nel caso in cui la domanda attuale non abbia risposte inserite come possibili scelte"

    Quindi il controllo sulle risposte va fatto prima di estrarre le domande. Se mi spieghi a cosa servono le altre tabelle che hai postato e che relazione hanno con le domande e risposte, vediamo di trovare la scelta migliore...si spera.
    www.beppegrillo.it
    Il blog di Beppe!!

  9. #9
    Utente di HTML.it L'avatar di Fichico
    Registrato dal
    Nov 2002
    residenza
    Bologna
    Messaggi
    581
    La tbl Serie contiene praticamente i sondaggi

    La tbl Domande contiene le domande dei sondaggi ed è legata alla tbl Serie tramite il campo idserie

    La tbl Scelte contiene le risposte/scelte possibili per ogni domanda ed è legata alla tbl Domande tramite iddomanda e alla tbl Serie tramite idserie

    La tbl Voti contiene la scelta che durante il sondaggio l'utente fa per ogni domanda con le sue relative risposte, è legata a tbl Serie tramite idserie, a tbl Domande tramite iddomanda e a tbl Scelte tramite idscelta

    Il funzionamento della pagina è che data la serie che viene passata da form (o in alternativa da query), estrapola le domande e per ogni domanda le relative scelte; per ogni domanda presente fa il ciclo all'interno del quale c'è una form; finchè ci sono domande quella form manda a scheda_do.asp che inserisce di volta in volta la scelta per la domanda ciclata; nel caso le domande siano finite rimanda alla pagina dei ringraziamenti o alla pagina dei ringraziamenti che ha anche il grafico coi risultati

    il punto "critico" della pagina è nella porzione di codice che data la domanda ne trova le scelte:
    codice:
    	'VISUALIZZAZIONE DOMANDE
    	sql = "SELECT Domande.id, Domande.titolo, Domande.descrizione, Domande.sort, Serie.titolo as titolo_serie, Serie.vedirisultati"
    	sql = sql & " FROM Domande INNER JOIN Serie ON Serie.id = Domande.idserie"
    	sql = sql & " WHERE idserie = " & FSerie
    	sql = sql & " AND (Domande.sort > " & ultimosort
    	sql = sql & " OR (Domande.sort = " & ultimosort & " AND Domande.id > " & ultimoid & "))"
    	sql = sql & " ORDER BY Domande.sort, Domande.id"
    	set rsDomande = conn.Execute(sql)
    
    	if not rsDomande.EOF then
    
    		progressivo = progressivo + 1
    		
    		set rs=conn.execute("select Nomefile,Didascalia,id,sort,simbolo from scelte where idserie=" & Fserie & " AND iddomanda =" & rsDomande("id") & " ORDER BY sort,id")
             rs.movefirst
    spero di esser stato più chiaro e ti ringrazio ancora per la disponibilità

  10. #10
    Utente di HTML.it L'avatar di colde
    Registrato dal
    Feb 2001
    Messaggi
    1,802
    Puoi provare così, o qualcosa del genere:

    'VISUALIZZAZIONE DOMANDE
    sql = "SELECT Domande.id, Domande.titolo, Domande.descrizione, Domande.sort, Serie.titolo as titolo_serie, Serie.vedirisultati"
    sql = sql & " FROM Domande, scelte INNER JOIN Serie ON Serie.id = Domande.idserie"
    sql = sql & " WHERE idserie = " & FSerie
    sql = sql & " AND (Domande.sort > " & ultimosort
    sql = sql & " OR (Domande.sort = " & ultimosort & " AND Domande.id > " & ultimoid & "))"
    sql = sql & " AND ((select scelte.id from scelte where scelte.idserie=" & Fserie & " AND scelte.iddomanda = Domande.id)Is NOT Null )"
    sql = sql & " ORDER BY Domande.sort, Domande.id"
    set rsDomande = conn.Execute(sql)

    if not rsDomande.EOF then

    progressivo = progressivo + 1

    set rs=conn.execute("select Nomefile,Didascalia,id,sort,simbolo from scelte where idserie=" & Fserie & " AND iddomanda =" & rsDomande("id") & " ORDER BY sort,id")
    rs.movefirst


    In pratica devi inserire nella where una condizione che ti permetta di controllare l'esistenza delle risposte per le domande che sta estraendo così se la condizione risulta negativa non ti effettua la query. Il principio è questo, bisogna verificare che le istruzioni SQL siano corrette. Prova e fammi sapere.
    www.beppegrillo.it
    Il blog di Beppe!!

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.