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 violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

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