shambler1
09-12-2006, 20:59
Allora ho trovato un ostacolo che mi impedisce di finire e soprattutto mina seriamente il mio equilibrio mentale:
ho strutturato alcuni campi del db con tabelle di questo genere per ospitare i campi checkbox:
fonti, soggetti .
una tabella fonti è fatta cosi:
http://img205.imageshack.us/img205/439/tab1ht3.jpg (http://imageshack.us)
E quella dei soggetti cosi
http://img208.imageshack.us/img208/1803/tab2pb2.jpg (http://imageshack.us)
poi c'è una terza tabella con altri dati: id, nome, età, etc che recupero da select, textarea, input radio, senza problemi.
nella fase di inserimento , la tabella inserisce l'id del modulo nella tabella soggetti.
Nella fase di modifica il codice fa un inner joint, scorre la tabella fonti , se l'id coincide, allora la casella checkbox appare spuntata.
Questo è il codice di joint
sql="SELECT tabella.id, tabella.nome, tabella.tempo,tabella.eta , "
sql=sql&" tabella.datapub, "
sql=sql&" tabellasoggetti.fonti, tabellafonti.fonti "
sql=sql&" FROM (tabella INNER JOIN tabellasoggetti ON "
sql=sql&" tabella.id = tabellasoggetti.id) INNER JOIN tabellafonti ON "
sql=sql&" tabellasoggetti.fonti = tabellafonti.id "
sql=sql&" where tabella.id='"&id&"';"
poi c'è il codice per la ricerca della maledetta casella di testo checcata
<% set rs1 = Server.CreateObject("ADODB.RecordSet")
sql="select* from tabellafonti "
rs1.open sql, conn_base, adlockoptimistic, adcmdtable
if not rs1.eof then
rs1.movefirst
do while not rs1.eof
trovato=""
rs.movefirst%>
<tr><td><%=rs1("fonti")%></td><td>
<% do while not rs.eof %>
<%if trim(rs1("id"))=trim(rs("fonti")) then
trovato="checked"
end if%>
<%rs.movenext
loop%>
<input type=checkbox name="fonti" value="<%=rs1("id")%>;<%=rs1("fonti")%>" <%=trovato%>>
<%
rs1.movenext
loop
end if
rs1.close
set rs1=nothing
Ebbene : sei tabelle , con codice uguale (cambiano solo i nomi dei campi e qualche select o textarea messa diversamente) tre funzionano e tre non funzionano, nel senso che in tre il valore lo trova: scorre tabellafonti, quando c'è il valore corrispondente , spunta la casellina.
Nelle altre tre e non riesco a capire perchè cazzarola,non funziona:
le caselline rimangono vuote, eppure il dato c'è! Le tabelle vengono tutte scritte e aggiorarnate correttamente!!
ho strutturato alcuni campi del db con tabelle di questo genere per ospitare i campi checkbox:
fonti, soggetti .
una tabella fonti è fatta cosi:
http://img205.imageshack.us/img205/439/tab1ht3.jpg (http://imageshack.us)
E quella dei soggetti cosi
http://img208.imageshack.us/img208/1803/tab2pb2.jpg (http://imageshack.us)
poi c'è una terza tabella con altri dati: id, nome, età, etc che recupero da select, textarea, input radio, senza problemi.
nella fase di inserimento , la tabella inserisce l'id del modulo nella tabella soggetti.
Nella fase di modifica il codice fa un inner joint, scorre la tabella fonti , se l'id coincide, allora la casella checkbox appare spuntata.
Questo è il codice di joint
sql="SELECT tabella.id, tabella.nome, tabella.tempo,tabella.eta , "
sql=sql&" tabella.datapub, "
sql=sql&" tabellasoggetti.fonti, tabellafonti.fonti "
sql=sql&" FROM (tabella INNER JOIN tabellasoggetti ON "
sql=sql&" tabella.id = tabellasoggetti.id) INNER JOIN tabellafonti ON "
sql=sql&" tabellasoggetti.fonti = tabellafonti.id "
sql=sql&" where tabella.id='"&id&"';"
poi c'è il codice per la ricerca della maledetta casella di testo checcata
<% set rs1 = Server.CreateObject("ADODB.RecordSet")
sql="select* from tabellafonti "
rs1.open sql, conn_base, adlockoptimistic, adcmdtable
if not rs1.eof then
rs1.movefirst
do while not rs1.eof
trovato=""
rs.movefirst%>
<tr><td><%=rs1("fonti")%></td><td>
<% do while not rs.eof %>
<%if trim(rs1("id"))=trim(rs("fonti")) then
trovato="checked"
end if%>
<%rs.movenext
loop%>
<input type=checkbox name="fonti" value="<%=rs1("id")%>;<%=rs1("fonti")%>" <%=trovato%>>
<%
rs1.movenext
loop
end if
rs1.close
set rs1=nothing
Ebbene : sei tabelle , con codice uguale (cambiano solo i nomi dei campi e qualche select o textarea messa diversamente) tre funzionano e tre non funzionano, nel senso che in tre il valore lo trova: scorre tabellafonti, quando c'è il valore corrispondente , spunta la casellina.
Nelle altre tre e non riesco a capire perchè cazzarola,non funziona:
le caselline rimangono vuote, eppure il dato c'è! Le tabelle vengono tutte scritte e aggiorarnate correttamente!!