Ir para conteúdo

POWERED BY:

Arquivado

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

milerfreitas

Desabilitar checkbox de acordo com valor do banco de dados

Recommended Posts

Olá pessoal!

 

Sou iniciante em PHP e preciso muito de ajuda.

 

Eu criei um form (simples campo de nome, telefone e vários checkboxes) e nele contém uma tabela gerada por PHP, nessa tabela eu tenho 50 checkboxes (listados de 00 à 49). Eu preciso ir desabilitando os checkboxes referentes a cada número conforme os números forem sendo escolhidos.

 

Aqui está o código da minha tabela que gera os checkboxes:

<?php
$zero = 0;
$numero = 0;
while ($numero < 50) {
if ($numero%5==0) {
echo "<table><tr>";
}
if ($numero < 10) {
echo "<td>";
echo "<label class='control control-checkbox'><input class='css-checkbox' type='checkbox' name='numero[]' value='$zero$numero'><div class='control_indicator'></div>$zero$numero</label>";
echo "</td>";
}

else{
echo "<td>";
echo "<label class='control control-checkbox'><input class='css-checkbox' type='checkbox' name='numero[]' value='$numero'>$numero<div class='control_indicator'></div></label>";
echo "</td>";
}
$numero++;
if($numero%5==0){
echo "</tr></table>";
}
}
?>

 

Alguém poderia me ajudar nisso??

 

Projeto pessoal mais para fins didáticos mesmo.

 

Grato! 

tabela-checkboxes.JPG

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aí tu pode fazer com javascript tipo bota no evento ao clicar

<input type='checkbox' onclick='this.disabled=true'>

ou pode criar uma função num bloco js se quiser fazer alguma validação e chamar essa função no input

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, marsolim disse:

isso aí tu pode fazer com javascript tipo bota no evento ao clicar


<input type='checkbox' onclick='this.enabled=false'>

ou pode criar uma função num bloco js se quiser fazer alguma validação e chamar essa função no input

Sim, eu sei que posso fazer em javascript, mas como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente do jeito que falei no coment anterior é só adicionar a parte do onclik na checkbox. só errei na função que é disabled=true no lugar de enabled=false.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, marsolim disse:

exatamente do jeito que falei no coment anterior é só adicionar a parte do onclik na checkbox. só errei na função que é disabled=true no lugar de enabled=false.

Td bem, isso ai eu coloco no input, mas e o restante do código, como ficaria? Precisa ter algum código javascript ne? 

 

Fiz exatamente desta forma e não consegui "desmarcar" o checkbox depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ué mas a função de desabilitar é justamente não permitir que o estado do botão seja mudado. se é pra poder mudar depois então por que desabilitar? :tounge_wink:

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, marsolim disse:

ué mas a função de desabilitar é justamente não permitir que o estado do botão seja mudado. se é pra poder mudar depois então por que desabilitar? :tounge_wink:

Então você não entendeu minha pergunta. :sweat:
Vamos supor, você entrou na minha página, colocou seu nome, telefone e escolheu os números 39 e 00, quando outra pessoa acessa a minha página eu preciso que esses números fiquem desabilitados, que apareçam lá, mas a pessoa não consiga clicar mais, pois eles já foram "reservados" por você. Entendeu? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem simples, vou lhe mostrar como eu faria:

$pdo = new PDO(/*etc...*/);
$numeros = $pdo->query("SELECT numero_escolhido FROM tabela_registro_numeros"); // fetch_all ...
$numero = 0;
while($numero < 50){
	$disabled = "false";
	if(!in_array($numero, $numeros)){ // se o numero atual NAO estiver no array de numeros selecionados do banco de dados...
		$disabled = "true";
	}
	// imprime o input...
	echo '<input type="checkbox" disabled="'.$disabled.'">';
	$numero++;
}

Resumindo:

Voce teria que selecionar primeiro todos os numeros que já foram selecionados (cadastrados no banco) e dentro do while verificar se o número que ele vai criar naquela volta do loop está na lista de números cadastrados no banco, se tiver, atribui o valor "true" para a variavel disabled que nas linhas seguintes vai assumir o valor do atributo "disabled" do input

Compartilhar este post


Link para o post
Compartilhar em outros sites

ah mas tu não tinha mencionado que era quando o número já tivesse sido escolhido por outro usuário o que deu a entender que era quando o próprio usuário escolhesse o número. aí tu pode pesquisar quais números já estão cadastrados e incluir eles numa array e na hora de dar o while($row=mysql_fetch_array) por exemplo (e ressaltando que é só um exemplo) tu verifica com um if in_array para ver se ele tá na array mas pode acontecer de outro usuário cadastrar ele antes do usuário em questão enviar os dados aí vai ter que validar também na hora de enviar os dados ou usar ajax pra pesquisar na hora que a checkbox for selecionada aí se o número ainda estiver livre, reserva ele pra outro não poder selecionar e se outro já tiver escolhido antes dá um uncheck, desabilita e avisa que outra pessoa escolheu esse número

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, marsolim disse:

ah mas tu não tinha mencionado que era quando o número já tivesse sido escolhido por outro usuário o que deu a entender que era quando o próprio usuário escolhesse o número. aí tu pode pesquisar quais números já estão cadastrados e incluir eles numa array e na hora de dar o while($row=mysql_fetch_array) por exemplo (e ressaltando que é só um exemplo) tu verifica com um if in_array para ver se ele tá na array mas pode acontecer de outro usuário cadastrar ele antes do usuário em questão enviar os dados aí vai ter que validar também na hora de enviar os dados ou usar ajax pra pesquisar na hora que a checkbox for selecionada aí se o número ainda estiver livre, reserva ele pra outro não poder selecionar e se outro já tiver escolhido antes dá um uncheck, desabilita e avisa que outra pessoa escolheu esse número

Reli minha pergunta, realmente foi mal formulada.

 

Sobre a validação na hora de enviar eu já havia pensado nisso. Mas vou por partes. Haha.

1 hora atrás, Mateus Silva disse:

Bem simples, vou lhe mostrar como eu faria:


$pdo = new PDO(/*etc...*/);
$numeros = $pdo->query("SELECT numero_escolhido FROM tabela_registro_numeros"); // fetch_all ...
$numero = 0;
while($numero < 50){
	$disabled = "false";
	if(!in_array($numero, $numeros)){ // se o numero atual NAO estiver no array de numeros selecionados do banco de dados...
		$disabled = "true";
	}
	// imprime o input...
	echo '<input type="checkbox" disabled="'.$disabled.'">';
	$numero++;
}

Resumindo:

Voce teria que selecionar primeiro todos os numeros que já foram selecionados (cadastrados no banco) e dentro do while verificar se o número que ele vai criar naquela volta do loop está na lista de números cadastrados no banco, se tiver, atribui o valor "true" para a variavel disabled que nas linhas seguintes vai assumir o valor do atributo "disabled" do input

Vou testar essa solução e posto o resultado. Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Mateus Silva disse:

Bem simples, vou lhe mostrar como eu faria:


$pdo = new PDO(/*etc...*/);
$numeros = $pdo->query("SELECT numero_escolhido FROM tabela_registro_numeros"); // fetch_all ...
$numero = 0;
while($numero < 50){
	$disabled = "false";
	if(!in_array($numero, $numeros)){ // se o numero atual NAO estiver no array de numeros selecionados do banco de dados...
		$disabled = "true";
	}
	// imprime o input...
	echo '<input type="checkbox" disabled="'.$disabled.'">';
	$numero++;
}

Resumindo:

Voce teria que selecionar primeiro todos os numeros que já foram selecionados (cadastrados no banco) e dentro do while verificar se o número que ele vai criar naquela volta do loop está na lista de números cadastrados no banco, se tiver, atribui o valor "true" para a variavel disabled que nas linhas seguintes vai assumir o valor do atributo "disabled" do input

Não funciona de jeito nenhum. hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.