Jump to content
Carlos Velho

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

Recommended Posts

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

 

Share this post


Link to post
Share on other 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."

 

Share this post


Link to post
Share on other 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

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.