Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite a todos do iMasters.
Bom galera meu problema é o seguinte, eu gostaria de que quando um checkbox fosse selecionado ele atualizasse o banco automaticamente, ou seja, sem dá um refresh na página atual ficando de forma transparente para o usuário que houve uma atualização no banco.
Eu nunca fiz algo do tipo, por isso não pude postar nenhum código aqui, o que seria mais bem interessante, mais caso alguém que ja tenha feito poderia por favor me dizer como que eu faço isso ?!
Desde de já obrigado pela ajuda de todos, té mais.
Boa tarde a todos do iMasters, bom pessoal agora tenho códigos o que torna qualquer post mais interessante, porém tenho algumas dúvidas pra variar :D
Bom então vamos por partes, dá forma que meu código se encontra agora ele ja atualiza direto no banco apenas no evento CLICK.
Mais tem um pequeno porém, na página onde vejo quais resumos já foram lidos ou não fica somente a opção NÃO como marcada, mesmo após eu ter clicado como SIM.
Já tentei de várias formas ver se eu conseguia resolver o problema sem vim aqui mais infelizmente nao conseguir obter sucesso em nenhuma de minhas tentativas.
A minha consulta que realizo para verificar quais das opções estão marcadas é a seguinte abaixo:
mysql_select_db($database_bioanimal, $bioanimal);
$sql = "SELECT * FROM upload ORDER BY id ASC";
$resultado = mysql_query($sql, $bioanimal) or die(mysql_error());
$row_resultado = mysql_fetch_array($resultado);
$totalRows_resultado = mysql_num_rows($resultado);
A forma do evento CLIK está da seguinte forma abaixo:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$(".up").click(function(){
campo_leitura = $(this).attr("name");
campo_valor = $(this).attr("value");
campo_id = $(this).attr("id");
$.ajax({
type:"POST",
url:"alt_resumo.php",
data:{nome:campo_leitura , valor:campo_valor , idcampo:campo_id},
success: function(atual){
$(this).html(atual)
}
})
return false
})
});
E a parte onde é para a opção ficar marcada com SIM ou não está assim:
<form name="leitura" id="leitura" method="post" action="">
<input name="leitura" class="up" type="radio" id="<?php echo $dadosid; ?>" value="S" <?php if ($row_resultado['leitura'] == "S") {echo "checked='checked'";}?>>
Sim
<input name="leitura" class="up" type="radio" id="<?php echo $dadosid; ?>" value="N" <?php if ($row_resultado['leitura'] == "N") {echo "checked='checked'";} ?>checked>
Não
</form>
O value que tem no value vem da seguinte consulta:
$sql = "SELECT alu.nome AS nome, alu.cpf AS cpf, alu.email AS email, up.resumo AS down, up.id AS id_up FROM aluno AS alu, upload AS up WHERE alu.id = up.aluno_id order by nome LIMIT $inicio, $qnt"
E o código é o que uso para realizar o loop e me mostrar quantos ´resumos ja foram enviados
for ($linha=0; $linha < mysql_num_rows($dados); $linha++)
{
$dadosid = mysql_result($dados, $linha, id_up);
if ($bgcolor == "#f0f0f0")
$bgcolor = "#F9F9F9";
else
$bgcolor = "#f0f0f0";
//do { ?>
<tr align="left" valign="middle" bgcolor="#FFFFFF">
<td bgcolor = <?php echo $bgcolor?>><?php echo mysql_result ($dados, $linha, nome) ?></td>
<td bgcolor = <?php echo $bgcolor?>><?php echo mysql_result ($dados, $linha, cpf) ?></td>
<td bgcolor = <?php echo $bgcolor?> align="center"><?php echo mysql_result ($dados, $linha, email) ?></td>
<td bgcolor = <?php echo $bgcolor?> align="center"><a href ="<?php echo "$endereco/adm/_resumos/".mysql_result ($dados, $linha, down)?>">Baixar</a></td>
<td bgcolor = <?php echo $bgcolor?> align="center"><form name="leitura" id="leitura" method="post" action="">
<input name="leitura" class="up" type="radio" id="<?php echo $dadosid; ?>" value="S" <?php if ($row_resultado['leitura'] == "S") {echo "checked='checked'";}?>>
Sim
<input name="leitura" class="up" type="radio" id="<?php echo $dadosid; ?>" value="N" <?php if ($row_resultado['leitura'] == "N") {echo "checked='checked'";} ?>checked>
Não
</form></td>
<td bgcolor = <?php echo $bgcolor?> align="center"><a href ="<?php echo "adm.php?pag=3&opcao=Excluir&codigo=" .mysql_result ($dados, $linha, id_up)?>"> Excluir</a></td>
<?php // } while ($row_resultado = mysql_fetch_assoc($resultado)); ?>
<?php }?>
Resumindo tudo, meu único problema está na parte se or checkbox não ficarem selecionados de acordo com as opções que estão no banco, independente que este SIM ou NÃO ela marca sempre a opção NÃO.
Onde que estou errando ?! Té mais e obrigado pela ajuda.
Put'sss eu ja tentei um milhão de formas que são ensinas nos topicos da vida do google mais nada dá certo.. :(
Alguém que ja fez algo do tipo sabe me dizer aonde que estou errando ?!
Dizendo o problema mais uma vez, ele consiste no seguinte.
Quando ele está em NÃO por exemplo ai eu clico em SIM e ele nao deixar o radio do SIM marcado nem apos o clik e nem depois de uma atualização na pagina, mais no banco tudo muda perfeitamente.
Olá a todos, conseguir resolver o meu problema, vou postar aqui o código de como tudo ficou, para quem sabe no futuro servir para alguém.
O código em ajax/jquery ficou da seguinte forma.
<script type="text/javascript" src="../js/jquery-1.3.2.js" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$(".up").change(function(){
campo_leitura = $(this).attr("name");
campo_valor = $(this).attr("value");
campo_id = $(this).attr("id");
$.ajax({
type:"POST",
url:"alt_resumo.php",
data:{nome:campo_leitura , valor:campo_valor , idcampo:campo_id},
success: function(atual){
//$(this).html(atual)
}
})
return false
})
});
O meus input's ficaram assim
<form name="leitura" id="leitura" method="post" action="">
<input name="leitura" class="up" type="radio" id="<?php echo $dadosid; ?>" value="S" <?php if (mysql_result ($dados, $linha, leitura) == "S") {echo "checked='checked'";}?>>Sim
<input name="leitura" class="up" type="radio" id="<?php echo $dadosid; ?>" value="N" <?php if (mysql_result ($dados, $linha, leitura) == "N") {echo "checked='checked'";} ?>>Não
</form>
A consulta na qual pego os resultados é a seguinte abaixo
$sql = "SELECT alu.nome AS nome, alu.cpf AS cpf, alu.email AS email, up.resumo AS down, up.id AS id_up, up.leitura AS leitura
FROM aluno AS alu, upload AS up
WHERE alu.id = up.aluno_id order by nome";
E o meu código para fazer UPDATE no banco é o seguinte abaixo
<?php
require "../_conexao.php";
$coluna = $_POST["nome"];
$valor = $_POST["valor"];
$idcampo = $_POST["idcampo"];
$sql_upd = "UPDATE upload SET leitura = '$valor' WHERE id = $idcampo;";
$resultado_upd = mysql_query($sql_upd) or die(mysql_error());
$sql_cons = "SELECT id, leitura FROM upload WHERE id = $idcampo;";
$resultado_cons = mysql_query($sql_cons) or die(mysql_error());
$linha = mysql_fetch_assoc($resultado_cons);
$linhas_totais = mysql_num_rows($resultado_cons);
echo $linha[$coluna];
mysql_free_result($resultado_cons);
?>
Também não tenho um código pronto, mas sem refresh a opção seria ajax
http://www.google.com/search?hl=pt-BR&q=atualizar+banco+de+dados+com+ajax&btnG=Pesquisar&lr=&aq=f&oq=