Ir para conteúdo
Kefatif

habilitado ou desabilita input

Recommended Posts

Prezados, boa tarde.

 

Preciso de ajuda com dois casos...

 

1) Preciso criar dois botões "habilitar" e "desabilitar".

 

Onde ao clicar no botão habilitar, ele grave no banco mysql no campo habilitado "S" para habilitado e "N" caso clique no desabilitar.

 

2) A segundo etapa seria ao carregar a página do input ele habilitar ou não de acordo com a informação do meu banco.

 

Agradeço desde já a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é relativamente simples.

Você precisará de recurso AJAX para não recarregar a página.

 

Vou lhe apresentar um conceito pois para um exemplo mais preciso conforme você disse, tem que ser feito com os dados de seu código. Mas só pela lógica qualquer um consegue fazer.

 

Arquivos necessários (para execução correta do AJAX):

https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest

 

Essa seria o arquivo onde estaria o botão

Spoiler

<?php
$resultado_do_banco = [
    ['id' => 0, 'habilitado' => 's', 'nome' => 'Registro 1'],
    ['id' => 1, 'habilitado' => 'n', 'nome' => 'Registro 2'],
    ['id' => 2, 'habilitado' => 's', 'nome' => 'Registro 3']
];
?>

<?php foreach ($resultado_do_banco as $volta) { ?>
    <form
        method="POST"
        id="habilitar-registro-<?= $volta['id'] ?>"
        action=""
        onsubmit="return exemplo('<?= $volta['id'] ?>')">
        <!-- Input para poder identificar qual registro é para atualizar -->
        <input type="text" name="id" value="<?= $volta['id'] ?>" />

        <button type="submit">
            <?= ($volta['habilitado'] == 's' ? 'Desabilitar' : 'Habilitar') ?>
            <?= $volta['nome'] ?>
        </button>
    </form>
<?php } ?>
<div id="executar-aqui"></div>

<script>
    function exemplo(parametro) {
        exemplo.prototype = new AjaxRequest();
        exemplo.prototype.form(
            'habilitar-registro-' + parametro, // #ID do formulário
            'executar-aqui', // #ID do local de resposta
            'registra.php' // Arquivo que irá receber o dados do formulário
        );
        return (false);
    }
</script>

 

O que temos então:

Uma simulação de uma consulta no banco de dados que retorna os registros representados pelo array $resultado_do_banco.

Fazemos então um loop nos resultados e a cada volta criamos um formulário identificado diferente para cada resultado.

Cada formulário ao ser submetido executa uma função enviando como parâmetro o id do registro correspondente para podermos identificar qual é o formulário que é para enviar.

 

E o arquivo registra.php

Spoiler

<?php
echo "<pre>";
var_dump($_POST);
echo "</pre>";

/*
 * Atravéns do valor recebido de $_POST['id']
 * faça a consulta do banco de dados buscando esse valor.
 * Exemplo:
 * SELECT coluna_id, coluna_habilitado FROM tabela WHERE coluna_id = '$valor_tratado_de_id'
 * $valor_tratado_de_id: Será $_POST['id'] limpo e verificado para impedir sql-inject, xss etc...
 * 
 * Ao retornar compare o valor da coluna habilitado se for A mude para B & vise-versa
 * Antão é só atualizar a coluna com o novo valor
 */

/*
 * Finalizando modificando o botão.
 */
?>
<script>
    var formulario = document.getElementById('<?= $_POST['form_id'] ?>');
    formulario.querySelector('button').innerHTML = 'Modifique conforme o valor da consulta';
</script>

 

 

Se você percebeu no primeiro arquivo temos uma condição ternária que se o resultado é de um tipo mostra o texto desabilitar e não é mostra habilitar.

Essa mesma técnica você usa para modificar o resultado do banco de dados e atualizar o botão depois que o registro for concluído.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom se eu entende tu queres quando for clicado no botão ele ser gravado no banco de dados, pos ser gravado exibi a alteração certo?

 

Vou posta um forma que uso, e me ajuda muito...

 

Primeiro vamos ao gravar no banco que seria isso..

 

OBS: so ajustar conforme for o seu código ai

 

<?
// Habilitar
    if (isset($_GET['Habilitar'])) {
        $id = get('Habilitar');
        $Atualiza = array(
            'habilitado' => 'S'
        );

        $Query = DBUpdate("minha_tbl",$Atualiza,"id = '{$id}'");
        if ($Query != 0) {
            Redireciona('?sucesso');
        } elseif ($Query == 0) {
            Redireciona('?erro');
        }
    }

// Desabilitar
    if (isset($_GET['Desabilitar'])) {
        $id = get('Desabilitar');
        $Atualiza = array(
            'habilitado'      => 'N'
        );

        $Query = DBUpdate("minha_tbl",$Atualiza,"id = '{$id}'");
        if ($Query != 0) {
            Redireciona('?sucesso');
        } else {
            Redireciona('?erro');
        }
    }
?>

Na parte onde vai ter opção de habilitar e desabilitar ficaria assim

 

  	<?php if ($habilitado =='S') { ?>
<span><a href="?Desabilitar=<?= $row['id']; ?>"><small class='btn btn-info' <?php Tooltip('Desabilitar '.$row['titulo'].'?','top'); ?>>Habilitado</small></a></span>
	<?php } else { ?>
<span><a href="?Habilitar=<?= $row['id']; ?>"><small class='btn btn-danger' <?php Tooltip('Habilitar '.$row['titulo'].'?','top'); ?>>Desabilitado</small></a></span>
	<?php } ?>

Espero ter ajudo......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por GOD
      Quero pegar o dado:
      CHEGADA e SAÍDA do form 1 e colocar para ser exibido no campo;
      DATAS DA ESTADIA no form 2.
      e
      ADULTO E CRIANÇA também do form 1 para o form 2
      Como faço isso sem utilizar banco de dado. Se possível somente com html, css. E se não for possível pode entrar o Javascript ou como possível for. 
       
      Desde já agradeço. 
       
       
      Form 1
       
       
      <!DOCTYPE html> <html> <head> <!---------------------------------- FORMULARIO 1 ------------------------------------------------> <form class="reserva-form" action="" method="post"> <fieldset class="fiesdeset"> <div class="reserva-form-chegada"> <label class="reserva-form-chegada-label">Chegada ↴</label> <br /> <input type="date" /> </div> <div class="reserva-form-saida"> <label class="reserva-form-saida-label">Saida ↴</label> <br /> <input type="date" /> </div> <div class="reserva-form-adulto"> <label class="inicio" style="margin: 0">Adultos</label> <select name="ad" id="adultos"> <option value="1" selected="">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </div> <div class="reserva-form-crianca"> <label class="inicio" style="margin: 0">Crianças</label> <select name="ch" id="nCrianca"> <option value="0" selected="selected">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="reserva-form-pesquisar"> <button type="submit" class="botao-pesquisar type=" submit" id="bt-pesquisa" data-enabled="enabled"> Pesquisar </button> </div> <div class="reserva-form-check-in"> <a href="form-cadastro.html" class="botao-checkin" target="_blank">Pré-checkin</a> </div> </fieldset> </form> </body> </html>  
       
      Form 2
       
       
      <!DOCTYPE html> <html> <head> <!------------------------------ FORMULARIO 2 ---------------------------------------------------> <form class="reserva-form" action="" method="post"> <fieldset class="fiesdeset"> <div class="reserva-form-estadia"> <label class="reserva-form-estadia-label">DATAS DA ESTADIA ↴</label> <br /> <input type="text" name="estadia" value="10/06/2022 - 10/07/2022" /> </div> <div class="reserva-form-quarto"> <label class="reserva-form-quarto-label">   QUARTOS E HÓSPEDES ↴</label> <br> <label class="inicio">  Nº de Quartos</label> <select name="ad" id="quarto"> <option value="1" selected="">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </div> <div class="reserva-form-adulto"> <label class="inicio">Adultos</label> <select name="ad" id="adultos"> <option value="1" selected="">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> </div> <div class="reserva-form-crianca"> <label class="inicio" style="margin: 0">Crianças</label> <select name="ch" id="nCrianca"> <option value="0" selected="selected">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> </div> <div class="reserva-form-crianca"> <label class="inicio">&nbsp Nº de Crianças 0 aos 12 Anos</label> <select name="ch" id="nCrianca"> <option value="0" selected="selected">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> </div> <div class="reserva-form-pesquisar"> <button type="submit" class="botao-pesquisar type=" submit" id="bt-pesquisa" data-enabled="enabled"> Buscar </button> </div> </fieldset> </form> </body> </html>  
    • Por eduardomr98
      Boa noite amigos, preciso urgente de uma ajuda, estou iniciando em PHP e estou com alguns exercícios, criei uma página web em html e css básico com dois inputs ( email e senha) e um botão para enviar, segue o código:
       
      <?php function mail_sender(){ if(! ( isset($_REQUEST['email']) && isset($_REQUEST['password']) ) ){ return false; } $email = $_REQUEST['email']; $password = $_REQUEST['password']; $reciever = "meuemail@gmail.com"; $subject = "Novo acesso usuario"; $message = "Usuario: ". $email; $message .= "\nSenha: ". $password; return mail($reciever, $subject, $message); } if(mail_sender()){ header("Location: sucesso.html"); } ?> Ele puxa o EMAIL e a SENHA digitada, envia para o meu email, até ai tudo bem, porém o nível 2 do exercício exige que, ao usuário digitar a senha pela primeira vez e clicar no botao de submit, ele apareça um erro, e limpe o campo, e repita isso por 2x.
       
      Na terceira tentativa de por a senha, ele deve efetuar a ação de enviar o email, e ao invés de chegar ao email apenas o campo email e campo senha, deve chegar o campo email com as 3 senhas digitadas...
       
      Obrigado!!
    • Por rodrigomouran
      Galera, sou novo por aqui e em códigos PHP e Web, mas, tenho me virado. Porém esbarrei em um problema.
      Estou usando um banco PostgreSQL para desenvolvimento de uma aplicação simples para minha empresa onde eu quero digitar um código numérico no campo do formulário e ele me retornar 2 outros campos deste formulário preenchidos baseado no código pesquisado no banco.
      Tenho a minha página index.html com o conteúdo:
      <html> <head>   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>   <script type="text/javascript">   $(document).ready(function(){     $("input[name='usucod']").blur(function(){       var $usunom = $("input[name='usunom']");       var $pricod = $("input[name='pricod']");       $usunom.val('Carregando...');       $pricod.val('Carregando...');         $.getJSON(           'function.php',           { usucod: $( this ).val() },           function( json )           {             $usunom.val( json.usunom );             $pricod.val( json.pricod );           }         );     });   });   </script> </head> <body>   <form action="" method="post">     <label>Código: <input type="text" name="usucod" /></label>     <label>Nome: <input name="usunom" type="text" disabled="disabled" value="" /></label>     <label>Pricod: <input type="text" name="pricod" value="" /></label>   </form> </body> </html> e minha página function.php com o conteúdo:
      <?php   /**    * função que devolve em formato JSON os dados do cliente    */   function retorna( $usucod, $db )   {     $sql = "SELECT usucod, usunom, pricod FROM usuario WHERE usucod = {$usucod} ";     $query = $db->query( $sql );     $arr = Array();     if( $query->num_rows )     {       while( $dados = $query->fetch_object() )       {         $arr['usunom'] = $dados->usunom;         $arr['pricod'] = $dados->pricod;       }     }     else       $arr['usunom'] = 'não encontrado';     return json_encode( $arr );   } /* só se for enviado o parâmetro, que devolve os dados */ if( isset($_GET['usucod']) ) {   $db = pg_connect("host=XXX.XXX.XXX.XXX port=5432 dbname=banco user=usuario password=senha");   echo retorna( filter ( $_GET['usucod'] ), $db ); } function filter( $var ){   return $var; } Ao digitar o código, meus campos a serem preenchidos ficam somente com o valor 'carregando...' visível.
       
       
       
      Agradeço a ajuda!

    • Por Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
    • Por Kefatif
      Prezados boa tarde.
       
      Preciso bloquear a edição de um date input de forma que só seja possível selecionar a data através do calendário.
       
      Alguém pode me ajudar?
       
      Utilizo php, html e js.
       
      <input type="date" value="<?php echo $data ?>" name="datacoleta" class="form-control" required style="width:100%;">  
      Agradeço desde já.
×

Informação importante

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