Ir para conteúdo

POWERED BY:

Arquivado

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

Somario

[Resolvido] atualizar varios registro mysql com php

Recommended Posts

Ajudem-me to precisando muito de uma luz.

 

Tenho este código

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>CDF Colégio e Curso</title>
</head>
<body>

<?php
$ano;
$ensino;
$turma;
$turno;

//efetua conexão com banco de dados
$conexao = mysql_connect("localhost","cdfznco_admin","liberar")
or die ("Não foi possível conectar");

//seleciona banco de dados
$bd = mysql_select_db("cdfznco_bd", $conexao)
or die ("Nao foi possível selecionar banco");

//seleciona campos e filtra
$sql = "SELECT * ";
$sql = $sql . "FROM dados_do_aluno WHERE dados_do_aluno.ano = '$ano' AND (ensino LIKE '$ensino' AND turma LIKE '$turma' AND turno LIKE '$turno') ORDER BY `nome`" ;

//faz consulta no bd e tb selecionada
$rs = mysql_query($sql, $conexao)
or die ("Não foi possível efetuar consulta");

//o comando while gera todos os registros
while ($linha = mysql_fetch_array ($rs)) {

//questões
$res_cons_codigo = $linha["codigo"];
$res_cons_nome = $linha["nome"];
$res_cons_ano = $linha["ano"];
$res_cons_ensino = $linha["ensino"];
$res_cons_turma = $linha["turma"];
$res_cons_turno = $linha["turno"];
?>

<form method="POST" action="<?php echo $PHP_SELF;?>"> 
<table width="975" align="center"> 
<tr> 
 <td align="left"><input name="codigo[]" type="text" id="codigo" value="<? echo $res_cons_codigo; ?>">  </td>
 <td align="left"><input name="nome[]" type="text" id="nome" value="<? echo $res_cons_nome; ?>" size="65"></td>
 <td align="left"><input name="ano[]" type="text" id="ano" value="<? echo $res_cons_ano; ?>"></td>
 <td align="left"><input name="ensino[]" type="text" id="ano2" value="<? echo $res_cons_ensino; ?>"></td>
 <td align="left"><input name="turma[]" type="text" id="turma" value="<? echo $res_cons_turma; ?>"></td>
 <td align="center"><input name="turno[]" type="text" id="turno" value="<? echo $res_cons_turno; ?>"></td> 
</tr> 
</table>
<div align="center">
<?php
}
?>
 <br>
 <input type="submit" value=" OK ">
</div>
</form>

[b][size="5"]este trecho vi neste forum e adicionei[/size][/b]

<?php 
if(isset($_POST)){ 

       $field          = $_POST; 

       $count          = count($field[codigo]); 
       for($i = 0; $i < $count; $i++){ 
               $up             .= "UPDATE dados_do_aluno SET codigo = {$field['codigo'][$i]}, nome = {$field['nome'][$i]}, ano = {$field['ano'][$i]}, ensino = {$field['ensino'][$i]}, turma = {$field['turma'][$i]}, turno = {$field['turno'][$i]} \n"; 
       } 
       echo "<pre>"; 
       print_r($up);    

} 
?>
</body>
</html>

Mas não estou conseguido o resultado esperado ele mostra que o dado foi alterado, mas não altera no bd.

 

Clique aqui para ver como está.

 

OBS tenho pouquissimo conhecimento em php e mysql o que aprendi foi por aqui nestes foruns, desde já agradeço imensamente as orientações. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os names dos inputs estão incorretos. Tente assim

 

<td align="left"><input name="codigo" type="text" id="codigo" value="<? echo $res_cons_codigo; ?>"> </td>
<td align="left"><input name="nome" type="text" id="nome" value="<? echo $res_cons_nome; ?>" size="65"></td>
<td align="left"><input name="ano" type="text" id="ano" value="<? echo $res_cons_ano; ?>"></td>
<td align="left"><input name="ensino" type="text" id="ano2" value="<? echo $res_cons_ensino; ?>"></td>
<td align="left"><input name="turma" type="text" id="turma" value="<? echo $res_cons_turma; ?>"></td>
<td align="center"><input name="turno" type="text" id="turno" value="<? echo $res_cons_turno; ?>"></td> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade acho que está correto pois da forma como fiz ele atualizaria todos os registro da seleção e da forma que você indicou apenas um, mas, ainda assim vejo o resultado na tela, mais não no BD. Obrigado

 

Rafael você clicou no link onde tem o exemplo?

 

Veja que da forma que fiz ele mostra

 

UPDATE dados_do_aluno SET codigo = 201110166, nome = ADRIELE ALVES DE ANDRADE, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 
UPDATE dados_do_aluno SET codigo = 201010095, nome = ALANY KELLY ARAUJO PEREIRA, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 
UPDATE dados_do_aluno SET codigo = 201110277, nome = ALEXCILANIA DA SILVA LIMEIRA, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 

até o último registro, quer ver pode ir no campo com os nomes dos alunos e deixar só o primeiro nome por exemplo ele mostrara o resultado assim

 

UPDATE dados_do_aluno SET codigo = 201110166, nome = ADRIELE, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 
UPDATE dados_do_aluno SET codigo = 201010095, nome = ALANY, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 
UPDATE dados_do_aluno SET codigo = 201110277, nome = ALEXCILANIA, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 

mas lá o banco de dados nada foi atualizado, ou seja se eu retornar a fazer minha consulta para ver o resultado da atualização na verdade ele não tem atualizado nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele está montando o Update errado.

UPDATE dados_do_aluno SET codigo = 201110166, nome = ADRIELE, ano = 6, ensino = FUNDAMENTAL, turma = A, turno = M 

 

Tudo que for TEXT, VARCHAR, CHAR, NCHAR, tem que estar dentro de aspas simples. ''

 

UPDATE dados_do_aluno SET codigo = 201110166, nome = 'ADRIELE', ano = 6, ensino = 'FUNDAMENTAL', turma = 'A', turno = 'M'

 

Para resolver o problema, basta você adicionar as aspas simples no quer for String, número (INT, INTEGER) não precisa por aspas.

 

<?php 
if(isset($_POST)){ 

       $field          = $_POST; 

       $count          = count($field[codigo]); 
       for($i = 0; $i < $count; $i++){ 
          $up             .= "UPDATE dados_do_aluno SET codigo = $field[codigo][$i]}, nome = '$field[nome][$i]', ano = $field[ano][$i], ensino = '$field[ensino][$i]', turma = '$field[turma][$i]', turno = '$field[turno][$i]'"; 
          mysql_query($up);    
       } 
} 
?>

 

O que é isso ? Deleta essas linhas, desnecessário.

<?php
$ano;
$ensino;
$turma;
$turno;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nada ainda, vejam como ficou o resultado com as alterações no BD nada alterado.

 

Bom e o seguinte não sei se tem haver, mas...

 

Estou Usando vertrigo na escola para disponibilizar o site na net pois aqui tem um ip fixo.

 

Praticamente não alterei nada da instalação, vi no tópico acho que do Ricardo.SP algo sobre globais ficar off fiz isso e se quer apareceu o resultado da pesquisa inicial então voltei a deixar on.

 

Não sei se vocês chegaram a ver mais essa pesquisa vem pa pagina index.php com o metodo post para index2.php onde tem esse código que usa <form method="POST" action="<?php echo $PHP_SELF;?>">

 

Que quando clico no botão envia para ela mesma certo? será que eu teria que enviar para uma outra página para funcionar? desculpem se estiver falando baboseira, mas não tenho bom conhecimento nem em php nem em mysql, nunca pude fazer um curso, tudo que faço no site é com pesquisa e ajuda de pessoas de bom coração como vocês.

 

a propósito ficou assim:

 

<?php 
if(isset($_POST)){ 

       $field = $_POST; 
       $count = count($field[codigo]); 
       for($i = 0; $i < $count; $i++){ 
               $up             .= "UPDATE dados_do_aluno SET codigo = {$field['codigo'][$i]}, nome = '{$field['nome'][$i]}', ano = '{$field['ano'][$i]}', ensino = '{$field['ensino'][$i]}', turma = '{$field['turma'][$i]}', turno = '{$field['turno'][$i]}' WHERE codigo = {$field['codigo'][$i]} \n"; 
       }
	mysql_query($up); 
       echo "<pre>"; 
       print_r($up);    

} 
?>

só tem codigo que é INT que é a matricula do aluno

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente algo assim:

 

if(isset($_POST)){

$count = count($_POST['codigo']); 
$i = 0; 

while ($i < $count) { 
$codigo = $_POST['codigo'][$i]; 
$nome = $_POST['nome'][$i]; 
$ano = $_POST['ano'][$i]; 
$ensino = $_POST['ensino'][$i]; 
$turma = $_POST['turma'][$i]; 
$turno = $_POST['turno'][$i]; 

$query = "UPDATE dados_do_aluno SET `nome` = '$nome', `ano` = '$ano', `ensino` = '$ensino', `turma` = '$turma', `turno` = '$turno' WHERE `codigo` = '$codigo'";

if(@mysql_query($query)){
print = "Alterado com Sucesso";
}
++$i; 
}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica:

if(@mysql_query($query)){

 

Tirem esses @ da frente das funções MySql, deixa lento a execução da query e esconde o erro caso aconteça.

Isso é um mau hábito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

GRRAAANNNNNNNNNNNNDE GURU'S deu certissimo, MUUUIIIITO Obrigado, como posso deixar o script para que as pessoas possam usar, sou novo no forum.

Compartilhar este post


Link para o post
Compartilhar em outros sites

GRRAAANNNNNNNNNNNNDE GURU'S deu certissimo, MUUUIIIITO Obrigado, como posso deixar o script para que as pessoas possam usar, sou novo no forum.

agora mim arruma uma bolsa ai no CDF da ZN, q eu moro aqui no Panatins

rsrsrsrsrs

Brincadeiraaa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Senhores, pesquisando na internet encontrei esse post. Estou tentando fazer como o colega acima, atualizar vários campos de uma só vez, mas não estou conseguindo.

 

Com a esperança de algum ajudar estou postando meu código para ver se alguem ajuda a mostrar onde estou errando.

 

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

$count = count($_POST['ID_Texto']); 
$i = 0; 

while ($i < $count) {
$original = $_POST['original'][$i];
$texto = $_POST['texto'][$i];
$ID_Texto = $_POST['ID_Texto'][$i];

 $updateSQL = sprintf("UPDATE textos SET original=%s, texto=%s WHERE ID_Texto=%s",
                      GetSQLValueString($original, "text"),
                      GetSQLValueString($texto, "text"),
                      GetSQLValueString($ID_Texto, "int"));

if(mysql_query($updateSQL)){
print "Alterado com Sucesso";
}
++$i; 
}
 mysql_select_db($database_conexao, $conexao);
 $Result1 = mysql_query($updateSQL, $conexao) or die(mysql_error());

 $updateGoTo = "textos.php";
 if (isset($_SERVER['QUERY_STRING'])) {
   $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
   $updateGoTo .= $_SERVER['QUERY_STRING'];
 }
 header(sprintf("Location: %s", $updateGoTo));
}

 

<?php do { ?>

    <textarea name="original[]" cols="30" rows="2"><?php echo $row_rs['original']; ?></textarea>

    <textarea name="texto[]" cols="30" rows="2"><?php echo $row_rs['texto']; ?></textarea>

    <input name="ID_Texto[]" type="hidden" id="ID_Texto" value="<?php echo $row_rs['ID_Texto']; ?>" />


    <input type="submit" name="botao" id="botao" value="Salvar" />

<?php } while ($row_rs = mysql_fetch_assoc($rs)); ?>

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.