Ir para conteúdo

Matheus Tavares

Moderadores
  • Total de itens

    1865
  • Registro em

  • Última visita

  • Dias vencidos

    32

Tudo que Matheus Tavares postou

  1. Matheus Tavares

    Regra do if

    Que legal, @biakelly, fico realmente muito feliz em saber disso! É um prazer ajudar. Bons estudos. :D
  2. Olá amigo. Seja bem-vindo. O problema é que você está enviando a variável que será comparada pelo switch (um número) e depois a compara com valores booleanos, como nota >= 9 && nota <= 10 (cujo resultado da operação seria true ou false). Em outras palavras, o que está sendo feito no seu código é algo assim: let nota = 5;// apenas um exemplo let notaD = nota > 5;// false let notaF = nota <= 5;// true if ( nota === notaD )// 5 é igual a false? console.log( 'notaD' ); if ( nota === notaF )// 5 é igual a true? console.log( 'notaF' ); // Não faz muito sentido... Geralmente nossa intenção é comparar tipos iguais Resumindo: neste caso o switch não tem muita serventia. O propósito do código é melhor atendido pelo if. Pense em switch para fazer algo como: var Animal = 'Girafa'; switch (Animal) { case 'Vaca': case 'Girafa': case 'Cachorro': case 'Porco': alert('Esse animal irá para Arca de Noé'); break; case 'Dinossauro': default: alert('Esse animal não vai.'); } Fonte do exemplo: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/switch Observe que a variável Animal é uma string e os valores comparados à ela também são strings.
  3. Matheus Tavares

    Regra do if

    Olá @biakelly, bom dia! Por aqui tudo bem, obrigado por perguntar. Vamos lá: 1 - Você precisa separar as camadas de interface (HTML) da lógica (PHP), pois dessa forma seu código será mais legível, seu editor vai colorir as palavras-chaves para você e você terá maior domínio sobre o que está acontecendo no seu código. Outro ponto fundamental é indentar corretamente (aplicar os devidos espaços ou tabs de forma a organizar a hierarquia de tags e instruções do código). Este trecho, por exemplo: echo "<div class='table-responsive data-table table-striped'>"; echo "<table id='activetrontbl' class='table vertical-align' style='width:100%'>"; Poderia ser escrito dessa forma: // estamos com a tag PHP aberta aqui. Vamos fechá-la para escrever HTML ?> <div class="table-responsive data-table table-striped"> <table id="activetrontbl" class="table vertical-align" style="width:100%"> Perceba que aqui mesmo no fórum nós já temos uma clareza maior do código, já que ele foi colorido, uma vez que o interpretador tem certeza de que não é uma mera cadeia de caracteres (string), como antes, mas um código HTML. Note ainda que eu troquei as aspas dos atributos HTML, conforme o exemplo: <img src='arquivo.jpg' alt=''> <!-- Errado --> <img src="arquivo.jpg" alt=""> <!-- Certo --> 2 - Avançando um pouco no código, encontramos este trecho: echo "<h4>$row[total] price</h4>"; Essa linha estaria mais correta conforme as explicações do meu post anterior, assim: // Chaves ao redor das variáveis. // Aspas simples na chave do array. echo "<h4>{$row['total']} price</h4>"; Mas como estamos com a tag do PHP fechada, dando continuidade ao que foi dito no item anterior, não poderíamos fazer esse echo, ao menos que a tag PHP fosse reaberta. Portanto, nesse caso, poderíamos escrever assim: //tag PHP foi fechada lá em cima... ?> <!-- Depois inserimos algum HTML por aqui... --> <h4><?php echo $row['total']; ?> price</h4> Veja que abrimos a tag PHP onde bem entendemos, chamamos o echo para imprimir uma string na tela e depois fechamos, para dar continuidade ao HTML. Também poderíamos utilizar a sintaxe reduzida da abertura de tag com echo, que torna nosso código mais sucinto: <h4><?= $row['total'] ?> price</h4> O efeito é o mesmo. 3 - Avançando mais um pouco, encontramos essa linha: echo "<input type='hidden' name='amount' value='<?php echo $row[totalbrl] * 100; ?>'>"; Perceba que já estamos dentro do contexto do PHP (entre <?php e ?>), então você corretamente chamou o echo, mas dentro do atributo value você abriu novamente a tag PHP, e isso acabou sendo enviado junto ao navegador. Se você analisar pelo código-fonte da página gerada no seu navegador vai encontrar algo como um cru "value='<?php echo ... ; ?>'", que não faz muito sentido, certo? Corrigindo esses pontos chegaríamos em um código parecido com esse, que se ainda não estiver funcionando, pelo menos está no caminho: <?php if (isset($row['userid']) && $row['status'] == 0) { ?> <div class="table-responsive data-table table-striped"> <table id="activetrontbl" class="table vertical-align" style="width:100%"> <thead> <tr class="text-center"> <th> <label>Tokens</label><br> <!-- Esse <br> deveria ser reproduzido com CSS. Talvez um padding no label ou th? --> </th> <th> <label>Quantity</label> </th> <th> <label>Total price</label> </th> </tr> </thead> <tbody> <tr class="text-center"> <td class="align-middle"> <img src="../assets/images/logo/bianet.png" width="42" alt="pricebo"> <br><small>pricebo - price</small> </td> <td class="align-middle"> <h4><?= $row['total'] ?> price</h4> </td> <td class="align-middle"> <h4>U$ <?= $row['totalinusdamount'] ?></h4> <small>R$ <?= $row['totalbrl'] ?></small> </td> </tr> </tbody> </table> </div> <form action="submit.php" method="post"> <input type="hidden" name="amount" value="<?= $row['totalbrl'] * 100 ?>"> <input type="hidden" name="total" value="<?= $row['total'] ?>"> <input type="hidden" name="userid" value="<?= $userid ?>"> <input type="hidden" name="updateid" value="<?= $row['id'] ?>"> <input type="hidden" name="name" value="<?= $fullname ?>"> <input type="hidden" name="email" value="<?= $email ?>"> <div class="d-flex justify-content-end"> <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" data-key="<?= $publishablekey ?>" data-amount="<?= $row['totalbrl'] * 100 ?>" data-name="bxb" data-quantity="<?= $row['total'] ?>" data-description="currency" data-image="../assets/images/logo/bianet.png" data-currency="brl" data-email="<?= $email ?>" ></script> </div> </form> </div><!-- Essa div parece não ter abertura nesse código. Talvez seja melhor removê-la --> <?php } else { ?> <div class="row"> <div class="col text-center"> <p><i class="text-orange h1"></i></p> <p><span class="h5">Your cart is empty!</span></p><!-- span no lugar de spam --> <p><span>Add something to make me happy ;)</span></p> </div> </div> <?php } // não há necessidade de fechar a tag PHP aberta anteriormente, pois trata-se do final do arquivo Acesse o código-fonte no seu navegador para ver se todos os atributos no HTML estão recebendo os valores corretos. Isso é fundamental para termos clareza acerca do funcionamento do botão. Lembre-se de que nem tudo que aparece no navegador é o que foi processado pelo PHP. Atributos como data-* aparecem apenas no código-fonte. Espero que consiga resolver o problema agora
  4. Matheus Tavares

    Regra do if

    Olá @biakelly, tudo bem? Vou tentar ajudar você. O erro se dá pelo fato de que você executou uma consulta no banco, mas essa consulta retornou nulo (vazio / sem registros). Quando você tenta acessar a chave 'status' com $row[ 'status' ], você está tratanto $row como um array (um conjunto de dados), quando na verdade ele é nulo, justamente por não ter encontrado registros. O seu if, então, poderia ser algo como: if ( empty( $row ) ) { // $row está vazia? Neste caso o usuário não foi encontrado Utilizando o if dessa maneira você deve conseguir resolver o problema da sua pergunta, mas se você me permitir, vou fazer algumas sugestões adicionais: 1 - Quando acessamos uma chave de um array, como em $row[ 'idade' ], 'idade é uma string, ou seja, uma cadeia de caracteres. Sempre que inserimos uma cadeia de caracteres no PHP devemos colocá-la entre aspas. Pode ser aspas duplas ( " ) ou simples ( ' ). A diferença entre as duas é que as aspas simples não vão tentar interpretar metacaracteres (como \n, \t, \r...) ou variáveis, e portanto é o que geralmente faz mais sentido ser utilizado. Portanto: // idade não está entre aspas. O PHP é esperto o bastante para tentar // entender suas intenções aqui, mas ele pode se atrapalhar em algumas situações, // se confundir com uma constante e exibir mensagens indesejáveis de erro: $row[idade] // já aqui estamos utilizando corretamente, mas particularmente acho desnecessário dizermos // ao PHP: cara, se esforce para interpretar variáveis e metacaracteres nessa string "idade" que lhe passei // Nós sabemos que é literalmente apenas "idade" e nada mais, mas o PHP não sabe disso. $row["idade"] // Portanto, a melhor opção seria: $row['idade'] 2 - Quando mandamos uma variável para o echo imprimir na tela ou para uma função, não precisamos das aspas ao redor de toda a informação, então: // Tomemos agora este exemplo: echo "$row[idade]"; // Vamos aprimorá-lo... // Não precisamos das aspas ao redor de tudo, pois estamos querendo imprimir apenas uma variável: echo $row[idade]; // Quase lá, mas lembra do que eu disse antes sobre o uso de aspas na chave dos arrays? echo $row['idade'];// Opa, agora sim! // Mas e se você quisesse inserir essa variável junto a algum texto? // Daí sim as aspas ao redor fazem total sentido. Isso poderia ser feito assim: echo "A variável possui o valor: {$row['idade']}"; // Observe que coloquei a variável entre chaves, "{" e "}". Isso explicita que trata-se de uma variável // e que o PHP deve interpretá-lo como tal, evitando alertas ou erros. // Outra forma de se chegar ao mesmo resultado seria unindo uma string (cadeira de caracteres) a uma variável, assim: echo 'A variável possui o valor: ' . $row['idade'];// Mesmo efeito do exemplo anterior // Outro exemplo: echo 'CARACTERES' . $variavel . 'MAIS CARACTERES' . $outra_var . 'BLA BLA'; Veja mais: https://www.php.net/manual/pt_BR/language.types.string.php https://www.php.net/manual/pt_BR/language.types.array.php Talvez você já saiba de tudo isso e eu esteja apenas chovendo no molhado, mas eu particularmente demorei tempo demais para entender esses detalhes quando estava começando a programar e gostaria que alguém tivesse me explicado. Teria me poupado umas boas dores de cabeça. Espero que lhe seja útil. 3 - E apenas um detalhe bobo que você com certeza sabe, mas se confundiu. A tag que você tentou inserir no exemplo é <span> e não <spam>. Vem do termo em inglês, que significa "vão" / "extensão" / "intervalo". 4 - Achei um pouco estranho você ter uma coluna chamada ID e outra userid na mesma tabela, que se chama "usuario". Parece que são dois valores para o mesmo dado. Talvez você possa dar uma atenção nesse ponto do seu código também. Esse material pode ser util nesse sentido: https://medium.com/@diegobmachado/normaliza%C3%A7%C3%A3o-em-banco-de-dados-5647cdf84a12
  5. Matheus Tavares

    Atualizando Loja virtual

    Olá amigo, tudo bem? Pelo que parece a classe pai (ISC_FORMFIELD_BASE) possui a seguinte linha: public function getFieldRequestValue($fieldName = '') E o arquivo cujo código você colou no seu post sobrescreve essa linha ignorando a existência do parâmetro opcional $fieldName, alterando a "assinatura" do método (o que é uma violação do Princípio de Substituição de Liskov, ou LSP, se quiser se aprofundar mais no assunto). Tratando-se de uma linguagem flexível como o PHP, como é o caso, isso não é necessariamente um problema no seu código. É meramente uma questão de seguir boas práticas. Solução 1, suja mas eficaz: desabilite todos os erros Strict (ou apenas ignore-os). Isso você faz adicionando ao seu PHP INI: error_reporting = E_ALL & ~E_STRICT Solução 2: coloque o parâmetro opcional $fieldName do método pai na classe filha, ou seja, copie a linha com $fieldName e cole-a na declaração do método do arquivo que você postou aqui, de forma que ambas as linhas fiquem iguais.
×

Informação importante

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