Ir para conteúdo

POWERED BY:

Arquivado

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

Guh Costa

Pegar valores de vários checkbox

Recommended Posts

Boa tarde!

 

Procurei pelos fóruns e não achei nenhuma situação semelhante para tirar minha dúvida...

 

Meu problema é o seguinte:

Tenho uma tabela montada por valores do meu banco SQL (ID, NOME e COR DA PELE), e cada linha tem um checkbox, onde irei selecionar os que eu quero alterar.

Depois de selecionar e clicar no button, preciso que abra uma página para escolher a COR DA PELE (branca por exemplo) e ao salvar, altera todos checkbox que eu selecionei para cor da pele BRANCA.

 

Agradeço des de já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, você lista todos os registros, então seleciona o checkbox para alterar os registros desejados, então altera todos esses selecionados ?

<input type="checkbox" name="id[]" value="id de cada linha" />

 

Então você recebe um array de todos selecionados pelo POST | GET.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, você lista todos os registros, então seleciona o checkbox para alterar os registros desejados, então altera todos esses selecionados ?

<input type="checkbox" name="id[]" value="id de cada linha" />

 

Então você recebe um array de todos selecionados pelo POST | GET.

 

Consegui fazer tudo isso.

 

Só travei na hora de inserir a CORDAPELE nos array que trouxe pelo POST.

 

foreach ($_POST['id'] as $id)

{

echo "<input type='text' name='id[]' value='$id'><br/>"; //LISTEI TODOS SELECIONADOS

}

echo "<select name='codapele'>

<option value='' selected>selecione</option>

<option value='branco' selected>Branco</option>

<option value='negro' selected>Negro</option>

<option value='pardo' selected>Pardo</option>"; //SELECIONEI A COR DA PELE QUE QUERO APLICAR PARA OS CHECKBOX SELECIONADOS.

 

$sql = "UPDATE tabela SET cordapele = $cordapele WHERE id = ??? (aqui tenho que colocar o array) ";

 

Grato novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não amigo, você não lê todos os registros do banco de dados e imprime os dados ? você vai fazer a mesma coisa com o checkbox, vai imprimir cada um:

while( $dados = mysql_fetch_array( $query ) ) { 
      echo '<input type="checkbox" name="id[]" value="'.$dados[ "id" ].'" />';
}

 

Então, quando você submeter o formulário, você vai fazer um implode para montar a query:

<?php
      if( isset( $_POST[ 'id' ] ) {
                 $SQL = sprintf( "UPDATE `tabela` SET `cordapele` = '%s' WHERE `id` IN( %s )" , 
                 $_POST[ 'cordapele' ] , implode( ',' , $_POST[ 'id' ) );
                 echo $SQL;
      }

 

Execute dessa forma, poste o retornado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vê se ajuda.

<?php
include( 'conecta.php' );

$cores = $pdo->prepare( 'SELECT * FROM cores' );
$cores->execute();

if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
	$resultado = $_POST['cordapele'];

	if( $resultado != "" )
	{
		$escolhido = $pdo->prepare( 'UPDATE cores SET escolhido = escolhido + 1 WHERE id = ?' );
		$escolhido->bindParam( 1, $resultado );
		$escolhido->execute() or die('Erro ao incrementar valor na base de dados');
		echo 'Ok';
	}else
		echo 'Selecione uma cor...';

}

?>


<!-- VIEW -->
<form method="post">
<select name="cordapele">
	<?php foreach ( $cores->fetchAll() as $cor ): ?>

	<option value="<?php echo $cor['id']; ?>" ><?php echo $cor['desc']; ?></option>

	<?php endforeach; ?>
	<option value="" selected="1">Selecione uma cor</option>
</select>
<input type="submit" value="Escolher" />
</form>


Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisei usar:

while( $dados = mysql_fetch_array( $query ) ) { 
      echo '<input type="checkbox" name="id[]" value="'.$dados[ "id" ].'" />';
}

 

Funcionou certinho =D

Obrigado cara!

 

Agora está perfeito, mais só pra ver se eu entendi a lógica...

Quando fiz foreach ($_POST['id'] as $id) { echo "<input type='text' name='id[]' value='$id'><br/>";}

eu armazenei todas checks num vetor.

 

E o implode neste vetor me resulta em (id1, id2, id3, id4 ...) ?

Na verdade o implode lê o vetor id[] então?

 

Abraços

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.