View Full Version : (asp) recupero dati dalle checkbox e select
shambler1
17-11-2006, 20:14
Salve a tutti
Vorrei recuperare dei dati dal db nelle checkbox facendo in modo che risultanino gia checcate, per poi poterle eventualmente cambiare.
Se non le cambio, la pagina deve scrivere nuovamente il valore gia selezionato in precendenza.
So come fare il passaggio nelle text box
Ma mi sono inchiodato per quanto riguarda le check box e le select
mi hanno suggerito questo codice ma non funziona, mi da errore di sintassi.
<% rs.MoveFirst
If not rs.EOF then
while not rs.EOF
if rs('Sesso')='maschio' then
Response.Write "<td width='30'>maschio</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='maschio' checked></td></tr><tr>
<td width='30'>femmina</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='Femmina'></td></tr><tr>"
else
Response.Write "<td width='30'>maschio</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='maschio'></td></tr><tr>
<td width='30'>femmina</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='Femmina' 'checked'></td></tr><tr>"
End if
rs.MoveNext
Wend
End if %>
con le select non ho la più pallida idea di come poter fare.
La select registra una provincia, poniamo Genova.
Allora , io recupero i dati del form e vorrei trovarmi la select con "genova " selezionata e poi eventualmente cambiarla.
Aiutatemi che sto messo molto male coi tempi
anonimizzato
18-11-2006, 14:29
Ciao, allora ASP non lo conosco ma di sicuro il metodo è uguale che in PHP.
Guarda ti posto un porzione di codice PHP per un CMS che stò sviluppando spero possa esserti utile per capire la logica di come tenere selezionata una voce in una SELECT
<div class="campo <?php echo $class_corso; ?>">
<label for="f_corso">Corso *</label>
<select id="f_corso" name="corso">
<option value="0">-Seleziona un Corso-</option>
<?php
$sql = "SELECT * FROM corsi ORDER BY corso_nome asc";
$result = mysql_query($sql);
if($row = mysql_fetch_array($result)){
do{
$selected = "";
if($row["corsoID"] == $_REQUEST["corso"]){
$selected = 'selected="selected"';
}
?>
<option value="<?php echo $row['corsoID']; ?>" <?php echo $selected; ?>><?php echo $row['corso_nome']; ?></option>
<?php
}while($row = mysql_fetch_array($result));
}
?>
</select>
</div>
La parte che ho evidenziato ti mostra come nel ciclo DO WHILE mettere l'attributo SELECTED alla OPTION.
quando recupero i dati dal DB farò in modo che:
$_REQUEST["corso"] = $row["corsoID"];
la variabile $_REQUEST["corso"] contenga l'informazione sull'ID del corso indicato a DB.
perchè lo metto in una variabile globale di $_REQUEST[]?
Lo faccio perchè se nell'interfaccia utente l'utente seleziona una OPTION diversa e poi fa un SUBMIT la stessa mi tiene in memoria l'input dell'utente e non quello che avevo prima recuperato dal DB.
Spero di essere stato chiaro e che ti possa tornare utile.
Ciao
shambler1
19-11-2006, 00:35
Grazie, ora me la studio :)
Salve a tutti
Vorrei recuperare dei dati dal db nelle checkbox facendo in modo che risultanino gia checcate, per poi poterle eventualmente cambiare.
Se non le cambio, la pagina deve scrivere nuovamente il valore gia selezionato in precendenza.
So come fare il passaggio nelle text box
Ma mi sono inchiodato per quanto riguarda le check box e le select
mi hanno suggerito questo codice ma non funziona, mi da errore di sintassi.
<% rs.MoveFirst
If not rs.EOF then
while not rs.EOF
if rs('Sesso')='maschio' then
Response.Write "<td width='30'>maschio</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='maschio' checked></td></tr><tr>
<td width='30'>femmina</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='Femmina'></td></tr><tr>"
else
Response.Write "<td width='30'>maschio</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='maschio'></td></tr><tr>
<td width='30'>femmina</td><td width='30' colspan='2' ><input type='radio' name='Sesso' value='Femmina' 'checked'></td></tr><tr>"
End if
rs.MoveNext
Wend
End if %>
con le select non ho la più pallida idea di come poter fare.
La select registra una provincia, poniamo Genova.
Allora , io recupero i dati del form e vorrei trovarmi la select con "genova " selezionata e poi eventualmente cambiarla.
Aiutatemi che sto messo molto male coi tempi
Il codice che hai scritto mi sembra corretto. Tranne che in VBSCRIPT ci vogliono i DOPPI apici per le stringhe. Quindi non rs('sesso')='maschio', MA rs("sesso")="maschio"
Vedi se è solo quello il problema, ma a me pare di si... ;)
Ciao.
shambler1
20-11-2006, 14:01
Il codice funziona ora, solo che ha un effetto collaterale, diciamo , cosi , che non riesco a spiegarmi. Forse quel codice blocca l'rs ?
Ma in che modo?
Succede che , se metto in sequenza diversi codici di ricerca dei pulsanti di opzione ( due per il sesso, campo "sesso", tre per lo stato civile : campo "stato civile") , questi vengono correttamente richiamati.
Invece la ricerca per gli altri input non funziona più.
Questo è il codice:
set rs = Server.CreateObject("ADODB.RecordSet")
rs.open sql,conn_base
rs.MoveFirst
If not rs.EOF then
while not rs.EOF
if trim(rs("statocivile"))="celibe" then
Response.Write "<td width='30'>celibe</td><td width='30' ><input type='radio' name='statocivile' value='celibe' checked></td></tr><tr>"
Response.Write "<td width='30'>nubilee</td><td width='30' ><input type='radio' name='statocivile' value='nubile' ></td></tr><tr>"
Response.Write "<td width='30'>coniugato</td><td width='30' ><input type='radio' name='statocivile' value='coniugato'></td></tr><tr>"
elseif trim(rs("statocivile"))="nubile" then
Response.Write "<td width='30'>'celibe</td><td width='30' ' ><input type='radio' name='statocivile' value='celibe'></td></tr><tr>"
Response.Write "<td width='30'>nubile</td><td width='30' ><input type='radio' name='statocivile' value='nubile' checked></td></tr><tr>"
Response.Write "<td width='30'>coniugato</td><td width='30' ><input type='radio' name='statocivile' value='coniugato' ></td></tr><tr>"
else
Response.Write "<td width='30'>celibe</td><td width='30' ' ><input type='radio' name='statocivile' value='celibe'></td></tr><tr>"
Response.Write "<td width='30'>nubile</td><td width='30' ><input type='radio' name='statocivile' value='nubile' ></td></tr><tr>"
Response.Write "<td width='30'>coniugato</td><td width='30' ><input type='radio' name='statocivile' value='coniugato' checked></td></tr><tr>"
End if
rs.MoveNext
Wend
End if %>
<tr><td ><h5>figli</h5></td>
<td colspan="2" ><input type=text name="figli" value="<%=trim(rs("figli"))%>" size="50"></td></tr>
Sopra il codice dello stato civile c'è un codice uguale ed entrambi funzionano.
Sotto quel codice, l'input type= text e il select non funzionano più e restituiscono quell'errore.
Il codice di ricerca della casella di testo,che precede il codice invece funziona benissimo.
Sotto alle check box, il cui codice funziona benone, si vede invece una casella di testo minuscola con la scritta : "<font face=" ma il codice è questo:
<td colspan="2" ><input type=text name="figli" value="<%=trim(rs("figli"))%>" size="50"></td></tr>
http://img65.imageshack.us/img65/7479/figlicn8.jpg
all'interno della casella di testo, invece del valore, si legge : font face , un tag che non è scritto da nessuna parte nella tabella.
Quell'errore ti esce perchè tu leggi tutta la tabella fino al'EOF e poi cerchi di leggere il campo figli oltre la fine dei record! E' per questo che ti da errore! Il campo figli è di tutti i record, vero? Se è così, quel pezzo di codice devi metterlo DENTRO al while!
shambler1
21-11-2006, 16:58
Vuoi ridere? Si bloccava tutto perchè il recordset era aperto sopra...
Grazie comunque, da solo nn ci sarei arrivato.
Codice funzionante.
if trim(rs("sesso"))="maschio" then
Response.Write "<td width='30'>maschio</td><td width='30' ><input type='radio' name='Sesso' value='maschio' checked></td></tr><tr>"
Response.Write "<td width='30'>femmina</td><td width='30' ><input type='radio' name='Sesso' value='Femmina'></td></tr><tr>"
else
Response.Write "<td width='30'>maschio</td><td width='30' ' ><input type='radio' name='Sesso' value='maschio'></td></tr><tr>"
Response.Write "<td width='30'>femmina</td><td width='30' ><input type='radio' name='Sesso' value='Femmina' checked></td></tr><tr>"
End if
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.