Jump to content

Search the Community

Showing results for tags 'php'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade, Finanças e Admin. Pública
    • Dúvidas e Discussão de Programação
    • Tutoriais
    • Snippets / Armazém de Código
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Adampt

    Imagem em FPDF

    Boa tarde. Estou a criar cartões de identificação dos funcionários de uma empresa, os quais deverão ser convertidos em PDF para posterior impressão. Para tal estou a utilizar o FPDF e está tudo a funcionar na perfeição, mas acontece que tenho de colocar a foto do funcionário que está no formato quadrado e pedem-me que seja em formato circular. Há possibilidade de fazer esta conversão? Se sim, como? Desde já, o meu obrigado
  2. Boa tarde, Alguem já conseguiu criar uam pagina PHP para criar artigos no PHC ?
  3. Olá amigos. Preciso bloquear o acesso à página de edição de dados de um determinado jogador que faz parte de uma determinada equipa. Apenas um utilizador (diretor da equipa) registado e com login efetuado pode aceder a esta página (até aqui tudo bem) para alterar os dados desse jogador. Pretendo bloquear esta página para que o acesso seja feito apenas a partir de um boão (editar) colocado à frente do nome do jogador e não com copy/paste do link ou com alteração dos dados que aparecem no link como seja, o id do jogador e o id da equipa. Já tentei várias soluções mas sem sucesso. O botão editar tem o seguinte código <a href='fedit_elementogrupo.php?idelemento=<?php echo $linhas['idgel']; ?>&idgrupo2=<?php echo $grupo; ?>'> <button type='button' class='btn btn-xs btn-warning' name='edit' id='edit'><?php echo $lang['ede2'] ?></button></a>
  4. Boa noite. Tenho um sistema para registo de nomes que podem ser de pessoas ou empresas de todo o mundo. Neste sistema tenho uma opção para gerar um relatório em PDF em que estou utilizando o FPDF. Acontece que, tendo nomes de diferentes países, também tem caracteres especiais como por exemplo "čić", mas que ao passar para o relatório aparece como "?I?". Já tentei com diversas opções que encontrei na internet (utf8_encode, utf8_decode, entre outras), mas nenhuma delas resultou. Existe alguma forma de resolver esta situação?
  5. <?php // Require composer autoload require '../pdf/fpdf.php'; $db = new PDO('mysql:host=localhost;dbname=******', 'root', ''); class myPDF extends FPDF { public function header() { $ano = $_POST['ano']; $this->Image('../fimg/image.png', 10, 6, 50); $this->SetFont('arial', 'B', 14); $this->Cell(260, 5, 'RESTRIÇÕES ALIMENTARES', 0, 0, 'C'); $this->Ln(); $this->SetFont('arial', '', 12); $this->Cell(260, 10, 'Ano: ' . $ano, 0, 0, 'C'); $this->Ln(30); } public function footer() { $this->SetY(-15); $this->SetFont('arial', '', 8); $this->Cell(0, 10, 'Página ' . $this->PageNo() . '/{nb}', 0, 0, 'C'); } public function headerTable() { $this->SetFont('arial', 'B', 14); $this->cell(10); $this->cell(260, 10, 'LISTAGEM', 1, 0, 'C'); $this->Ln(); $this->cell(10); $this->SetFont('arial', 'B', 12); //$this->Cell(100, 7, 'Grupo', 1, 0, 'C'); $this->Cell(70, 7, 'País', 1, 0, 'C'); $this->Cell(100, 7, 'Nome', 1, 0, 'C'); $this->Cell(90, 7, 'Restrição', 1, 0, 'C'); $this->Ln(); } public function viewtable($db) { $ano = $_POST['ano']; $this->SetFont('times', '', 9); $stmt = $db->query("SELECT tbl_grupos.*, tbl_inscricoes.*, tbl_elementos_grupos.* FROM tbl_grupos LEFT JOIN tbl_inscricoes ON tbl_grupos.idgrupo = tbl_inscricoes.idgrupo LEFT JOIN tbl_elementos_grupos ON tbl_grupos.idgrupo = tbl_elementos_grupos.idgrupo WHERE tbl_inscricoes.anoinscricao = $ano AND tbl_inscricoes.validado = 1 AND tbl_elementos_grupos.restricoesgel!='Nenhuma' OR tbl_elementos_grupos.restricoesoutrogel!='' GROUP BY tbl_elementos_grupos.nomegel ORDER BY tbl_elementos_grupos.idgrupo ASC"); while ($data = $stmt->fetch(PDO::FETCH_OBJ)) { $this->SetFont('arial', '', 9); $this->cell(10); //$this->cell(100, 7, base64_decode($data->gnome), 1, 0, 'J'); $this->Cell(70, 7, base64_decode($data->gpais), 1, 0, 'C'); $this->Cell(100, 7, base64_decode($data->nomegel), 1, 0, 'C'); $this->Cell(90, 7, $data->restricoesgel . ', ' . $data->restricoesoutrogel, 1, 0, 'C'); $this->Ln(); } } } $pdf = new myPDF(); $pdf->AliasNbPages(); $pdf->AddPage('L', 'A4', 0); $pdf->headerTable(); $pdf->viewtable($db); $pdf->Ln(15); $pdf->Output(); ?> <script src="../js/sweetalert.js"></script> Bom dia. Tenho o código acima para gerar um relatório baseado em 3 tabelas. Preciso que o relatório me apresente apenas os dados relativos a restrições alimentares para os grupos que estejam inscritos e aprovados para participar nas atividades em um determinado ano. Com o código acima, são-me apresentados os dados de todos os elementos que tenham restrições allimentares independentemente do ano para que tenham sido aprovados. Poderiam ajudar-me com esta situação? Já tentei de diversas formas mas não funciona corretamente.
  6. Boa tarde, Tenho o códigos abaixo que esta a funcionar. Ele é da seguinte forma, se selecionar Portugal, aparece três campos select para selecionar o distrito, concelho e freguesia, caso escolha outra País esses campos ficam ocultos. <!-- Campo select Pais --> <div class="column"> <label for="adms_pais_id" class="title-input">País:<span class="text-danger">*</span> </label> <select class="input-adm" name="adms_pais_id" id="adms_pais_id"> <option value="">Selecione</option> <?php foreach ($this->data['pais']['pais'] as $pais) { extract($pais); if ((isset($valorForm['adms_pais_id'])) and ($valorForm['adms_pais_id'] == $id)) { echo "<option value='$id' selected>$name_pais</option>"; } else { echo "<option value='$id'>$name_pais</option>"; } } ?> </select> </div> <!-- Campos Selects de Distrito, Concelho e Freguesia --> <label for="localidade" class="title-input">Autarquivas ou Localidade do Nascimento:</label> <div class="row-input" id="divLocalidade"> <div class="column"> <?php $localidade_nascimento = ''; if (isset($valorForm['localidade_nascimento'])) { $localidade_nascimento = $valorForm['localidade_nascimento']; } ?> <label for="localidade_nascimento" class="title-input">Localidade do Nascimento:<span class="text-danger">*</span></label> <input type="text" name="localidade_nascimento" id="localidade_nascimento" class="input-adm" placeholder="Digite a localidade do nascimento" autocomplete="off" value="<?php echo $localidade_nascimento; ?>"> </div> </div> <div class="row-input" id="divAutarquias"> <div class="column"> <label for="adms_dist_nasc_id" class="title-input">Distrito:</label> <select class="input-adm" name="adms_dist_nasc_id" id="adms_distrito_id2" onchange="selectConcelho(2)"> <option value="">Selecione</option> <?php foreach ($this->data['distritonasc']['distnasc'] as $distnasc) { extract($distnasc); if ((isset($valorForm['adms_dist_nasc_id'])) and ($valorForm['adms_dist_nasc_id'] == $id_distnasc)) { echo "<option value='$id_distnasc' selected>$name_distrito</option>"; } else { echo "<option value='$id_distnasc'>$name_distrito</option>"; } } ?> </select> </div> <div class="column"> <label for="adms_conc_nasc_id" class="title-input">Concelho:</label> <select class="input-adm" name="adms_conc_nasc_id" id="adms_concelho_id2" onchange="selectFreguesia(2)"> <option value="">Selecione</option> <?php foreach ($this->data['concelhonasc']['concnasc'] as $concnasc) { extract($concnasc); if ((isset($valorForm['adms_conc_nasc_id'])) and ($valorForm['adms_conc_nasc_id'] == $id_concnasc)) { echo "<option value='$id_concnasc' selected>$name_concelho</option>"; } else { echo "<option value='$id_concnasc'>$name_concelho</option>"; } } ?> </select> </div> <div class="column"> <label for="adms_freg_nasc_id" class="title-input">Freguesia:</label> <select class="input-adm" name="adms_freg_nasc_id" id="adms_freguesia_id2"> <option value="">Selecione</option> <?php foreach ($this->data['freguesianasc']['fregnasc'] as $fregnasc) { extract($fregnasc); if ((isset($valorForm['adms_freg_nasc_id'])) and ($valorForm['adms_freg_nasc_id'] == $id_fregnasc)) { echo "<option value='$id_fregnasc' selected>$name_freguesia</option>"; } else { echo "<option value='$id_fregnasc'>$name_freguesia</option>"; } } ?> </select> </div> </div> //Ativa/oculta campos do Formulário de Processo de Funerais // Receber o pais da nacionlidade do falecido para exibir ou ocultar a autrarquias const adms_pais_nasc_falecido = document.getElementById('adms_pais_id') const divLocalidade = document.getElementById('divLocalidade') const divAutarquias = document.getElementById('divAutarquias') adms_pais_nasc_falecido.addEventListener('change', function (event) { if (event.target.value == '1') { divLocalidade.style.display = 'grid' divAutarquias.style.display = 'grid' } else { divLocalidade.style.display = 'grid' divAutarquias.style.display = 'none' } }) O meu problema é o seguinte: Fiz o mesmo para outros campos mas não funciona e não consigo achar o erro, se alguém conseguir ajudar fico muito grato. <div class="row-input"> <div class="column"> <label for="adms_estado_civil_id" class="title-input">Estado Civil:</label> <select class="input-adm" name="adms_estado_civil_id" id="adms_estado_civil_id"> <option value="">Selecione</option> <?php foreach ($this->data['estadocivil']['estado'] as $estado) {extract($estado); if ((isset($valorForm['adms_estado_civil_id'])) and ($valorForm['adms_estado_civil_id'] == $id)) { echo "<option value='$id' selected>$name_estado</option>"; } else { echo "<option value='$id'>$name_estado</option>"; } } ?> </select> </div> <div class="column" id="genero_conjuge"> <label for="adms_gen_conjuge_id" class="title-input">Gênero:<span class="text-danger">*</span> </label> <select class="input-adm" name="adms_gen_conjuge_id" id="adms_gen_conjuge_id"> <option value="">Selecione</option> <?php foreach ($this->data['genero']['gen'] as $genero) { extract($genero); if ((isset($valorForm['adms_gen_conjuge_id'])) and ($valorForm['adms_gen_conjuge_id'] == $id)) { echo "<option value='$id' selected>$name_genero</option>"; } else { echo "<option value='$id'>$name_genero</option>"; } }?> </select> </div> </div> //Recebe o estado civil do conjuge const adms_est_civil = document.getElementById('adms_estado_civil_id') const divEstCivil = document.getElementById('genero_conjuge') adms_est_civil.addEventListener('change', function (e) { if (e.target.value == '2') { divEstCivil.style.visibility = 'hidden' } else { divEstCivil.style.visibility = 'visible' } }) lembrando que já coloquei "divEstCivil.style.visibility = 'hidden'" e "divEstCivil.style.display = 'none'"
  7. Olá, tudo bem? Esse é meu primeiro post aqui, então não sei como postar o código. Vou tentar explicar. Eu tenho vários input files em uma página de projeto de upload de imagens. O objetivo é redimensionar a imagem para 800 por 600 antes do upload. Isso já está ok. Agora preciso atualizar o src do input file clicado (target.src) com essas dimensões para enviar para o recebe.php. Agradeço desde já <form action="./recebe.php" method="post" id="form" enctype="multipart/form-data"> <input type="file" accept="image/*" id="image1" name="img1[]"> <br><br> <input type="file" accept="image/*" id="image2" name="img1[]"> <br><br> <input type="file" accept="image/*" id="image3" name="img2[]"> <br><br> <input type="file" accept="image/*" id="image4" name="img2[]"> <br><br> <button> Enviar </button> </form> <script type="text/javascript"> let form = document.querySelector("#form"); form .addEventListener("change", (e)=>{ e.preventDefault(); var file = e.target.files[0];//input clicado const reader = new FileReader(); reader.readAsDataURL(file); reader.name = file.name; reader.size = file.size; reader.onload = function (event) { var img = new Image(); img.src = event.target.result; img.onload = function (el) { var elem = document.createElement('canvas'); elem.width = 800; elem.height = 600; var ctx = elem.getContext('2d'); ctx.drawImage(el.target, 0, 0, elem.width, elem.height); var srcEncoded = ctx.canvas.toDataURL('image/jpeg', 0.5); console.log(srcEncoded);//Aqui está okay e.target.src = srcEncoded; //Estou aqui. Mas não deu certo, o recebe.php faz upload da imagem original. //Preciso atualizar o próprio input file clicado para enviar essa imagem com essas dimensões 800x600 //Com o mesmo input file que é clicado //Issoctx.canvas.toDataURL('image/jpeg', 0.5); retorna obase64, não sei se é isso mesmo. } } }); </script> ==============Arquivo recebe.php <?php //Aqui como eu faço para ele fazer o upload // O $_FILES['img1']['tmp_name'][0] , por exemplo, recebera o data:image/jpeg;base64,.... //Como converto ele para imagem jpeg move_uploaded_file($_FILES['img1']['tmp_name'][0], $_FILES['img1']['name'][0]); move_uploaded_file($_FILES['img1']['tmp_name'][1], $_FILES['img1']['name'][1]); move_uploaded_file($_FILES['img2']['tmp_name'][0], $_FILES['img2']['name'][0]); move_uploaded_file($_FILES['img2']['tmp_name'][1], $_FILES['img2']['name'][0]); ?>
  8. Boa noite amigos. Tenho uma página web para apresentar os dados da tabela, os quais deverão ser separados por categoria e uso o seguinte código: <div class="container" style="align-items:center; width:90%"> <?php $categorias = mysqli_query($conectar, "SELECT * FROM tbl_cateventos ORDER BY idcatevento ASC"); $linhas2 = mysqli_fetch_array($categorias); $total = mysqli_num_rows($categorias); $i = 1; while ($i <= $total) : $catdesc = mysqli_query($conectar, "SELECT * FROM tbl_cateventos WHERE idcatevento=$i"); $catresulta = mysqli_fetch_array($catdesc); ?> <div class="heading"> <h1> <?php echo $catresulta['descatevento'] . ' - ' . $i ?> </h1> </div> <?php $sql = mysqli_query($conectar, "SELECT * FROM tbl_menueventos WHERE categoria=$i ORDER BY descritivo ASC"); ?> <table id="example" class="table table-striped table-bordered"> <thead> <tr> <th>Descritivo</th> <th>Preço por unidade</th> <th>Preço por pessoa</th> <th>Preço por Kg</th> <th>Tabuleiro p/ 4 pessoas</th> <th>Tabuleiro p/ 6 pessoas</th> <th>Tabuleiro p/ 10 pessoas</th> <th>Tabukeiro p/ 15 pessoas</th> <th>Mínimo para encomenda</th> </tr> </thead> <?php while ($linhas = mysqli_fetch_array($sql)) : echo "<tr>"; echo "<td>" . $linhas['descritivo'] . "</td>"; echo "<td>" . $linhas['unidade'] . "</td>"; echo "<td>" . $linhas['pessoa'] . "€" . "</td>"; echo "<td>" . $linhas['kg'] . "€" . "</td>"; echo "<td>" . $linhas['tab4'] . "€" . "</td>"; echo "<td>" . $linhas['tab6'] . "€" . "</td>"; echo "<td>" . $linhas['tab10'] . "€" . "</td>"; echo "<td>" . $linhas['tab15'] . "€" . "</td>"; echo "<td>" . $linhas['minimo'] . "</td>"; endwhile; $i++; endwhile; ?> </table> </div> Acontece que os dados são apresentados, mas os dados referentes ao código do primeiro evento aparecem associados ao segundo código e assim sucessivamente, sendo que os dados referentes ao último código não são apresentados.
  9. Boas, tudo bem? Já percorri bastantes sites e nada do que encontrei ajuda deixo aqui o codigo html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <link rel="stylesheet" href="index.css"> <title>SaniProArt</title> </head> <body> <div class="wrapper"> <nav class="nav"> <div class="nav-logo"> <img src="imagens/Logo.png" alt="Logo" width="100"> </div> <div class="nav-menu" id="navMenu"> <ul> <li><a href="index.html" class="link active">Início</a></li> <li><a href="servicos.html" class="link">Serviços</a></li> <li><a href="sobrenos.html" class="link">Sobre nós</a></li> </ul> </div> <div class="nav-button"> <a href='login.php'><button class="btn white-btn" id="loginBtn" onclick="login()">Login</button></a> <a href='Cadastrar.php'><button class="btn" id="registerBtn" onclick="register()">Registo</button></a> </div> <div class="nav-menu-btn"> <i class="bx bx-menu" onclick="myMenuFunction()"></i> </div> </nav> <div class="container mt-5"> <h1 class="text-center">Perguntas Frequentes</h1> <div class="text-center p-2"><h6>Tem alguma questão ? Estamos aqui para ajudar</h6></div> <br> <div class="row mb-2 align-middle text-center" > <div class="accordion" id="accordionFlushExample"> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne"> Em que zona do país atuam? </button> </h2> <div id="flush-collapseOne" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample"> <div class="accordion-body">Atuamos apenas na região sul do país. mais concretamente da zona de Lagos até Almancil.</div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseTwo" aria-expanded="false" aria-controls="flush-collapseTwo"> Como posso solicitar os vossos serviços?</button> </h2> <div id="flush-collapseTwo" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample"> <div class="accordion-body"> Pode solicitar os nossos serviços preenchendo o formulário de contato no nosso website ou entrando em contato diretamente pelo telefone. Estamos aqui para ajudá-lo!</div> </div> </div> <div class="accordion-item"> <h2 class="accordion-header"> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseThree" aria-expanded="false" aria-controls="flush-collapseThree"> Qual é o nosso horário de funcionamento? </button> </h2><div id="flush-collapseThree" class="accordion-collapse collapse" data-bs-parent="#accordionFlushExample"> <div class="accordion-body">Estamos em funcionamento de segunda a sábado, das 8h às 18h.</div> </div> </div> </div> </div> <br class=""> <footer id="footer" class="text-center align-center text-lg-start bg-body-tertiary text-muted fixed-bottom" style="min-width: 700px; width: 100vw;" > <section class="d-flex justify-content-center justify-content-lg-between p-4 border-bottom"> <div class="col-md-4 col-lg-3 col-xl-3 mx-auto mb-md-0 mb-4"> <h6 class="text-uppercase fw-bold mb-4 text-start">Contacto</h6> <p><i class="fas fa-home me-3 text-start"></i>Alcantarilha 8365-203</p> <p> <i class="fas fa-envelope me-3 text-start"></i> saniproart@gmail.com </p> <p><i class="fas fa-phone me-3 text-start"></i> +351 965 637 393</p> </div> </div> </div> </section> </footer> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> </body> </html> e o css < @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap'); *{ margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body{ background-image: url('imagens/Fundo.jpg'); background-size: cover; background-repeat: no-repeat; background-position: center; overflow: hidden; } .wrapper{ display: flex; justify-content: center; align-items: center; min-height: 110vh; background: rgba(39, 39, 39, 0.4); } .nav{ position: fixed; top: 0; display: flex; justify-content: space-around; width: 100%; height: 100px; line-height: 100px; background: linear-gradient(rgba(39,39,39, 0.6), transparent); z-index: 100; } .nav-logo p{ color: white; font-size: 25px; font-weight: 600; } .nav-menu ul{ display: flex; } .nav-menu ul li{ list-style-type: none; } .nav-menu ul li .link{ text-decoration: none; font-weight: 500; color: #fff; padding-bottom: 15px; margin: 0 25px; } .link:hover, .active{ border-bottom: 2px solid #fff; } .nav-button .btn{ width: 130px; height: 40px; font-weight: 500; background: rgba(255, 255, 255, 0.4); border: none; border-radius: 30px; cursor: pointer; transition: .3s ease; } .btn:hover{ background: rgba(255, 255, 255, 0.3); } #registerBtn{ margin-left: 15px; } .btn.white-btn{ background: rgba(255, 255, 255, 0.7); } .btn.btn.white-btn:hover{ background: rgba(255, 255, 255, 0.5); } .nav-menu-btn{ display: none; } .form-box{ position: relative; display: flex; align-items: center; justify-content: center; width: 512px; height: 420px; overflow: hidden; z-index: 2; } .login-container{ position: absolute; left: 4px; width: 500px; display: flex; flex-direction: column; transition: .5s ease-in-out; } .register-container{ position: absolute; right: -520px; width: 500px; display: flex; flex-direction: column; transition: .5s ease-in-out; } .top span{ color: #fff; font-size: small; padding: 10px 0; display: flex; justify-content: center; } .top span a{ font-weight: 500; color: #fff; margin-left: 5px; } header{ color: #fff; font-size: 30px; text-align: center; padding: 10px 0 30px 0; } .two-forms{ display: flex; gap: 10px; } .input-field{ font-size: 15px; background: rgba(255, 255, 255, 0.2); color: #fff; height: 50px; width: 100%; padding: 0 10px 0 45px; border: none; border-radius: 30px; outline: none; transition: .2s ease; } .input-field:hover, .input-field:focus{ background: rgba(255, 255, 255, 0.25); } ::-webkit-input-placeholder{ color: #fff; } .input-box i{ position: relative; top: -35px; left: 17px; color: #fff; } .submit{ font-size: 15px; font-weight: 500; color: black; height: 45px; width: 100%; border: none; border-radius: 30px; outline: none; background: rgba(255, 255, 255, 0.7); cursor: pointer; transition: .3s ease-in-out; } .submit:hover{ background: rgba(255, 255, 255, 0.5); box-shadow: 1px 5px 7px 1px rgba(0, 0, 0, 0.2); } .two-col{ display: flex; justify-content: space-between; color: #fff; font-size: small; margin-top: 10px; } .two-col .one{ display: flex; gap: 5px; } .two label a{ text-decoration: none; color: #fff; } .two label a:hover{ text-decoration: underline; } @media only screen and (max-width: 786px){ .nav-button{ display: none; } .nav-menu.responsive{ top: 100px; } .nav-menu{ position: absolute; top: -800px; display: flex; justify-content: center; background: rgba(255, 255, 255, 0.2); width: 100%; height: 90vh; backdrop-filter: blur(20px); transition: .3s; } .nav-menu ul{ flex-direction: column; text-align: center; } .nav-menu-btn{ display: block; } .nav-menu-btn i{ font-size: 25px; color: #fff; padding: 10px; background: rgba(255, 255, 255, 0.2); border-radius: 50%; cursor: pointer; transition: .3s; } .nav-menu-btn i:hover{ background: rgba(255, 255, 255, 0.15); } } @media only screen and (max-width: 540px) { .wrapper{ min-height: 100vh; } .form-box{ width: 100%; height: 500px; } .register-container, .login-container{ width: 100%; padding: 0 20px; } .register-container .two-forms{ flex-direction: column; gap: 0; } } footer { position: absolute; bottom: 100%; width: 100%; background-color: transparent !important; } :root footer { background-color: transparent !important; } >
  10. Por enquanto a combinação XAMPP/Windows é o único cenário é está confirmado que o ataque é possível.
  11. Olá, Numa regra que estou a construir em PHP (aplicação web) em que valida a introdução de dados do utilizador, tenho o seguinte: 'utilizador' => 'required|regex:/[0-9]{9}\/[0-9]{4}/' Acontece que ele está a cumprir todos os casos exceto se eu colocar mais do que um dígito (a partir de 5, supostamente só pode pôr exatamente 4) na última regra "[0-9]{4}", por exemplo: ->123456789/123 (não aceita -> certo) ->123456789//123 (não aceita -> certo) ->123456789/1234 (aceita -> certo) -> 123456789/12345 (aceita -> errado) e se eu acrescentar mais números ele vai sempre aceitando. Alguém me dá alguma dica para ultrapassar este problema?
  12. Boas tarde, Não estou a conseguir apanhar a variavel nome no verificar2.php que vem do javascript, penso que pode ser um erro simples mas não estou a descobrir. Agradecia uma ajudita. Index.php <select id="nomes" name="nomes" > <option value="CD01">CD01</option> <option value="CD14">CD14</option> <option value="CD15">CD15</option> </select> <img id="imagem" src="" alt="Imagem"> <script src="script.js"></script> script.js const selectNomes = document.getElementById('nomes'); const imagem = document.getElementById('imagem'); selectNomes.addEventListener('change', () => { const nome = selectNomes.value; //alert($('#nomes').val()); const xhr = new XMLHttpRequest(); xhr.open('POST', 'verificar2.php'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onload = () => { if (xhr.status === 200) { imagem.src = `${xhr.responseText}`; } else { console.error('Erro ao buscar imagem.'); } }; xhr.send(`nome=$`); }); verificar2.php <?php session_start(); $nome = $_POST['nome']; // Conectando ao banco de dados $conexao = mysqli_connect("localhost", "root", "PASS","BD"); // Buscando a imagem $sql = "SELECT foto_painel FROM tb_preco_97 WHERE modelo = '$nome'"; $resultado = mysqli_query($conexao, $sql); $imagem = mysqli_fetch_assoc($resultado)['foto_painel']; // Fechando a conexão mysqli_close($conexao); // Retornando a imagem header('Content-Type: image/jpeg'); echo $imagem; ?>
  13. Bom dia, Precisava da vossa preciosa ajuda, dado que já são alguns dias a tentar e não estou a conseguir chegar à conclusão pretendida 😄 Ora, basicamente temos uma loja online e gostaria de modificar a label por baixo do método de envio (hook: woocommerce_cart_shipping_method_full_label) baseado no estado de stock dos produtos existentes no carrinho. Basicamente, caso exista 1 produto que o estado de stock seja "por encomenda" então a label do método de envio 1 = "48/72h" e a label do método de envio 2 = "48/72h". Caso exista 1 produto que seja "stock limitado" então label do método de envio 1 = "24/48h" e a label do método de envio 2 = "48/72h". Caso contrário (isto é, todos os produtos estejam "em stock") a label = ""Envio até às 16h". A minha tentativa mais próxima deu nisto : (mas ele verifica em cada produto, ou seja, adiciona uma label tantas vezes quantas o número de produtos do carrinho) <?php add_filter( 'woocommerce_cart_item_name', 'custom_text_based_status_name', 10, 3 ); function custom_text_based_status_name( $item_name, $cart_item, $cart_item_key ) { if( ! ( is_checkout() ) ) return $item_name; $shipping_class_1 = 'onbackorder'; $shipping_class = $cart_item['data']->get_stock_status(); if( $shipping_class === $shipping_class_1 ) { add_filter( 'woocommerce_cart_shipping_method_full_label', 'custom_shipping_methods_label', 10, 2 ); function custom_shipping_methods_label( $label, $method ) { switch ( $method->id ) { case 'fish_n_ships:62': //Portugal Continental - Transportadora $txt = __('Expedição estimada: 24 a 48h úteis'); // <= Additional text break; case 'fish_n_ships:63': //Portugal Continental - Gratuito $txt = __('Expedição estimada: 72 a 96h úteis'); // <= Additional text break; default: //nos restantes casos $txt = __('Confirmaremos assim que possível'); // <= Additional text } return $label . '<br /><small style="color:#777777">' . $txt . '</small>'; } } return $item_name; } Já faz dias que ando de volta disto a tentar e sem solução à vista. Alguém pode ajudar? Obrigado 😃
  14. Boas tardes, Ainda sou novo em ajax, e a minha atual dificuldade é ,a seguinte, pretendo através do php fazer uma chamada ao banco de dados mysql de um nome ( tou usar o option) , e preciso que retorne a imagem desse nome, ou seja se eu selecionar a maria aparece a foto da maria, se eu selecionar o manel aparece a foto manel. Obrigado
  15. Olá a todos, Calcular a media de ratings e mostrar, estou tentando assim, mas somente mostra o ultimo $reviews =DB::table('reviews') ->select('title_id','score','body','author', DB::raw('AVG(`score`) AS `votos`'))->groupBy('title_id')->get(); e no blade @foreach($reviews as $p) @if($p->title_id == $cl->id) <div class="rating"> @for($i = 0; $i < 10; $i++) <span><img src="/assets/images/star.png{{ $p->votos <= $i ? '-o' : '' }}" width="20" height="20"></span> @endfor </div> @endif sou grato por qualquer ajuda
  16. adaptei o projeto abaixo em meu projeto: https://youtu.be/m49I783h_9s?si=xmEknj6biQexrGJh só que devolve seguinte erro, penso que o erro esteja no javascript: Uncaught (in promise) SyntaxError: Unexpected token '<', " <!DOCTYPE "... is not valid JSON await (assíncrono) onkeyup @ index:215 meu java esta assim: async function searchProdutos(registo){ // Receber a URL do HTML const urlAdm = document.getElementById('url-adm').getAttribute('data-url-adm'); //recebe o valor que o usuário digitar const codigoBarras = document.querySelector('#codigo_barras'+registo); //Recebe o value da const codigoBarras const valueCodigoBarras = codigoBarras.value; // Verificar se o campo tem 7 digitos if (valueCodigoBarras.length == 7) { //faz a requisição ao file add-receber-encomenda.php const response = await fetch(urlAdm + 'add-receber-encomenda/index?searchCodigo=' + valueCodigoBarras); //Ler os dados retornado do PHP const data = await response.json(); if(data['erro']) { document.getElementById('adms_produto_id').innerHTML = data['msg']; }else{ document.getElementById("adms_produto_id").innerHTML = ""; document.getElementById("adms_produto_id").value = data['response'].produto; } } } na controler tenho: //Receber o codigo de barras do produto $searchCodigo = filter_input(INPUT_GET, "searchCodigo", FILTER_SANITIZE_NUMBER_INT); if (!empty($searchCodigo)) { $listProduct = new \App\adms\Models\stock\AdmsAddReceberEnc(); $listProduct->searchProduto($searchCodigo); $retorna = ['erro' => false, 'dados' => $listProduct]; } else { $retorna = ['erro' => true, 'msg' => "<div class='alert alert-danger'>Nenhum Produto encontrado!</div>"]; } na model tenho: public function searchProduto($codigoBarras = null) { $this->data['codigo_barras'] = $codigoBarras; $listProduto = new \App\adms\helpers\AdmsRead(); $listProduto->fullRead("SELECT id, produto, codigo_barras, venda, stock FROM adms_produtos WHERE codigo_barras =:codigo_barras LIMIT :limit", "codigo_barras={$this->data['codigo_barras']}&limit=1"); $this->resultBd = $listProduto->getResult(); if ($this->resultBd) { $retorna = ['erro' => false, 'dados' => $this->resultBd]; } else { $retorna = ['erro' => true, 'msg' => "<p style='color: #f00'>Erro: Nenhum Produto encontrado!</p>"]; } }
  17. Boa tarde a todos, tenho em meu formulário o seguinte input <input type="text" name="codigo_barras[]" id="codigo_barras" onkeyup="searchProdutos(1)" class="input-adm sizefour" autocomplete="on" required> no meu javascript tenho o seguinte: function searchProdutos(registo){ //recebe o valor que o usuário digitar const codigoBarras = document.querySelector('#codigo_barras'+registo); const valueCodigoBarras = codigoBarras.value; } Conforme começo a digitar no campo ocorre o seguinte erro: custom_adms.js:1014 Uncaught TypeError: Cannot read properties of null (reading 'value') at searchProdutos (custom_adms.js:1014:42) at HTMLInputElement.onkeyup (index:215:163) Já alterei o name e id de "código_barras" para "codigoBarras" ou "codigobarras" e continua o mesmo.
  18. Boa noite a todos, tenho um formulário como se fosse um carrinho de compras. no form tenho a tabela da seguinte forma: <input type="button" name="addProduto" id="addProduto" class="input-adm btn-warning" value="Incluir"> <table class="table-list"> <thead class="list-head"> <tr> <th class="list-head-content sizeone table-md-none">Código Barras</th> <th class="list-head-content sizefive table-md-none">ID</th> <th class="list-head-content sizetwo">Nome do produto</th> <th class="list-head-content sizethree">Quantidade</th> <th class="list-head-content sizefour">Ações</th> </tr> </thead> <tbody class="list-body"> </tbody> </table> Em javascript adiciono os produtos a tabela, o adicionar está funcionando, mas o remover não funciona, o que errei? //Adicionar Produtos ao carrinho document.getElementById('addProduto').addEventListener('click', incluirProduto) //Remover Produtos ao carrinho document.getElementById('.remove').addEventListener('click', removerProduto) function incluirProduto(){ const selectProduct = document.getElementById('adms_produto_id') const optionText = selectProduct.options[selectProduct.selectedIndex].text const id = selectProduct.options[selectProduct.selectedIndex].value const barcode = selectProduct.options[selectProduct.selectedIndex].getAttribute('data-barcode') const qtde = document.getElementById('qtde').value const html = `<tr><td class="list-body-content table-md-none sizeone"><input type="text" name="codigo_barras[]" id="codigo_barras" class="input-adm" placeholder="Código Barras" autocomplete="on" required value="${barcode}"></td><td class="list-body-content table-md-none sizefive" name="id[]">${id}</td><td class="list-body-content sizetwo">${optionText}</td><td class="list-body-content sizethree"><input type="number" name="qtde[]" id="qtde" class="input-adm" placeholder="Qtde" autocomplete="off" required value="${qtde}"></td><td><input type="button" class="input-adm btn-danger" name="remove" id="remove" value="Remover"></td></tr>`; const x = 1; document.querySelector('tbody.list-body').innerHTML += html } function removerProduto(){ document.querySelector('tbody.list-body').closest('tr').remove(); }
  19. Bom dia a todos, Estou recebendo os dados através do json e enviando para a model da seguinte forma: //Recebo os dados $receiveData = file_get_contents('php://input'); $data = json_decode($receiveData, true); //Adiciono a posição do usuário atraves da sessão $data['adms_user_id'] = $_SESSION['user_id']; //Envia os dados para a model $createEncomenda = new \App\adms\Models\encomenda\AdmsAdd(); $createEncomenda->create($data); Na controle recebo da seguinte forma: public function create(array $data = null) { // Recebo os dados que vieram da controler $this->data = $data; Só que ao dar o var_dump em $this->data ou em $data me devolve o array da seguinte forma: $data: Array ( [0] => Array ( [name_encomenda] => Pedido de Material [adms_fornecedor_id] => 1 [adms_produto_id] => 1 [qtde] => 3 [observacoes] => [barcode] => 560010001 [productName] => Bisturi ) [1] => Array ( [name_encomenda] => Pedido de Material [adms_fornecedor_id] => 1 [adms_produto_id] => 4 [qtde] => 4 [observacoes] => [barcode] => 560000023 [productName] => Pinça ) [adms_user_id] => 1 ) mas gostaria e preciso receber da seguinte forma: $this->data: Array ( [name_encomenda] => Pedido de Material [adms_fornecedor_id] => 1 [adms_produto_id] => Array ( [0] => 1 [1] => 4 [2] => 2 ) [qtde] => Array ( [0] => 3 [1] => 4 [2] => 1 ) [observacoes] => [codigo_barras] => Array ( [0] => 560010001 [1] => 560000023 [2] => 560000021 ) [adms_user_id] => 1 ) Agora a pergunta, como faço isso?
  20. Boa tarde a todos, ca estou eu mais uma a solicitar a vossa ajuda. Tenho um formulário com uma tabela, nesta tabela tenho uma coluna que esta oculta com o style="display:none;" por o style="visibility:hidden;" fica o espaço em branco e não quero. até aqui esta tudo bem, mas gostaria enviar para a model os valores desta tabela, mas como a coluna esta como style="display:none;" não envia. Como faço para poder ocultar a coluna, mas mesmo assim conseguir enviar os dados ocultos? essa não é a tabela toda, apenas parte dela <tr> <td class="table"> <input type="text" name="codigo_barras[]" id="codigo_barras" class="input" placeholder="Código Barras" autocomplete="on" required> 560001 </td> <td style="display:none;" name="id[]"> 1 </td> <td class="list-content"> bisturi </td> <td class="list-content"> <input type="number" name="qtde[]" id="qtde" class="input" placeholder="Qtde" autocomplete="off" required > </td> <td> <input type="button" class="btn-danger" name="remove" id="remove" value="remove"> </td> </tr>
  21. Bom dia a todos. já fiz várias pesquisas mas infelizmente não consegui encontrar nada, ou minha pesquisa não esta sendo feita da forma correcta. quero alimentar um select com 3 tipos de dados, até aqui tudo bem, pois fiz da seguinte forma: <select name="select"> <option value="valor1" barcode="560001">Valor 1</option> <option value="valor2" barcode="560002">Valor 2</option> <option value="valor3" barcode="560003">Valor 3</option> </select> <button type="submit" onclick="receberValores">Enviar</button> até aqui tudo a funcionar. O que gostaria é de receber todos os valores no javascript Já criei um botão para chamar uma função js e receber os valores, mas não sei como receber o barcode, alguém pode ajudar-me? function receberValores(){ const select = document.getElementById('select').value const opcaoTexto = select.options[select.selectedIndex].text; const opcaoValor = select.options[select.selectedIndex].value; }
  22. Boa noite a todos e peço desculpa se meu post não agradar a alguns, gosto imenso de programar mas não sou nenhum profissional na matéria, nem faço disso profissão, sou apenas um curioso. Tenho o código abaixo para excluir os arquivos de uma pasta, mas gostaria que só apagasse se o array existir e for diferente de vazio. if ((isset($this->dataForm)) and (!empty($this->dataForm))) { // pasta que sera eliminado os arquivos $folder_path = "app/images/produtos/1/"; // lista os nomes dos arquivos $files = glob($folder_path . '/*'); // delete todos os arquivos do diretorio foreach ($files as $file) { if (is_file($file)) // Elimina o arquivo unlink($file); } } else { $this->utils->setSessionMsg('Produto alterado com sucesso!'); } A lógica é: Se existir a posição dataForm e for diferente de vazio{ apague }else{ mensagem de alterado } já dei um var_dump em dataForm e o resultado foi: $this->dataForm: Array ( [name] => Array ( [0] => ) [full_path] => Array ( [0] => ) [type] => Array ( [0] => ) [tmp_name] => Array ( [0] => ) [error] => Array ( [0] => 4 ) [size] => Array ( [0] => 0 ) ) Mas mesmo assim está apagando, onde esta errado?
  23. Boa tarde a todos, preciso de uma rotina ou função que apague todos os arquivos de uma pasta em PHP. alguém tem algum modelo ou link de exemplo para eu seguir? Desde já agradeço
  24. Boa tarde, estou tentando visualizar todas as imagens de um diretório, mas infelizmente me devolve o array como vazio, já dei voltas e voltas. No arquivo config.php tenho o seguinte: define('URLADM', 'localhost/adm/'); depois coloquei em minha View o seguinte: <?php //Caminho do diretorio do produto $diretorio = URLADM . "app/adms/assets/images/produtos/1/"; $img = glob($diretorio . "*.{jpg,jpeg,png,gif}", GLOB_BRACE); var_dump($img); $contador = count($img); foreach ($img as $img) { ?> <img src="<?php echo $img; ?>" alt="$img" style="width: 200px; height: 120px;"> <?php } ?> mas não me aparece nenhuma imagem, ao contrário não na erro nenhum e nem visualizar nenhuma imagem.
  25. Boa tarde, Alguém por aqui pode ajudar: Como posso criar um grupo de distribuição através do php. A ideia será poder criar um grupo de distribuição através de php/msql e ele coloque os email desse grupo agrupados no PARA do Outlook. Isto é em vez de colocar p.e.: exemplo1@sapo.pt; exemplo2@yahoo.com; exemplo3@gmail.com Colocaria + Nome do Grupo Julgo que consegui explicar-me.
×
×
  • 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.