Search the Community
Showing results for tags 'php'.
-
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
-
Boa tarde, Alguem já conseguiu criar uam pagina PHP para criar artigos no PHC ?
-
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>
-
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?
-
<?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.
-
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'"
- 4 replies
-
- html
- javascript
-
(and 1 more)
Tagged with:
-
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]); ?>
-
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.
-
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; } >
-
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?
-
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; ?>
-
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 😃
-
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
-
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
-
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>"]; } }
- 4 replies
-
- javascript
- json
-
(and 1 more)
Tagged with:
-
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.
-
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(); }
- 3 replies
-
- php
- javascript
-
(and 1 more)
Tagged with:
-
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?
- 1 reply
-
- php
- javascript
-
(and 1 more)
Tagged with:
-
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>
-
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; }
-
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?
-
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
-
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.
-
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.