Dunque, ho un problema che non capisco come risolvere.
In sostanza ho un form "dinamico" che viene creato leggendo una tabella del DB e che si occupa di modificare la stessa.
Parto subito dal codice:
Quindi come vedete il form è una tabella così fatta:codice:While recordset.EOF = False %> <tr> <td><%=recordset("Nome")%></td> <td><%=recordset("Email")%></td> <td> <input type="checkbox" name="<%=recordset("Id")%>" value="yes" <%if recordset("Riceve")="yes" then%>checked<%end if%>> </td> </tr> <% recordset.MoveNext Wend End If %> </table> <input type="submit" name="provola" value="Fatto"> </form>
Nome e cognome che sono campi della tabella e un bottone, di nome "Id" (ovvero un numero che corrisponde all'Id del record in questione) che è checked se il campo "Riceve" del record è "yes".
Ovviamente l'applicazione si occupa di mettere a "no" i campi che il form restituirà non checckati e di passare a "yes" quelli checked.
Per fare questo chiama questa pagina:
Quindi a seconda del valore di ogni bottone, cambia il campo "Riceve" del record relativo (facendo un confronto tra il nome del bottone e l'Id del record).codice:If recordset.EOF = True Then Response.Redirect ... Else While recordset.EOF = False Id_record = recordset("Id") If Request.Form(Id_record) = "yes" then SQL = "" SQL = SQL & "UPDATE " SQL = SQL & scelta SQL = SQL & " SET Riceve='yes' " SQL = SQL & "WHERE " SQL = SQL & "Id = " & Id_record prova = prova & " Id " & Id_record & "uguale " & Request.Form(Id_record) else If Request.Form(Id_record) = "" then SQL = "" SQL = SQL & "UPDATE " SQL = SQL & scelta SQL = SQL & " SET Riceve='no' " SQL = SQL & "WHERE " SQL = SQL & "Id = " & Id_record prova = prova & " Id " & Id_record & " uguale a " & Request.Form(Id_record) End if End if conn.Execute(SQL) recordset.MoveNext Wend End If recordset.Close Set recordset = Nothing conn.Close Set conn = Nothing
La stringa prova l'ho inserita per cercare di capire cosa sta succedendo.
Ora il problema:
Sto facendo una prova con una semplice tabella che contiene solo tre righe.
Se spunto tutti e tre i bottoni, prova ha questo valore:
Id 1 uguale yes Id 2 uguale yes Id 3 uguale yes
Ed è ok.
Se spunto solo i primi due:
Id 1 uguale yes Id 2 uguale yes
Niente info sul terzo bottone.
In più il valore "Riceve" con Id "3" viene cmq messo a "yes", quando dovrebbe essere a "no"
Se spunto solo il primo bottone:
crasha.
Il valore dell'indice di una matrice non è compreso nell'intervallo consentito.
A questa riga
If Request.Form(Id_record) = "yes" then
Ho provato ad eliminare questo controllo nell'else:
If Request.Form(Id_record) = "" then
Pensando che fosse superfluo, in quanto cmq è giusto che entri nell'else se l'if (bottone = yes) da falso.
Non solo i problemi restano, ma arrivano anche risultati più strani:
Se spunto il secondo e il terzo bottone e lascio unchecked il primo, prova diventa:
Id 1 uguale yes Id 2 uguale yes Id 3 uguale a Fatto
(Fatto è il valore del bottone di submit o_O )
e vengono messi a yes i campi "Riceve" con Id 1 e 2, mentre viene messo a no il campo con Id 3.
Stessa cosa se spunto primo e terzo bottone o secondo e terzo.
Insomma, se solo un bottone non è checked succede quello.
Se invece due bottoni non sono checked, crasha.
Se riuscite a darmi una mano a capire che cosa ho combinato vi sarò infinitamente grato!

Rispondi quotando
