Ir para conteúdo

POWERED BY:

Arquivado

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

Rodiney

Atualizar varios registro ao mesmo tempo

Recommended Posts

Tou criando um site onde tem tenho que colocar para atualizar o preço de umgrupo de registros mas eu não sei como eu posso fazer isso pois em média da 50 a 80 registros para ser atualizados num vez só. tem como fazer isso?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

da par fazer sim.

seu codigo vais er enorme

 

não seria mais simples. dividir seus registros por blocos.

para ficar mais limpa e mais organizada a programação.

???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas o formulário eu já criei! ele exibe os registros com o preço antigo num "text fiel" onde o cliete digita o novo valor ai cliclando em enviar posta para a outra pagina onde seria atualizado no bd mas eu não consigo fazer com que o UPDATE repita para cada registro ou algo parecido, O que eu quero fazer o "loop"

 

Se tiver como fazer isso posta ai

 

Ex:

$id=1;
$id=2;
$id=3;
$id=4;
$id=5;
$vlr=70;
$vlr=71;
$vlr=72;
$vlr=73;
$vlr=74;

 $upd_upd="UPDATE txt SET valor1='$vlr' WHERE id='$id'";

mysql_query($upd_upd);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem como fazer isso?

 

Os valores são enviados de um formulário com sitema POST, como é que eu fasso para que update funcione sendo que vai de uma vez só variso registros...???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que entendi o que você quer, você tem mais ou menos isso:

 

<input type="checkbox" name="chkId[]" value="12|0"> <label>Novo Valor</label><input type="text" name="txtValor[]">
<input type="checkbox" name="chkId[]" value="15|1"> <label>Novo Valor</label><input type="text" name="txtValor[]">
<input type="checkbox" name="chkId[]" value="20|2"> <label>Novo Valor</label><input type="text" name="txtValor[]">
<input type="checkbox" name="chkId[]" value="21|3"> <label>Novo Valor</label><input type="text" name="txtValor[]">
<input type="checkbox" name="chkId[]" value="31|4"> <label>Novo Valor</label><input type="text" name="txtValor[]">

em relação a isso(value="21|3") 21 representa o id e 3 o indice do campo do valor que será atualizado, ai no php você faz o seguinte:

 

<?php
if(isset($_POST['chkId']))
{
	$ids = $_POST['chkId'];
	$valores = $_POST['txtValor'];

	for($i = 0; $i < count($ids); $i++)
	{
		$id_indice = explode("|",$ids[$i]);
		mysql_query("UPDATE txt SET valor=".$valores[$id_indice[1]]." WHERE id=".$id_indice[0]);
	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito... nau tenho nem palavras para agradecer.... /tou sendo sincero...

Muito Obrigado ficou perfeito... Valeu mesmo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fera tou com um problema eu joguei no formulário e fiz um "select" que exibe todos os registros mostrando os valores no formulário firz como no script que você me passou mas não ta dando serto já revisei o codigo e não comtem erro.... tem alguma restrição referente ao loop do formulário? ou tem outra forma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o seu código, para darmos uma olhada, assim só falando fica dificil ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais as minhas duvidas....

1º Quando eu fasso o loop do "record set" eu não fasso do formulário somente da tabela em que esta os campos do formulário sendo que neste formulário tera somente um botão de "submit", eu acho que deste jeito não tem como fazer funcionar pq somente um valor será enviado do formulário....

 

 

 

Explicando o codigo:

 

é um formulário post onde exibe a consulta no banco de dados exibindo os valores nele contido um "textfiel", quando é alterado ele envia para o update...

no id eu coloquei para ezibir o id do proprio valor e o indice ele pega o valor da id do banco e soma +1 dando o valor do indice....

 

na verdade o problema é como fazer um loop do form para que ele envie todos os resultados já alterado para o update....

 

 

 

 

 

<?php require_once('Connections/Incomar.php'); ?>
<?php
// AQUI ELE RECEBE O VALOR DO FORMULÁRIO PARA ATUALIZAÇÃO
if(isset($_POST['id']))
{
	$ids = $_POST['id'];
	$valor1A = $_POST['valor1'];
	$valor2A = $_POST['valor2'];
	$valor3A = $_POST['valor3'];
	$valor4A = $_POST['valor4'];
	$valor5A = $_POST['valor5'];
	
	for($i = 0; $i < count($ids); $i++)
	{
		$id_indice = explode("|",$ids[$i]);
		mysql_query("UPDATE txt SET valor1=".$valor1A[$id_indice[1]]."valor2=".$valor2A[$id_indice[1]]."valor3=".$valor3A[$id_indice[1]]. "valor4=".$valor4A[$id_indice[1]]. "valor5=".$valor5A[$id_indice[1]]. "WHERE id=".$id_indice[0]);
	}
}
?>




<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
	case "text":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;	
	case "long":
	case "int":
	  $theValue = ($theValue != "") ? intval($theValue) : "NULL";
	  break;
	case "double":
	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
	  break;
	case "date":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;
	case "defined":
	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
	  break;
  }
  return $theValue;
}
}

mysql_select_db($database_Incomar, $Incomar);
$query_rs_atualiza = "SELECT * FROM txt WHERE id < 6";
$rs_atualiza = mysql_query($query_rs_atualiza, $Incomar) or die(mysql_error());
$row_rs_atualiza = mysql_fetch_assoc($rs_atualiza);
$totalRows_rs_atualiza = mysql_num_rows($rs_atualiza);
?><table width="893" height="86" border="0" cellpadding="0" cellspacing="0">
  <tr>
	<td width="893"><form action="" method="post" enctype="multipart/form-data" name="atualiza" id="atualiza">
	  <?php do { ?>
		<table width="891" border="0" cellspacing="0" cellpadding="0">
			<tr>
			  <td width="891"><label>Atualiza?:
				<input name="id[]" type="checkbox" id="id[]" value="<?php echo $row_rs_atualiza['id']; ?>|<?php $calc1= $row_rs_atualiza['id'];
			  $calc2=$calc1+$row_rs_atualiza['id'];
			  echo $calc2; ?>">
				Valor01
				<input name="valor1[]" type="text" id="valor1[]" value="<?php echo $row_rs_atualiza['valor1']; ?>" size="10">
				Valor2:
				<input name="valor2[]" type="text" id="valor2[]" value="<?php echo $row_rs_atualiza['valor2']; ?>" size="10"> 
				Valor3: 
				<input name="valor3[]" type="text" id="valor3[]" value="<?php echo $row_rs_atualiza['valor3']; ?>" size="10"> 
				Valor4:
				<input name="valor4[]" type="text" id="valor4[]" value="<?php echo $row_rs_atualiza['valor4']; ?>" size="10"> 
				Valor5: 
				<input name="valor5[]" type="text" id="valor5[]" value="<?php echo $row_rs_atualiza['valor5']; ?>" size="10">
			  </label></td>
			</tr>
				  </table>
		<?php } while ($row_rs_atualiza = mysql_fetch_assoc($rs_atualiza)); ?><table width="164" border="0" align="center" cellpadding="0" cellspacing="0">
			  <tr>
				<td><label>
				  <div align="center">
					<input type="submit" name="Submit" value="Atualiza">
				  </div>
				</label></td>
			  </tr>
			</table>
	</form>
	</td>
  </tr>
</table>
<?php
mysql_free_result($rs_atualiza);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humternh: você condeguiu dar uma olhada no codigo que eu postei????

 

alguma duvida?

 

Posta ai qualquer duvida que tiver ou se achar alguma coisa que possa me dar uma luzzz...

 

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que andei vendo, você tem mais de um valor por id é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim são 5 valores!!!

 

Eu textei o codigo que você me passou, com mais de um valor por id funcionou perfeitamente...Mas com os "textfiel" 'fixos' ou seja não é feito o loop dos valores do banco exibindo todos os valores sendo que fica um formulários e varios registros para serem envidos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que é isso, tem que testar:

 

<?php
require_once('Connections/Incomar.php');

// AQUI ELE RECEBE O VALOR DO FORMULÁRIO PARA ATUALIZAÇÃO
if(isset($_POST['id']))
{
	$ids = $_POST['id'];
	$valor1A = $_POST['valor1'];
	$valor2A = $_POST['valor2'];
	$valor3A = $_POST['valor3'];
	$valor4A = $_POST['valor4'];
	$valor5A = $_POST['valor5'];
	
	for($i = 0; $i < count($ids); $i++)
	{
		$id_indice = explode("|",$ids[$i]);
		mysql_query("UPDATE txt SET valor1=".$valor1A[$id_indice[1]]."valor2=".$valor2A[$id_indice[1]]."valor3=".$valor3A[$id_indice[1]]. "valor4=".$valor4A[$id_indice[1]]. "valor5=".$valor5A[$id_indice[1]]. "WHERE id=".$id_indice[0]);
	}
}
?>




<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
	case "text":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;	
	case "long":
	case "int":
	  $theValue = ($theValue != "") ? intval($theValue) : "NULL";
	  break;
	case "double":
	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
	  break;
	case "date":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;
	case "defined":
	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
	  break;
  }
  return $theValue;
}
}

mysql_select_db($database_Incomar, $Incomar);
$query_rs_atualiza = "SELECT * FROM txt WHERE id < 6";
$rs_atualiza = mysql_query($query_rs_atualiza, $Incomar) or die(mysql_error());
$row_rs_atualiza = mysql_fetch_assoc($rs_atualiza);
$totalRows_rs_atualiza = mysql_num_rows($rs_atualiza);
?>
<table width="893" height="86" border="0" cellpadding="0" cellspacing="0">
  <tr>
	<td width="893"><form action="" method="post" enctype="multipart/form-data" name="atualiza" id="atualiza">
	  <?php
	  $idx = 0;
	  do { ?>
		<table width="891" border="0" cellspacing="0" cellpadding="0">
			<tr>
			  <td width="891"><label>Atualiza?:
				<input name="id[]" type="checkbox" id="id[]" value="<?php echo $row_rs_atualiza['id'].'|'.$idx; ?>">
				Valor01
				<input name="valor1[]" type="text" id="valor1_<?php echo $idx;?>" value="<?php echo $row_rs_atualiza['valor1']; ?>" size="10">
				Valor2:
				<input name="valor2[]" type="text" id="valor2_<?php echo $idx;?>" value="<?php echo $row_rs_atualiza['valor2']; ?>" size="10"> 
				Valor3: 
				<input name="valor3[]" type="text" id="valor3_<?php echo $idx;?>" value="<?php echo $row_rs_atualiza['valor3']; ?>" size="10"> 
				Valor4:
				<input name="valor4[]" type="text" id="valor4_<?php echo $idx;?>" value="<?php echo $row_rs_atualiza['valor4']; ?>" size="10"> 
				Valor5: 
				<input name="valor5[]" type="text" id="valor5_<?php echo $idx;?>" value="<?php echo $row_rs_atualiza['valor5']; ?>" size="10">
			  </label></td>
			</tr>
				  </table>
		<?php } while ($row_rs_atualiza = mysql_fetch_assoc($rs_atualiza)); ?><table width="164" border="0" align="center" cellpadding="0" cellspacing="0">
			  <tr>
				<td><label>
				  <div align="center">
					<input type="submit" name="Submit" value="Atualiza">
				  </div>
				</label></td>
			  </tr>
			</table>
	</form>
	</td>
  </tr>
</table>
<?php
mysql_free_result($rs_atualiza);
?>

Ps.: repare na variável $idx que eu coloquei

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.