Ir para conteúdo

POWERED BY:

Arquivado

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

edye

atualizar no bd usando checkbox

Recommended Posts

pessoal é o seguinte!

 

Eu tenho uma tabela no mysql montada da seguinte maneira

 

 

tabela produtos

 

id (gerado automaticamente)

nome

quantidade

preco

 

 

tenho uma pagina onde faz uma consulta e outra que traz o resultado dentro de um form

 

<? $alterado = $quantidade - 1 ?> altera a quantidade para menos 1

 

e monta o form assim

 

exemplo: o resultado trouxe 4 registros

 

 

<form action="altera.php">

 

<input type="checkbox" id="$id" value="$alterado" checked>

<input type="checkbox" id="$id" value="$alterado" checked>

<input type="checkbox" id="$id" value="$alterado" checked>

<input type="checkbox" id="$id" value="$alterado" checked>

 

<input type="submit">

 

</form>

 

agora eu preciso fazer a página altera.php receber os dados dos checkbox e atualizar no mysql o campo quantidade de acordo com o id do registro.

 

alguem poderia me ajudar a montar o form e a pagina que altera os registros?

Compartilhar este post


Link para o post
Compartilhar em outros sites

seja bem vindo edye... depois de uma lida nas Regras do Fórum iMasters

 

posta a extruta da(s) tabela(s) q ira(m) sofrer alteração[ões] com o processamento do <form>, explique melhor oq você esta querendo, acho q sei oq é + naum tenho certesa.

 

Abraços xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá "Dórian",

 

De acordo com a minha tabela eu quero alterar apenas o campo quantidade do registro usando checkbox.

 

exemplo:

 

a minha tabela tem 5 registros.

 

-----------------------------------------------------------

--tabela produtos--

 

id = 1 | nome = bola | quantidade=10 |

id = 2 | nome = quadrado | quantidade=10 |

id = 3 | nome = retangulo | quantidade=10 |

id = 4 | nome = triangulo | quantidade=8 |

id = 5 | nome = losango | quantidade=10 |

-----------------------------------------------------------

 

 

o meu sistema de busca lista 2 registros:

 

id = 2 | nome = quadrado | quantidade=10 |

id = 4 | nome = triangulo | quantidade=8 |

 

eu envio esses 2 registros para outra pagina que pega o valor do campo quantidade desses 2 registros e subtrai 1

 

fica assim:

 

id = 2 | nome = quadrado | quantidade=9 |

id = 4 | nome = triangulo | quantidade=7 |

 

agora eu preciso salvar a alteração feita. O que eu pensei foi o seguinte:

 

pego os dados alterados e monto um checkbox assim:

 

<form action="pagina_que_salva_os_dados.php" method="post">

 

<input type="checkbox" id="2" name="quadrado" value"9" checked>

<input type="checkbox" id="4" name="triangulo" value"7" checked>

 

<input type="submit" value="salvar">

 

</form>

 

até aí eu consegui fazer, mas a pagina que vai salvar esses dados eu não sei como fazer. Pois eu preciso pegar os dados de todos o checkbox e fazer um update.

 

Após estas ações a tabela deverá ficar assim:

 

 

-----------------------------------------------------------

--tabela produtos--

 

id = 1 | nome = bola | quantidade=10 |

id = 2 | nome = quadrado | quantidade=9 |

id = 3 | nome = retangulo | quantidade=10 |

id = 4 | nome = triangulo | quantidade=7 |

id = 5 | nome = losango | quantidade=10 |

-----------------------------------------------------------

 

 

Não sei se deu para entender assim, mas se precisar eu tento explicar de outra forma. Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho esse script que salva os dados vindos de um form, mas ele salva apenas um de cada vez. Então quando mando salvar, ele salva apenas os dados do primeiro checkbox. Estou colocando aqui caso alguem saiba modificar ele para salvar o valor de todos os checkbox.

 

<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
$id		   = $_POST["id"];
$quantidade   = $_POST["quantidade"];

if(@mysql_query("UPDATE produtos SET quantidade = '$quantidade' WHERE id = $id")) {

	if(mysql_affected_rows() == 1){
		echo "Salvo";
	}

} else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {
		echo "Erro";
		exit;
	}
	@mysql_close();
}

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer com foreach ... no seu checkbox deixa assim:

<input type="checkbox" id="<?php echo $row['id']; ?>" name="altera[]" value"<?php echo $valor; ?>" checked>
Ai na página que faz o update você coloca :

<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {

foreach($_POST["altera"] as $alt) {
$id = $_POST['id'];
$quantidade = $alt;
if(mysql_query("UPDATE produtos SET quantidade = '$quantidade' WHERE id = $id")) {
   if(mysql_affected_rows() == 1){
		echo "Salvo";
	}

} else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {
		echo "Erro";
		exit;
	}
	@mysql_close();
  }

 }
}
?>

Não testei ..se não funcionar posta ai ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui o meu codigo ^^

<?php
foreach ($_POST as $id) {
	@mysql_query("UPDATE produtos SET quantidade = (quantidade-1) WHERE id = '$id'") or die ("Erro ao processar a ID: $id");
}
?>

Ahh... mude o checkbox para:

<input type="checkbox" id="cb_<?php echo $c++; ?>" name="cb_<?php echo $c++; ?>" value"<?php echo $row['id']; ?>">

Compartilhar este post


Link para o post
Compartilhar em outros sites

O "input checkbox" esta dentro do echo, como deverá ficar input nesse caso?

 

echo " <input type='checkbox' id='???' name='???' value='???' checked> ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera, eu ainda não consegi resolver o problema do checkbox, pois meu conhecimento em php ainda é bastante limitado, por isso não consegui botar pra funcionar nem com o código de vocês.

 

 

Bem, colocando este problema a parte. Eu estou com outro que talvez seja fácil de resolver (ou não) e vou aproveitar esse tópico que eu já criei pra tirar a minha dúvida.

 

 

eu tenho um campo no meu banco de dados onde eu gravo o valor de um produto, o formato como fica armazenado é assim:

 

1.23

 

a minha página calcula o troco de acordo com o valor que o usuario digita no form.

 

$total = 2.00 - 1.25;

 

a variavel total nesse caso é igual a 0.75. até aí to ok.

 

mas se o usuário entra com qualquer valor menor que 2.00 (1.90 , 1.80 , 1.75) a variável fica igual a -0.25 independente do valor que for menor que os 2.00.

 

o certo seria assim:

 

$total = 1.75 - 1.25;

 

"0.50 = 1.75 - 1.25"

 

mas fica assim:

 

$total = 1.75 - 1.25;

 

"-0.25 = 1.75 - 1.25"

 

se o usuario coloca 2.00:

 

$total = 1.75 - 1.25;

 

"0.75 = 2.00 - 1.25"

 

o mesmo problema acontece sempre quando o valor a ser calculado é somente os "centavos".

 

Alguem sabe a forma como estou calculado não está correta ou se tem alguma outra forma de calular valores nesse formato (0.00) sem problemas???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em relação ao seu 1º problema ..como você recebe esses dados na página que tem o formulário ? E quanto ao seu 2º problema seria melhor se você tivesse postado outro tópico ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi pessoal, consegui resolver o problema da subtração. O problema não estava no cálculo em si, mas sim em umas das variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse código recebe os dados do resultado da busca e monta o form. por enquanto ele está configurado para imprimir vários forms de acrodo com o resultado.

 

 

<?php
	echo "
		<table border='0'>
		<tr>
	  ";
	$carrinho = isset ($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array();

	if (count ($carrinho) == 0)
	{
		echo "


		";
	}
	else
	{
   		for ($a = 0; $a < count($carrinho); $a++)
		{
			$id = $carrinho[$a]['id'];
			$nome = htmlentities ($carrinho[$a]['nome']);
			$preco = number_format ($carrinho[$a]['preco'], 2, ",", "");
			$desc = htmlentities ($carrinho[$a]['descricao']);
			$qtde = $carrinho[$a]['qtde'];
			$subtotal = number_format(($carrinho[$a]['preco'] * $qtde), 2, ',', '');
			$tot = $desc - $qtde;

   echo "
			 <td>
				 <form method='post' action='salva.php'>
				 <input type='hidden' name='tot' id='tot' value='$tot'>
				 <input type='hidden' name='id' id='id' value='$id'>
				 <input type='submit' value='$id'>
				 </form>
			 <td>
			 ";
		}// fecha for
   		echo "
		   </tr>
		   </table>
   	 ";
	}// fecha else
?>

o resultado seria +- isso: ex. 3 registros encontrados ficaria:

 

<form method='post' action='salva.php'>

<input type='hidden' name='tot' id='tot' value='$tot'>

<input type='hidden' name='id' id='id' value='$id'>

<input type='submit' value='$id'>

</form>

 

<form method='post' action='salva.php'>

<input type='hidden' name='tot' id='tot' value='$tot'>

<input type='hidden' name='id' id='id' value='$id'>

<input type='submit' value='$id'>

</form>

 

<form method='post' action='salva.php'>

<input type='hidden' name='tot' id='tot' value='$tot'>

<input type='hidden' name='id' id='id' value='$id'>

<input type='submit' value='$id'>

</form>

 

o problema é que o usuário terá que clicar em nos 3 submits e isso não é nada agradável se o resultado trouxer 20 registros por exemplo. como eu tinha dito acima eu coloquei para que no lugar dos forms imprimisse checkbox

 

resultado = 3 registros:

 

<input type='checkbox' name='$id' value='$tot' checked>

 

<input type='checkbox' name='$id' value='$tot' checked>

 

<input type='checkbox' name='$id' value='$tot' checked>

 

assim eu mato 3 coelho com um submit só. se o resultado traz 50 registros eu mato 50 coelhos com apenas "1" submit. acho que vocês já entenderam né?

 

a minha intenção é salvar a variável $tot de acordo com o id($id) correspondente.

 

a página que salva os dados está assim

 

<?php

mysql_connect("localhost","root","xxxx");
mysql_select_db("vendas");

if($_SERVER["REQUEST_METHOD"] == "POST") {

$tot		  = $_POST["tot"];
$id		   = $_POST["id"];

if(@mysql_query("UPDATE produtos SET descricao = $tot WHERE id = $id")) {

	if(mysql_affected_rows() == 1){
		echo "atualizado";
	}

} else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {
		echo "erro";
		exit;
	}
	@mysql_close();
}

}
?>

o código acima recebe os dados do input text, mas eu gostaria de adapta-lo para receber do input checkbox e salvar tudo de uma só vez.

 

Agradeço a ajuda de vocês.

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.