Inserimento multiplo

giro

Nuovo Utente
24 Mar 2015
11
0
1
Ciao a tutti

sto facendo il sito per la mia squadra di calcio e sono incappato nel seguente errore

Request object error 'ASP 0105 : 80004005'

Index out of range

/public/db_team.asp, line 17

An array index is out of range

nella pagina db.team.asp dove recupero i valori inviati dalla form è la seguente
PHP:
For i = 0 To  request.form.count -1 

 

ReDim Preserve arrayidgiocatore(i) 
ReDim Preserve arrayidcalendario(i) 
ReDim Preserve arrayevento(i)
ReDim Preserve arraypresenze(i)


[B]arrayidgiocatore(i) = Request.Form("idgiocatore")(i)[/B]
arrayevento(i) = Request.Form("evento")(i)
arraypresenze(i) = Request.Form("presenze")(i)
arrayidcalendario(i) = Request.Form("idcalendario")(i)


Set Connn = Server.createobject("ADODB.Connection")
Connn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("/mdb-database/ov.mdb")
Connn.Open

strSQL = "INSERT INTO  presenze (idgiocatore,idcalendario,presenze,evento) VALUES ("&arrayidgiocatore(i)&","&arrayidcalendario(i)&","&arraypresenze(i)&",'"&arrayevento(i)&"')"

Connn.Execute(strSQL)
next


Connn.close
response.Redirect "prez.asp"
la riga 19 è quella in grassetto

ringrazio anticipatamente per l'aiuto
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
549
13
18
Italy
www.riciclarte.info
Prova così:
Codice:
Set Connn = Server.createobject("ADODB.Connection")
	Connn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("/mdb-database/ov.mdb")
	Connn.Open

	strSQL = "INSERT INTO presenze " &_
		     "(idgiocatore, idcalendario, presenze, evento) " &_
			 "VALUES " &_
			 "('"&Request.Form("idgiocatore")&"', '"&Request.Form("idcalendario")&"', '"&Request.Form("presenze")&"', '"&Request.Form("evento")&"')"

	Connn.Execute(strSQL)
	next

Connn.close
Se non funziona mandami una copia dei file che li testo: [email protected]
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
549
13
18
Italy
www.riciclarte.info
Buongiorno,
ho testato i file che mi hai inviato ed ho riscontrato il tuo stesso errore.

Stampando a video il valore della variabile:
Codice:
arrayidgiocatore(i) = Request.Form("idgiocatore")(i)
ho riscontrato quanto segue:
Codice:
3, 26, 25, 4, 5, 9, 10, 6, 11, 12, 13, 14, 16, 15, 17, 8, 7, 18, 19, 20, 21, 22, 23, 24

Errore di run-time di Microsoft VBScript error '800a000d'

Tipo non corrispondente: '[string: "3, 26, 25, 4, 5, 9, "]'

/user/db_team.asp, riga 34
Come vedi è impossibile inserire quella stringa in un campo numerico intero, anche perchè per il sistema sarebbe una informazione incomprensibile.

Il problema è nella pagina team.asp, il codice è strutturato male, inserisci nel ciclo troppe informazioni, ecco in visualizzazione HTML il codice:
Codice:
<form action="db_team.asp" method="post">    
0/asdfasdf/ddfasdf 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="3"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
0/Odestri/Manuel 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="26"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
0/Monaco/Cristiano 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="25"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
1/Francesco/Bruna 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="4"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
3/Carlo/Gol� 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="5"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
5/Monaco/Mattia 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="9"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
6/Monaco/Olivier 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="10"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
7/Fulvio/Melchio 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="6"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
7/Monaco/Roberto 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="11"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
8/Allasia/Giuseppe 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="12"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
9/Brunetto/Simone 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="13"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
10/Monaco/Gianluca 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="14"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
11/Landra/Marco 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="16"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
12/Girodengo/Danilo 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="15"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
13/Berardengo/Andrea 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="17"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
14/Gavotto/Matteo 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="8"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
15/Esposito/Vincenzo 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="7"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
16/Ghibaudo/Paolo 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="18"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
17/Monaco/Vincent 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="19"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
18/Monaco/Laurent 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="20"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
19/Girodengo/Paolo 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="21"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
21/Brunetto/Marco 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="22"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
23/Ghibaudo/Fabio 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="23"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          
24/Monaco/Alessio 
<input type="checkbox" name="presenze" value="1"> 
<input type="hidden" name="idgiocatore" value="24"  />
<input type="hidden" name="idcalendario" value=""  />
<input type="hidden" name="evento" value="" />
<br />          


<input type="submit" value="Invia" class="button"  />
</form>
Proverei ad inserire nel ciclo solo il seguente rigo:
Codice:
<input type="checkbox" name="idgiocatore" value="<%=rs("idgiocatore")%>"  />
Il resto appena sotto il tag form.

Buon lavoro.
 

giro

Nuovo Utente
24 Mar 2015
11
0
1
Mi spiego meglio
allora nella pagina team.asp con un ciclo faccio visualizzare tutti i giocatori in rosa
PHP:
 <%=rs("nmaglia")%>/<%=rs("cognome")%>/<%=rs("nome")%> 
<input type="checkbox" name="presenze" value="1"> (qui  se  fleggo  il campo il giocatore  è presente alla partita e nel campo presenze del db  vorrei che scrivesse 1)
<input type="hidden" name="idgiocatore" value="<%=rs("idgiocatore")%>"  /> ( l'id relativo al giocatore  )
<input type="hidden" name="idcalendario" value="<%=idcalendario%>"  /> (idcalendario  risulta essere  l'id  relativo all'avvenimento ovvero partita contro real - juve ett  o allenamento o amichevole)
<input type="hidden" name="evento" value="<%=evento%>" /> (il tipo di evento  ovvero  allenamento  campionato amichevole  torneo
<br />
Io vorrei inserire nel mio dib presense con i seguneti campi i giocatore presenti alle partite
PHP:
idgiocatore  idcalendario   presenze  evento
5                      2               1           allenamento
7                       2               1           allenamento
8                       2               1           allenamento 
15                     2               1           allenamento
25                     2               1           allenamento
35                     2               1           allenamento
In questo modo vorrei poter contare le presenze dei giocatori (implementandolo con i goal sengati e subiti ) durante tutta la stagione.......
 

giro

Nuovo Utente
24 Mar 2015
11
0
1
ok ho seguto il tuo consiglio ma il problema non cambia.....

probabilmento sbaglio il modo di recuperare i dati nella pagina db.team.asp prima di inserirli nel db... al momento del ciclo for per poterli caricare in unarray e successimanete proceder con l'insert.
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
549
13
18
Italy
www.riciclarte.info
pagina team.asp:

Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<%
avversari=request("avversari")
evento= request("evento")
data=request("data")
orario=request("orario")
luogo=request("luogo")
idcalendario= request("idcalendario")
%>
       Partita di <%=evento%> del <%=data%> alle ore: <%=orario%><br />
       Giocata a: <%=luogo%> - <%=avversari%>
       <br /><br />
       
<form action="db_team.asp" method="post">
<input type="hidden" name="idcalendario" value="<%=idcalendario%>"  />
<input type="hidden" name="evento" value="<%=evento%>" />
<input type="hidden"  name="presenze" value="1" />
<%

'aperta connnessione al database 
Set Conn = Server.createobject("ADODB.Connection")
Conn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("ov.mdb")
Conn.Open

Set Rs = Server.CreateObject("ADODB.Recordset")
SQL	="SELECT * FROM atleti order by nmaglia"

RS.Open SQL,Conn, 3, 3
	
    While not RS.EOF

%>

<%=rs("nmaglia")%>/<%=rs("cognome")%>/<%=rs("nome")%> 
<input type="checkbox" name="idgiocatore" value="<%=rs("idgiocatore")%>"  />
<br />          
<%
RS.MoveNext
Wend
%>

<input type="submit" value="Invia" class="button"  />
</form>

<%
RS.Close
Set RS = nothing
Conn.Close
Set Conn = nothing
%>

</body>
</html>
Pagina db_team.asp:
Codice:
<%

' recupero i dati dai form
Dim mode, mode_a, i
	mode = Request("idgiocatore")

	mode_a = split(mode,",")

	For i=LBound(mode_a) to UBound(mode_a)

' inserisco nel ciclo i dati nel DB
		Set Connn = Server.createobject("ADODB.Connection")
			Connn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("ov.mdb")
			Connn.Open
			strSQL = "INSERT INTO presenze " &_
					 "(idgiocatore, idcalendario, presenze, evento) " &_
					 "VALUES " &_
					 "('"&mode_a(i)&"', '"&Request.Form("idcalendario")&"', '"&Request.Form("presenze")&"', '"&Request.Form("evento")&"')"
			Connn.Execute(strSQL)
			Connn.close
	
	Next

' redirect
response.Redirect "prez.asp"

%>
Correggi solo la connessione al DB e poi dovrebbe funzionare.
Buona giornata.

Paolo
 

giro

Nuovo Utente
24 Mar 2015
11
0
1
Grazie ancora funziona alla grande
Una domanda dovessi fare l ' Update mULTIPLO quanti record posso aggiornare simultaneamente?
Grazie ancora per il tuo aiuto