Ir para conteúdo

POWERED BY:

Arquivado

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

nknk

[Resolvido] Atualizando vários registros

Recommended Posts

Onde está o erro neste código ? Não consigo atualizar a tabela.

 

tab.php

 

require("conexao.php");  
$sql=mysql_query("SELECT * FROM tab");?>
<p>tabela teste</p>
<form id="form1" name="form1" method="post" action="mudtab.php">
<?php while ($mostra = mysql_fetch_assoc($sql)) { ?>
  id
  <input name="id[]" type="text" id="id" value="<?php echo $mostra["id"]; ?>" readonly="true" />
  camp1
  <input name="camp1[]" type="text" id="camp1" value="<?php echo $mostra["camp1"]; ?>" />
  camp2
  <input name="camp2[]" type="text" id="camp2" value="<?php echo $mostra["camp2"]; ?>" />
  camp3
  <input name="camp3[]" type="text" id="camp3" value="<?php echo $mostra["camp3"]; ?>" /><br>
  <? }?><input name="" type="submit" />
</form>

mudtab.php

 

foreach($_POST as $key=>$value){
require("conexao.php");
$query="UPDATE tab SET camp1='".$_POST["camp1"][$key]."', camp2='".$_POST["camp2"][$key]."', camp3='".$_POST["camp3"][$key]."' WHERE id='".$_POST["id"][$key]."'";
if(mysql_query($query)){echo"Id ".$_POST["id"][$key]." atualizado<br> ";}else{echo mysql_error();}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria atualizar vários campos e não vários registros...

 

Faça isso

 

 
 Tira [] dos nomes dos campos e deixe a parte de atualizar sem o foreach
 $query="UPDATE tab SET camp1='".$_POST["camp1"]."', camp2='".$_POST["camp2"]."', camp3='".$_POST["camp3"]."' WHERE id='".$_POST["id"]."'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que seria atualizar vários campos e não vários registros...

 

Faça isso

 

  
  Tira [] dos nomes dos campos e deixe a parte de atualizar sem o foreach
  $query="UPDATE tab SET camp1='".$_POST["camp1"]."', camp2='".$_POST["camp2"]."', camp3='".$_POST["camp3"]."' WHERE id='".$_POST["id"]."'";

Não pois eu desejo atualizar vários linhas da tabela (registro), por isso o uso da array[] e foreach.

 

id camp1 camp2 camp3

1 abc1 abc2 abc3

2 def1 def2 def3

3 ghi1 ghi2 ghi3

...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema tá no teu foreach... Acho que vai ter que usar o for...

 

require("conexao.php");
for ($x = 0; $x < count($_POST['id']); $x++){
  $query="UPDATE tab SET camp1='".$_POST['camp1'][$x]."', camp2='".$_POST["camp2"][$x]."', camp3='".$_POST["camp3"][$x]."' WHERE id='".$_POST["id"][$x]."'";
if(mysql_query($query)){echo"Id ".$_POST["id"][$x]." atualizado<br> ";}else{echo mysql_error();}
}

 

Se assim não resolver, dê uma olhada na forma que vem do seu formulário, colocando isto no início do código.

echo '<pre>';
print_r($_POST);

 

Carlos Eduardo

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.