Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Carlos Velho

Fazer Botão ficar Desabilitado na Contagem de Campos Iguais em uma Tabela

Mensagens Recomendadas

Carlos Velho

Prezados participantes do Fórum Portugal a Programar, saudações!

Tenho que fazer uma seleção dos campos em uma tabela para que quando tenha 3 registros iguais, um botão ativo chamado "Solicitar Informações" seja alterado para um botão desabilitado com a inscrição "Indisponível". Tentei fazer a condição para fazer um chaveamento, mas do jeito que fiz parece estar errao e não está funcionando, pois se o resultado da contagem for "3", que é a condição para que o botão fique desabilitado, aparece todos os botões da tabela como desabilitados.

Quero que, ao ser encontrado no o valor "3", na tabela apareça o botão correspondente desabilitado na tabela do Site. Isso é para limitar o número de vezes que o usuário possa enviar solicitações, mas desejo manter as informações na tabela da página.

Segue o código usado:

<!-- Elementos Carregados da Base de Dados  -->

<?php foreach($clientes as $cliente):?>
                        <tr>                      
                            <td><?=$cliente->nome?></td>
                            <td><?=$cliente->cidade?></td>
                            <td><?=$cliente->bairro?></td>
                            <td><?=$cliente->estado?></td>
                            <td><?=$cliente->gasto?></td> 
                            <td><?=$cliente->id?></td>
                            <td><?=$cliente->tipo?></td>
                            <td><?=$cliente->status?></td>
                            
     <!--    Seleciona os campos da tabela que possua conteúdos iguais -->         
                  <?php                         
$conexao = conexao::getInstance(); 

//Faz a contagem dos conteúdos iguais gravado nos campos "id_proposta"
$sql = 'SELECT id_proposta, COUNT(id_proposta) AS Qtd FROM tab_propostas
GROUP BY id_proposta HAVING COUNT(id_proposta) > 1 ORDER BY COUNT(id_proposta) DESC';

$stm = $conexao->prepare($sql);
$stm->bindValue(':id_proposta');
$stm->execute();

while($row = $stm->fetch()) {
    
    $result = $row['Qtd'];       
}
 ?>         

              <!--   Testa se conteúdo de $result retorna valor 3 -->
                         <?php  if ($result == '3') { ?>
                           
                         <!-- Botão Desabilitado se forem encotrados campos com 3 valores iguais -->

                         <td><button type="button" class="btn btn-secondary btn-lg" disabled>CLIENTE INDISPONÍVEL</button> </td> 
                         
                          <?php } else { ?>                          
                   

                          <!-- Botão Habilitado -->
                          <td> <a href='propostas.php?nome=<?=$cliente->nome?>&cidade=<?=$cliente->cidade?>&bairro=<?=$cliente->bairro?>&estado=<?=$cliente->estado?>&gasto=<?=$cliente->gasto?>&id_proposta=<?=$cliente->id?>&tipo=<?=$tipo->tipo?>&acao=incluir' class="btn btn-success">SOLICITAR INFORMAÇÕES</a></td>  

                          
                          <?php } ?>                                               
                            
                        </tr>    
                    <?php endforeach;?> 

A contagem está retornando os números de campos com valores iguais, mas não estou conseguindo fazer com que os botões desabilitados apareçam somente onde forem encontrados 3 conteúdos iguais no campo id_proposta.  Todos os campos ficam desabilitados igualmente. 

Agradeço desde já pela ajuda.

Sucesso a todos.  

Carlos  Velho

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
M6

Fiquei sem compreender se o problema é a condição que não está correta ou se a condição está correta mas o "disabled" não funciona.
Se for o "disabled" que não funciona, basta simplesmente usares um "span" em vez do "button", por exemplo.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Carlos Velho

Olá MC, tudo bem?

Obrigado por responder.

Na verdade, a explicação não está completa e vou postar com mais detalhes.

O problema é que tenho uma página com informações de clientes que desejam receber pedidos para envio de orçamentos. A fim de que não eu não receba dezenas de solicitações, eu desejo que o botão "Solicitar Informações" fique desabilitado após 3 solicitações serem pedidas. Esta s solicitações são gravadas em outra tabela (tbl_propostas) e captura o id do cliente para um campo "id_proposta" ou seja, o ID do cliente é gravado no campo "id_proposta".

Após 3 gravações no campo "id_proposta", desejo que seja feita uma condição que faça que o botão "Solicite Informações" fique inativo. O script com algus testes que fiz após o primeiro Post segue abaixo:

<?php

require 'conexao.php';
 
 // Recebe o termo de pesquisa se existir
$termo = (isset($_GET['termo'])) ? $_GET['termo'] : '';

// Verifica se o termo de pesquisa está vazio, se estiver executa uma consulta completa
if (empty($termo)):

    $conexao = conexao::getInstance();
    $sql = 'SELECT id, nome, cidade, bairro, estado, gasto, email, telefone, celular, status, tipo, foto, botao FROM tab_clientes';
    $stm = $conexao->prepare($sql);
    $stm->execute();
    $clientes = $stm->fetchAll(PDO::FETCH_OBJ);

/*

foreach ($clientes as $count) {  // Usei como testes anteriores
    
//$id_proposta = $count->id;
//$id = $count->id;

}
*/

endif;

 

#### Faço a contagem de quantas dos valores iguais no campo  "id_proposta" ####
$conexao = conexao::getInstance();
$sql = 'SELECT id_proposta, COUNT(id_proposta) AS Qtd FROM tab_propostas
GROUP BY id_proposta HAVING COUNT(id_proposta) > 1 ORDER BY COUNT(id_proposta) DESC';
$stm = $conexao->prepare($sql);
$stm->bindValue(':id_proposta');
$stm->execute();
$rows = $stm->fetchAll(PDO::FETCH_OBJ);
//$rows = $stm->fetchAll();  // Usei para testes anteriores

foreach ($rows as $listar) {
    
$id_proposta = $listar->id_proposta;
$qtd = $listar->Qtd;
echo "$qtd";
echo "$id_proposta";
}  
 

?>            <!-- Cabeçalho da Listagem -->
            <legend><h2><center>Orçamentos Solicitados</center></h2></legend>
            <!-- Formulário de Pesquisa -->
            <form action="" method="get" id='form-contato' class="form-horizontal col-md-10">
                <label class="col-md-2 control-label" for="termo">Pesquisar</label>
                <div class='col-md-7'>
                    <input type="text" class="form-control" id="termo" name="termo" placeholder="Infome o Primeiro Nome ">
                </div>
                <button type="submit" class="btn btn-primary">Pesquisar</button>
                <a href='clientes.php' class="btn btn-primary">Ver Todos</a>
            </form>

            <!-- Link para página de cadastro -->
        <!--    <a href='cadastro.php' class="btn btn-success pull-right">Cadastrar Cliente</a> -->
            <div class='clearfix'></div>

            <?php if(!empty($clientes)):?>
<br>
                <!-- Tabela de Clientes -->
                <table class="table table-striped">
                    <tr class='active'>
                        <!-- <th>Foto</th> -->
                        <th>Nome</th>
                        <th>Cidade</th>
                        <th>Bairro</th>
                        <th>Estado</th>
                       <th>Consumo KWh/Mês</th>
                        <th>Código</th>   
                         <th>Tipo de Instalação</th>
                        <th>Situação</th>
                        <th>Quero Orçar</th>
                        
                    </tr>
                    <?php foreach($clientes as $cliente):?> <!-- INÍCIO DO FOREACH -->
                   
<?php
/*

###### Repeti a Query aqui para Testes Atneriores #####
$conexao = conexao::getInstance();
$sql = 'SELECT id_proposta, COUNT(id_proposta) AS Qtd FROM tab_propostas
GROUP BY id_proposta HAVING COUNT(id_proposta) > 1 ORDER BY COUNT(id_proposta) DESC';
$stm = $conexao->prepare($sql);
$stm->bindValue(':id_proposta');
$stm->execute();
$rows = $stm->fetchAll(PDO::FETCH_OBJ);
//$rows = $stm->fetchAll();

//foreach ($rows as $listar) {
    
//$id_proposta = $rows->id_proposta;
//$qtd = $listar->Qtd;
//echo "$qtd";
//echo "$id_proposta";
//}  
                    
*/                    
                    
        ?>            
                    
                            <tr>
                            <td><?=$cliente->nome?></td>
                            <td><?=$cliente->cidade?></td>
                            <td><?=$cliente->bairro?></td>
                            <td><?=$cliente->estado?></td>
                            <td><?=$cliente->gasto?></td>
                            <td><?=$cliente->id?></td>
                            <td><?=$cliente->tipo?></td>
                            <td><?=$cliente->status?></td>
                
<?php                         

$id = $cliente->id; // Capturando o Id da tabela tab_clientes

 <!-- Do jeito que está a chamada do IF abaixo, apenas o primeiro item da tabela aparece como desabilitado. Outros que tenhas também 3 gravações na tabela tbl_propostas, permanecem ativos. No meu teste, tenho 2 campos da tabela tbl_propostas (ids 12 e com 3 propostas solicitadas. -->

 ?>               

  <!-- Quando nr de propostas for igual a 3 e id_proposta for igual a ID cliente -->


                         <?php if ($qtd == '3' && $id_proposta == $id) { ?>

                         
                         <td><button type="button" class="btn btn-secondary btn-lg" disabled>CLIENTE INDISPONÍVEL</button> </td>
                         
                          <?php } else { ?>

                          <td> <a href='propostas.php?nome=<?=$cliente->nome?>&cidade=<?=$cliente->cidade?>&bairro=<?=$cliente->bairro?>&estado=<?=$cliente->estado?>&gasto=<?=$cliente->gasto?>&id_proposta=<?=$cliente->id?>&tipo=<?=$tipo->tipo?>&acao=incluir' class="btn btn-success">SOLICITAR INFORMAÇÕES</a></td>  

                          <?php }

                          ?>

                        </tr>    


                    <?php endforeach;?>  <!-- FIM DO FOREACH -->
                </table>

Link com imagem da tela da página acima

http://www.adaptour.com.br/tela-clientes.jpg

Não sei bem trabalhar com PDO no PHP e estou com dificuldades e se puder me passar uma orientação, ficarei muito grato. Espero que agora com as informações mas detalhadas, você possa entender melhor.

Muito obrigado.😊

Carlos Velho

 

 

 

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.