Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Web Design Valdeci

[Resolvido] Sistema Acadêmico

Recommended Posts

Boa Tarde Pessoal,

 

Estou desenvolvendo um sistema acadêmico, tem a parte de frequencia do aluno onde exibo todos os alunos matriculados na matéria um debaixo do outro com um campo radiobutton em presente e outro em ausente em cada um. Dúvidas:

 

Ex:

 

Data:

08/12/2008

 

Aluno Presente Ausente

 

Diego ·

Ana Carolina .

Pedro .

 

Imagine que acima é uma tabela, usarei o sequinte codigo para inserir:

 

IF opc = "inserir" THEN
  data= request.form("data")
  aluno= request.form("aluno")
  presente= request.form("presente")
  ausente= request.form("ausente")
  Set cs_inserir = Server.CreateObject("ADODB.Recordset")
  cs_inserir.open "INSERT INTO Frequencia (IdAluno,data,presente,ausente) VALUES ("&aluno&",'"&data&"','"&presente&"','"&ausente&"')", Conexao
  response.redirect("presenca.asp")
END IF

Neste script acima ele salva de um em um, gostaria de colocar um form pedindo pra salvar todos de uma vez ou o próprio código pegar de um em um com a penas um comando e salvar na tabela. Como farei para salvar todos os alunos em uma tabela mas cada um em um capo tudo de uma vez? terei que usar loop?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse caso específico, pensando numa solução rápida, eu faria assim:

Primeiro: Montar um form dinamicamente onde teria os dois radiobuttons, um com o nome de rbPresencas e outro com o nome de rbFaltas e em ambos eu colocaria o value o código do aluno; e ao lado os montar os dados do aluno...

 

Segundo: Ao dar o post, pegar no request.form os values separados dos buttons de presenças e faltas.

 

Ex.:

arrPresentes = split(request.form("rbPresencas"),",") 'vai criar um array dos presentes quebrando por vírgulas que o form envia como separador para o mesmo nome de campo.
For i=Lbound(arrPresentes) to Ubound(arrPresentes) 'varrer o array dos presentes e inserir no banco
  
  data= request.form("data")
  Set cs_inserir = Server.CreateObject("ADODB.Recordset")
  cs_inserir.open "INSERT INTO Frequencia (IdAluno,data,presente) VALUES ("&arrPresentes(i)&",'"&data&"','"&presente&"')", Conexao

Next
arrAusentes = split(request.form("rbFaltas"),",") 'vai criar um array dos ausentes quebrando por vírgulas que o form envia como separador para o mesmo nome de campo.
For i=Lbound(arrAusentes) to Ubound(arrAusentes) 'varrer o array dos ausentes e inserir no banco
  
  data= request.form("data")
  Set cs_inserir = Server.CreateObject("ADODB.Recordset")
  cs_inserir.open "INSERT INTO Frequencia (IdAluno,data, ausente) VALUES ("&arrPresentes(i)&",'"&data&"','"& ausente&"')", Conexao

Next

No primeiro loop você vai inserir os presentes e no segundo os ausentes.

 

Novamente repito que fiz aqui sem otimizar conexão e nem o uso de recordset, ficando a seu critério fazê-lo.

 

Espero que ajude.

 

Márcio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só tome cuidado com o scriptTimeOut, talvez tenha que aumentá-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, veja a imagem abaixo:

 

Imagem Postada

 

Eu listo todos os alunos na tabela um aparece abaixo do outro. Eu quero que o sistema insira todos os alunos cada um em um campo de tabela. Vamos que ele listou um embaixo do outro cada um com um id e uma resposta se está presente ou ausente, eu quero que o codigo insira tudo de uma vez. No Meu banco ficaria assim:

 

IdAluno | Presente | Ausente | Data

1 sim 08/12/2008

2 sim 08/12/2008

3 sim 08/12/2008

 

Quero que cada aluno seja inserido em um capo da tabela.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você deve recuperar os valores selecionados do controle que tem varias possibilidades de selecao, use o SPlit, e faça um for para inserir no bd, conforme, nosso amigo disse acima, tb você pode usar um checkbox.

 

presentes = request.Form("presente") 

arrResult = Split(presentes, ",") 

set cat = Server.CreateObject("ADODB.Recordset")
For iCounter = 0 to Ubound(arrResult)
conexao.execute "insert into tabela (ID,StrCategoria) values ("&ID&", '"&arrResult(iCounter)&"')"
Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele agora passa como se estivesse inserindo mas quando vou olhar no banco nao aparece nenhum registro:

 

Olha o que eu fiz:

 

IF opc = "inserir" THEN
presentes = request.Form("presente") 
data = request.form("data")
aluno = request.form("aluno")
arrResult = Split(presente, ",") 

Set csInserir = Server.CreateObject("ADODB.Recordset")
For iCounter = 0 to Ubound(arrResult)
csInserir.open "insert into Frequencia (IdAluno,presente,data) values ("&aluno&", "&arrResult(iCounter)&",'"&data&"')", Conexao
Next

faltas = request.Form("falta") 
data = request.form("data")
aluno = request.form("aluno")
arrResult = Split(faltas, ",") 

Set csInserir = Server.CreateObject("ADODB.Recordset")
For iCounter = 0 to Ubound(arrResult)
csInserir.open "insert into Frequencia (IdAluno,ausente,data) values ("&aluno&", "&arrResult(iCounter)&",'"&data&"')", Conexao
Next
response.redirect("Frequencia.asp")
END IF

e o form:

 

<form action="Frequencia.asp?opc=<%if opc = "editar" then%>atualizar<%else%>inserir<%end if%>" method="post" name="form1" id="form1">
 <table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr>
<td colspan="4" class="txt_cinza_11"><div align="left">Data  
<input name="data" class="txt" id="f_date_c1" value="<% if opc = "editar"then %><%=var_data%><% end if %>" size="25" maxlength="10" readonly="1" />
<img src="../Assets/img/img.gif" name="f_trigger_c1" width="20" height="14" id="f_trigger_c1" style="cursor: pointer; border: 1px solid red;" title="Selecione a Data"
	  onmouseover="this.style.background='red';" onMouseOut="this.style.background=''" />
<script type="text/javascript">
Calendar.setup({
inputField	 :	"f_date_c1",	 // id of the input field
ifFormat	   :	"%Y/%m/%d",	// format of the input field
button		 :	"f_trigger_c1",  // trigger for the calendar (button ID)
align		  :	"Tl",		   // alignment (defaults to "Bl")
singleClick	:	true
});
</script>
			  </div>
</td>
</tr>
			<tr>
			  <td width="72%" bgcolor="#CCCCCC" class="txt_cinza_11_bold"><div align="left">Nome do Aluno   </div></td>
			  <td width="15%" bgcolor="#CCCCCC" class="txt_cinza_11_bold"><div align="center"><span class="txt_cinza_11">Presente  </span> </div></td>
			  <td width="13%" colspan="2" bgcolor="#CCCCCC" class="txt_cinza_11_bold"><div align="center"><span class="txt_cinza_11">Ausente  </span> </div></td>
			  </tr>
			<%While (not cs_listar.EOF)
						idAluno = cs_listar.Fields.Item("IdAluno").Value
						Set cs_Alunos = Server.CreateObject("ADODB.RecordSet")
						cs_Alunos.open "SELECT * FROM Alunos where NrMatricula = "&idAluno&" ORDER BY NOME ASC", Conexao
						While NOT cs_Alunos.EoF %><tr>
<td class="txt_cinza_11"><% = cs_Alunos("nome") %>
<input name="aluno" type="hidden" id="aluno" value="<%=cs_Alunos("NrMatricula")%>"></td>

<td><div align="center"><input name="presente" type="checkbox"  value="sim">
</div></td>
<td colspan="2"><div align="center"><input name="falta" type="checkbox" id="falta" value="nao">
</div></td>
			  </tr><% 
						cs_Alunos.MoveNext
						Wend
						cs_listar.MoveNext()
						Wend %>
			<tr>
			  <td class="txt_cinza_11"> </td>
			  <td> </td>
			  <td colspan="2"> </td>
			  </tr>
			<% if opc <> "editar" then %>
			<tr>
			  <td height="32" colspan="4" valign="top"><div align="left">
				  <input name="Submit22" type="submit" class="botao" value="inserir" />
							</div></td>
			  </tr><% end if %>
		  </table>
		</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei de td mais ta osso. Um cara me falou que eu teria que salvar todos os dados de uma vez so no vetor e vo salvando campo por campo andando pelo vetor, mas eu nem sei como se fazer isto, alguem poderia me ajudar?

 

Estou usando o seguinte insert ele passa mas não insere nada no banco.

 

opc = request.querystring("opc")
IF opc = "inserir" THEN
presentes = request.Form("presente") 
data = request.form("data")
aluno = request.form("aluno")
arrResult = Split(presente, ",") 

Set csInserir = Server.CreateObject("ADODB.Recordset")
For iCounter = 0 to Ubound(arrResult)
csInserir.open "INSERT INTO Frequencia (IdAluno,presente,data) values ("&aluno&",'"&arrResult(iCounter)&"','"&data&"')", Conexao
Next
response.redirect("frequencia4.asp")
END IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peguei um script que estava em outro artigo sobre for each, ele passou mas somente cadastra um registro. Preciso que ele faça um loop e cadastre o proximo registro listado e que foi enviado atraves do form.

 

 

Insert:

opc = request.querystring("opc")
i = 0
IF opc = "inserir" THEN
For i = 1 To Request.Form("aluno").Count
Response.write request.form("presente")(i)&"<BR>" & request.form("data")(i)&"<BR>"& request.form("aluno")(i)&"<BR>"
SQL = "INSERT INTO Frequencia (IdAluno,presente,data) Values ("&request.form("aluno")(i)&",'"&request.form("presente")(i)&"','"&request.form("data")(i)&"')"
Conexao.Execute (SQL)
i = i + 1
Next
response.redirect("frequencia4.asp")
END IF

Form:

 

<form action="frequencia5.asp?opc=inserir" method="post" name="form1" id="form1">
 <table width="100%" border="0" cellspacing="5" cellpadding="0">
<tr>
<td colspan="4" class="txt_cinza_11"><div align="left">Data  
<input name="data" class="txt" id="f_date_c1" value="<% if opc = "editar"then %><%=var_data%><% end if %>" size="25" maxlength="10" readonly="1" />
<img src="../Assets/img/img.gif" name="f_trigger_c1" width="20" height="14" id="f_trigger_c1" style="cursor: pointer; border: 1px solid red;" title="Selecione a Data"
	  onmouseover="this.style.background='red';" onMouseOut="this.style.background=''" />
<script type="text/javascript">
Calendar.setup({
inputField	 :	"f_date_c1",	 // id of the input field
ifFormat	   :	"%Y/%m/%d",	// format of the input field
button		 :	"f_trigger_c1",  // trigger for the calendar (button ID)
align		  :	"Tl",		   // alignment (defaults to "Bl")
singleClick	:	true
});
</script>
			  </div></td>
</tr>
			<tr>
			  <td width="72%" bgcolor="#CCCCCC" class="txt_cinza_11_bold"><div align="left">Nome do Aluno   </div></td>
			  <td width="15%" bgcolor="#CCCCCC" class="txt_cinza_11_bold"><div align="center"><span class="txt_cinza_11">Presente  </span> </div></td>
			  <td width="13%" colspan="2" bgcolor="#CCCCCC" class="txt_cinza_11_bold"><div align="center"><span class="txt_cinza_11">Ausente  </span> </div></td>
			  </tr>
			<%i = 0
			While (not cs_listar.EOF)
						idAluno = cs_listar.Fields.Item("IdAluno").Value
						Set cs_Alunos = Server.CreateObject("ADODB.RecordSet")
						cs_Alunos.open "SELECT * FROM Alunos where NrMatricula = "&idAluno&" ORDER BY NOME ASC", Conexao
						While NOT cs_Alunos.EoF %><tr>
<td class="txt_cinza_11"><% = cs_Alunos("nome") %>
<input name="aluno" type="hidden" id="aluno" value="<%=cs_Alunos("NrMatricula")%>"></td>

<td><div align="center">
  <label></label>
  <label>
  <input name="presenca<%=i%>" type="radio" value="sim">
  </label>
</div></td>
<td colspan="2"><div align="center">
  <label>
  <input name="presenca<%=i%>" type="radio" value="nao">
  </label>
</div></td>
			  </tr><% 
						cs_Alunos.MoveNext
					 Wend
					 i = i + 1
					cs_listar.MoveNext()
					 Wend 
 %>
			<tr>
			  <td class="txt_cinza_11"> </td>
			  <td> </td>
			  <td colspan="2"> </td>
			  </tr>
			<% if opc <> "editar" then %>
			<tr>
			  <td height="32" colspan="4" valign="top"><div align="left">
				  <input name="Submit22" type="submit" class="botao" value="inserir" />
							</div></td>
			  </tr><% end if %>
		  </table>
		</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.