Ir ao conteúdo

Listagem com CheckBox - Valores da Tabela


AndroidBr

Posts recomendados

Postado

Olá

 

- Criei uma tabela no banco de dados mysql

- Listo os valores das linhas na tela usando php

 

Até aqui tudo bem!

 

======================================================================================

Dúvidas e Questões:

 

1 -  Como mostrar os valores das linhas recuperadas da tabela com checkbox (Independente do número de linhas)

 

Exemplo:

[  ] valor_1 valor_2 valor_3 valor_4 valor_5  //Linha 1

[  ] valor_1 valor_2 valor_3 valor_4 valor_5  //Linha 2

[  ] valor_1 valor_2 valor_3 valor_4 valor_5  //Linha 3

 

 

2 - Com checkbox em cada linha, marcar linha, e usar os valores da linha marcada

(usar os valores transferindo-os para variáveis em js)

 

Exemplo:

[  ] valor_1 valor_2 valor_3 valor_4 valor_5                //Linha 1

[X] valor_1 valor_2 valor_3 valor_4 valor_5         //Linha 2

[  ] valor_1 valor_2 valor_3 valor_4 valor_5                //Linha 3

 

 

 =============================================================================

 

Fiz esse teste para jogar um valor de php para js:

<html><body><?php$valor_1 = "Funciona!";?><script >var valor_1 = "<?php echo $valor_1; ?>";alert(valor_1);</script></body></html>

============================================================================

 

Estou usando esse código para listar os dados da tabela:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html" charset="uft-8"/><title></title></head><body><ul><?phpconexao();$sql_seleciona = "SELECT * FROM tabknow";$result = seleciona($sql_seleciona);while($array = mysql_fetch_assoc($result)){          ?>          <li>                    <?php echo($array['camp1'])?>          <?php echo($array['camp2'])?>          <?php echo($array['camp3'])?>          <?php echo($array['camp4'])?>          <?php echo($array['camp5'])?>          <?php echo($array['camp6'])?>          <?php echo($array['camp7'])?>          <?php echo($array['camp8'])?>          <?php echo($array['camp9'])?>          <?php echo($array['camp10'])?>          <?php echo($array['camp11'])?>          <?php echo($array['camp12'])?>          <?php echo($array['camp13'])?>          <?php echo($array['camp14'])?>          <?php echo($array['camp15'])?>                    </li>                    <?php          }          ?>          </body></html>
  • Moderador
Postado

Olá @AndroidBr,

 

Em relação ao primeiro código, podes incorporar o php diretamente no javascript:

<html><body><?php $valor_1 = "Funciona!"; ?><script>   var valor_1 = <?php echo $valor_1; ?>;   alert(valor_1);</script></body></html>

Já no segundo,  para fazer um checklist...precisas criar o checkbox dentro do while..   desta maneira:

<?phpconexao();$sql_seleciona = "SELECT * FROM tabknow";$result = seleciona($sql_seleciona);$num = 0;while($opções = mysql_fetch_object($result)):    if($num == 1):       $complemento = "checked";    else:     	$complemento = "";     endif;      echo '<input type="checkbox" name="opções[]" value="$opções->ID" $complemento />$opções->nome';endwhile?>

obs:  estou usando o jeito que costumo programar para deixar o código mais limpo... os delimitadores {}  foram substituidos por    :  e endif  e endwhile

obs2: fiz de cabeça, nada foi testado... mas serve como aprendizado para você. tente implementar e ver se tem alguma falha.. 

 

Att,

 

Dif

  • Moderador
Postado

posta como tentou fazer baseado no código que eu mencionei mais acima como exemplo.

 

talvez pode ser preciso usar uma estrutura de for  dentro do while.. tente e ve  no que dá.

Postado

<?php require_once('funcoes.php')?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="content-type" content="text/html" charset="uft-8"/><title></title></head><body><?phpconexao();$sql_seleciona = "SELECT * FROM tabknow"; $result = seleciona($sql_seleciona);$num = 0;while($opções = mysql_fetch_object($result)):     if($num == 1):       $complemento = "checked";    else:      $complemento = "";    endif;     echo '<input type="checkbox" name="opções[]" value="$opções->ID" $complemento />$opções->nome';endwhile?></body></html> 
 <?phpfunction conexao(){ $banco   = 'knowledge'; $usuario  = 'root'; $senha   = 'vertrigo'; $host   = 'localhost';  $conn = mysql_connect($host,$usuario,$senha) or die ('Erro na rotina de conexão: '.mysql_error());  mysql_select_db($banco)or die ('Erro ao selecionar o banco de dados: '.mysql_error());}function inserir($sql){ if (mysql_query($sql)){  return TRUE; } else {  return FALSE; }}function seleciona($sql){ return mysql_query($sql);}?>

-- phpMyAdmin SQL Dump

-- version 4.0.9

-- http://www.phpmyadmin.net

--

-- Máquina: localhost

-- Data de Criação: 28-Jan-2014 às 23:09

-- Versão do servidor: 5.5.34

-- versão do PHP: 5.3.27

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

--

-- Base de Dados: `knowledge`

--

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

--

-- Estrutura da tabela `tabknow`

--

CREATE TABLE IF NOT EXISTS `tabknow` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `ciencia` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp1` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp2` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp3` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp4` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp5` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp6` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp7` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp8` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp9` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp10` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp11` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp12` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp13` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp14` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `camp15` varchar(50) COLLATE utf8_unicode_ci NOT NULL,

  `sinopse` text COLLATE utf8_unicode_ci NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

--

-- Extraindo dados da tabela `tabknow`

--

INSERT INTO `tabknow` (`id`, `ciencia`, `camp1`, `camp2`, `camp3`, `camp4`, `camp5`, `camp6`, `camp7`, `camp8`, `camp9`, `camp10`, `camp11`, `camp12`, `camp13`, `camp14`, `camp15`, `sinopse`) VALUES

(1, 'Astrofísica', 'aaaaaaaa', 'bbb', 'ccccc', 'dddddddd', 'eeeeeeee', 'fffffffffff', 'gggg', 'hhhh', 'iiiiiiiiiii', 'jjjjjjj', 'lllllllllll', 'mmmmm', 'nnnnnnn', 'oooo', 'ppppp', 'O sapo não lava o pé porque não quer.');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

  • Moderador
Postado
<?phpinclude 'function.php';$sql_seleciona = mysqli_query($conn,"SELECT * FROM tabknow");$num = 0;while($opções = mysqli_fetch_object($sql_seleciona)):    if($num == 1):       $complemento = "checked";    else:      $complemento = "";    endif;    echo  " <input type='checkbox' name='opções[]' value='$opções->ID' $complemento />$opções->opcao_1      <input type='checkbox' name='opções[]' value='$opções->ID' $complemento />$opções->opcao_2      <input type='checkbox' name='opções[]' value='$opções->ID' $complemento />$opções->opcao_3      <input type='checkbox' name='opções[]' value='$opções->ID' $complemento />$opções->opcao_4      <input type='checkbox' name='opções[]' value='$opções->ID' $complemento />$opções->opcao_5     <hr/>";    endwhile?> 

Renderização no navegador:

post-386885-0-68757700-1392432554_thumb.

Postado

Olá @dif

 

Não consegui entender ainda porque está saindo esse lance de opção =/

 

E da outra forma anterior estava mais perto do que o projeto precisa, é que era somente 1 checkbox pra cada linha, nesse último ficou 5 checkbox por linha.

 

Talvez a culpa seja minha e não consegui explicar.

 

===================================================================

Te enviei o db que tinha criado com a tabela campos e valores aleatórios para teste

 

dai a saída da tabela ficou assim na imagem em miniatura naquele primeiro algoritmo

de saída que enviei:

 

show.jpg

 

Ai dif no lugar daquela bolinha preta do lado esquerdo teria que ter na verdade um checkbox, que ai com essa checkbox em cada linha, o usuário poderia escolher uma linha, e com essa linha escolhida os valores dessa linha seriam colocadas em variáveis dentro do Js.

  • Moderador
Postado

então,

 

acho que agora entendi o que você tentou explicar :D

 

você quer um checkbox por linha, mas cada linha terá dados além do label do checkbox.. 

 

Achei que querias fazer multiplos checkbox por linha baseado nos campos do seu banco. 

 

ps: Por alguma razão, o corretor ortográfico do fórum está acentuando as palavras que não podem, por ser variáveis.  na linha: 14($checkbox->opcao) 

segue o código corrigido e os prints:

<?phpinclude 'function.php';$sql_seleciona = mysqli_query ( $conn, "SELECT * FROM tabknow" );$num = 0;while ( $checkbox = mysqli_fetch_object ( $sql_seleciona ) ) :		if ($num == 1) :		$complemento = "checked";	 else :		$complemento = "";	endif;	echo " <input type='checkbox' name='checkbox[]' value='$checkbox->ID' $complemento />$checkbox->opção: $checkbox->dados1, $checkbox->dados2, $checkbox->dados3, $checkbox->dados4 <hr/>";endwhile?>

Prints:

post-386885-0-98889400-1392496480_thumb.

post-386885-0-80566500-1392496482_thumb.

post-386885-0-60089200-1392496483_thumb.

Postado

@dif

 

Man, estou com um erro por aqui apesar de ver que o seu código está funcionando normalmente pelos prints que tirou.

<?php require_once('funcoes.php')?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//PT"><html><head><meta http-equiv="content-type" content="text/html" charset="uft-8"/><title></title></head><body><?php conexao(); $sql_seleciona = mysql_query("SELECT * FROM tabknow"); $num = 0; while ($checkbox = mysqli_fetch_object( $sql_seleciona )): if ($num == 1):$complemento = "checked";else:$complemento = "";endif;echo "<input type='checkbox' name='checkbox[]' value='$checkbox->ID' $complemento />$checkbox->ciencia $checkbox->camp1 $checkbox->camp2 $checkbox->camp3 $checkbox->camp4 <hr/>";endwhile?> </body></html> 

Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, resource given in C:\Program Files (x86)\VertrigoServ\www\checkbox.php on line 18

 

 

Achei o meu erro:

$conn = mysqli_connect("localhost","root","vertrigo","knowledge")or die("Error " . mysqli_error($link));//var_dump($conn);exit;$sql_seleciona = mysqli_query($conn,"SELECT * FROM tabknow");

Belezinha, apareceu certinho os dados com o checkbox *-*

Prt_Scr_capture.jpg

 

 

Agora só ficou faltando a parte de captação dos valores da linha se o checkbox estiver marcado.

 

Por exemplo se for marcado o checkbox da linha 1 (como por exemplo o checkbox da figura acima) todos esses valores da linha  teriam que ser jogadas no Js.

 

Então se na coluna '0' o valor é "Astrofísica" lá no js vai ter uma variável recebendo esse valor  "Astrofísica".

 

Se na coluna '1' o valor é "aaaaaaa" lá no js vai ter uma variável recebendo esse valor "aaaaaaa".

 

 

============================================================================

 

 

Então ficou da seguinte forma

 

O usuário precisa selecionar o checkbox  de uma linha 

Cada coluna da linha escolhida, irá pra uma variável do Js (por exemplo  "Astrofísica" vai para a variável "ciencia" do Js )

 

 

============================================================================

 

Coloquei a $i dentro do while como você sugeriu pra identificar cada checkbox


$i = 0;while ($checkbox = mysqli_fetch_object( $sql_seleciona )): if ($num == 1):$complemento = "checked";else:$complemento = "";endif;echo "<input type='checkbox' id='checkbox[$i]' value='$checkbox->id' $complemento />$checkbox->ciencia $checkbox->camp1 $checkbox->camp2 $checkbox->camp3 $checkbox->camp4 <hr/>";$i += 1;
  • Moderador
Postado

Não tenho certeza de como pegar os valores desta maneira.. ..

 

 Mas você pode dar uma lida em um dos posts no StackOverflow sobre arrays multi-dimensionais com checkbox em php:

 

http://stackoverflow.com/questions/12493440/posting-multidimensional-array-from-checkbox

http://stackoverflow.com/questions/16268903/creating-multidimensional-array-from-textbox-and-checkbox-values

Postado

@dif

 

Man muito obrigado pela ajuda  :)  do checkbox, sobre os links achei difícil entender, vou seguir o conselho do mog e aprender sobre estrutura de dados, pra poder otimizar o banco de dados, quando tiver outra dúvida volto a postar. Valeu !! 

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!