Jump to content

Search the Community

Showing results for tags 'mysql'.

  • 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
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • 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. Boa noite a todos, Tenho um projeto para cadastro de produtos, existem dois campos (valor de compra e valor de venda) que são em euros, ou seja, por exemplo 300.0€ Já coloquei na Base de dados MYSQL o tipo "decimal" e "int" mas recebo o seguinte erro: SQLSTATE[01000]: Warning: 1265 Data truncated for column 'compra' at row 1 Que tipo devo utilizar?
  2. 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.
  3. Bom dia, Tenho uma função para validar se os documentos já foram cadastrado com outro técnico. Mas preciso verificar o tipo do documento e o número do documento e ignorando o proprio id. Mas preciso que tudo seja verdadeiro, mas infelizmente não devolve resultado. O que errei? public function validateDocuments(int $tipodoc, string $docIdentify, string $paisnif, string $nif, bool|null $edit = null, int|null $id = null): void { $this->tipodoc = $tipodoc; $this->docIdentify = $docIdentify; $this->paisnif = $paisnif; $this->nif = $nif; $this->edit = $edit; $this->id = $id; $verifyDocuments = new \App\adms\helpers\AdmsRead(); if (($this->edit == true) and (!empty($this->id))) { $verifyDocuments->fullRead("SELECT id FROM adms_tecnicos WHERE (tipodoc=:tipodoc AND numero_doc=:numero_doc AND paisnif=:paisnif AND nif=:nif AND id <>:id) LIMIT :limit", "tipodoc={$this->tipodoc}&numero_doc={$this->docIdentify}&paisnif={$this->paisnif}&nif={$this->nif}&id={$this->id}&limit=1"); } else { $verifyDocuments->fullRead("SELECT id FROM adms_tecnicos WHERE id =:id LIMIT :limit", "id={$this->id}&limit=1"); } $this->resultBd = $verifyDocuments->getResult(); if (!$this->resultBd) { $this->result = true; } else { $this->utils->setSessionMsg('Erro: Técnico já cadastrado, por favor verifique!', 'danger'); $this->result = false; } }
  4. Boa noite. Eu estou a criar uma base de dados com contactos. O que eu gostava de fazer era o seguinte. Eu estou a listar todos os contactos numa tabela e depois posso clicar no botão à frente do contacto e ele redireciona-me para outra pagina com os dados desse respetivo contacto. Eu estou a passar o id desse contacto através da URL. Mas eu gostaria de esconder o ID e ficar apenas com a url p.e www.contactos.viewcontact.php. O meu codigo é este: while($dados_viewuser = mysqli_fetch_array($result_viewuser, MYSQLI_ASSOC)) { echo'<tr class="odd">'; echo '<td class="dtr-control sorting_1" tabindex="0" id="" name="">'.$dados_viewuser['id_user'] ;'</td>'; echo '<td id="" name="">' .$dados_viewuser['nome_user']; '</td>'; if($dados_viewuser['estado_user']=='1'){ echo '<td id="estado_user" name="estado_user">Ativo</td>'; } else { echo '<td id="estado_user" name="estado_user">Inativo</td>'; } echo '<td id="" name="">' .$dados_viewuser['dataregisto_user']; '</td>'; printf ('<td><a class="btn-xs btn-success" href="/edit_user.php?idedit=%d"><i class="fa fa-edit"></i>&nbsp; View </a></td>',$dados_viewuser['id_user']); echo '</tr>'; $number++; } Estou a passar o valor através da tag <a>. Como posso passar essa variavel mas escondida no URL para não mostrar o ID.
  5. Boa noite pessoal, uma pessoa amiga ajudou me a preencher os campos selects conforme precisava, e os louvores são dele e não meu. Mas preciso da vossa ajuda para o seguinte: Conforme clico no botão cadastrar e é encontrado algum erro ou falta algum campo obrigatório, nos campos selects não recupera os dados que selecionei e nos outros campos sim. Espero que alguém possa me ajudar. Criamos uma view da seguinte forma: <div class="column"> <label for="adms_distrito_id" class="title-input">Distrito:<span class="text-danger">*</span> </label> <select class="input-adm" name="adms_distrito_id" id="adms_distrito_id" data-autofill data-target='#adms_concelho_id' data-href='load-concelhos/index'> <option value="">Carregando...</option> </select> <div class="content-adm-alert"></div> </div> <div class="column"> <label for="adms_concelho_id" class="title-input">Concelho:<span class="text-danger">*</span> </label> <select class="input-adm" name="adms_concelho_id" id="adms_concelho_id" data-target='#adms_freguesia_id' data-href='load-freguesias/index'> <option value="">Selecione um Distrito</option> </select> </div> <div class="column"> <label for="adms_freguesia_id" class="title-input">Freguesia:<span class="text-danger">*</span> </label> <select class="input-adm" name="adms_freguesia_id" id="adms_freguesia_id"> <option value="">Selecione um Concelho</option> </select> </div> e um arquivo js da seguinte forma: const loadJson = async (url, method = 'get') => { const headers = { method } const retorno = { statusCode: 200, body: [] } const request = await fetch(url, headers) if (request.headers.get('content-type').includes('json')) { const data = await request.json() retorno.body = data } else { adms_distrito_id.nextElementSibling.innerHTML = await request.text() } return retorno } const fillSelect = (selector, data, callback) => { // define se select element to be feed const selectToFill = document.querySelector(selector) const selectOptions = [] selectToFill.innerHTML = '<option value="">loading data...</option>' selectToFill.classList.remove('is-invalid') for (const obj of data) { const [key, val] = Object.keys(obj) selectOptions.push(`<option value="${obj[key]}">${obj[val]}</option>`) } if (selectOptions.length) { selectToFill.innerHTML = selectOptions.join() selectToFill.disabled = false } else { selectToFill.classList.add('is-invalid') selectToFill.disabled = true selectToFill.innerHTML = '<option value="">No registers found.</option>' } callback(selectToFill) } loadJson('/load-distritos/index').then((obj) => { for (const select of document.querySelectorAll('select[data-autofill]')) { fillSelect('#' + select.id, obj.body, (e) => { e.dispatchEvent(new Event('change')) }) } }) // Listen the changeEvent for all selects with [data-target][data-href] const selectsToFillAnother = document.querySelectorAll('select[data-target][data-href]') for (const select of selectsToFillAnother) { select.onchange = async ({ target }) => { const id = target.value const href = target.dataset.href const targetSelect = target.dataset.target const nextElement = targetSelect document.querySelector(targetSelect).innerHTML = '<option value="">loading data...</option>' let body = [{ id: '', value: 'Selecione um concelho' }] if (id) { body = await loadJson(`/${href}/${id}`).then(({ body }) => body) } fillSelect(targetSelect, body, (e) => { e.dispatchEvent(new Event('change')) }) } }
  6. Boa tarde a todos, Tenho um formulário com 3 campos selects, consoante o que selecionar no primeiro gostaria que fosse feito uma pesquisa e preenchido o segundo e assim sucessivamente. fiz da seguinte forma, mas não resultou. Alias até funciona se eu digitar directamente na url o seguinte caminho: "http://projecto/load-concelho/index?distrito=2" no console me devolve correctamente, mas quando tento manipular o select não resulta. Na linha 6 já tentei: fetch("LoadConcelhos.php/index?distrito=" + adms_distrito_id) fetch("LoadConcelhos/index?distrito=" + adms_distrito_id) fetch("../LoadConcelhos.php/index?distrito=" + adms_distrito_id) fetch("http://projecto/LoadConcelhos.php/index?distrito=" + adms_distrito_id) fetch("load-concelhos.php/index?distrito=" + adms_distrito_id) fetch("../Controllers/LoadConcelhos.php/index?distrito=" + adms_distrito_id) LoadConcelho.php (2º select) <?php namespace App\adms\Controllers; use PDO; class LoadConcelhos { public function index() { $adms_distrito_id = $_GET['distrito']; $listConcelhos = new \App\adms\helpers\AdmsRead(); $listConcelhos->fullRead("SELECT id, name_concelho FROM adms_concelhos WHERE adms_distrito_id=:adms_distrito_id ORDER BY name_concelho ASC", "adms_distrito_id={$adms_distrito_id}"); $registry = $listConcelhos->getResult(); foreach ($registry as $concelhos) { ?> <option value="<?php echo $concelhos['id'] ?>" <?php echo $concelhos['name_concelho'] ?>></option> <?php } } } concelho.js 1 const selectDistrito = document.getElementById('adms_distrito_id') 2 selectDistrito.onchange = () => { 3 const selectConcelho = document.getElementById('adms_concelho_id') 4 const adms_distrito_id = selectDistrito.value; 5 console.log(adms_distrito_id); 6 fetch("LoadConcelhos.php/index?distrito=" + adms_distrito_id) 7 .then(response => { 8 return response.concelhos(); 9 }) 10 .then(bodyContent => { 11 selectConcelho.innerHTML = bodyContent; 12 }); 13 }
  7. Bom dia a todos, estou desenvolvendo um projeto através de umas aulas com a CELKE. Mas esta acontecendo uma coisa tão estranha e não consigo resolver, por isso estou pedindo a vossa ajuda. fiz um formulário de pesquisa pelos distritos de Portugal, tenho um base de dados com todos os distritos cadastrado. a pesquisa esta a funcionar não a 100% por os distritos de "Faro" e "Castelo Branco" são os únicos que dão erro e não efectuam a pesquisa e por vezes tenho que fazer a pesquisa duas vezes para funcionar. Quando não é encontrado ao invés de devolver a mensagem "Distrito não encontrado" não acontece nada. Quem souber ajude me por favor. Helpers AdmsRead: <?php namespace App\adms\helpers; use PDO; use PDOException; /** * Classe genérica para selecionar registro no banco de dados * * @author John Trindade */ class AdmsRead extends AdmsConn { /** @var string $select Recebe o QUERY */ private string $select; /** @var array $values Recebe os valores que deve ser atribuidos nos link da QUERY com bindValue */ private array $values = []; /** @var array $result Recebe os registros do banco de dados e retorna para a Models */ private array|null $result; /** @var object $query Recebe a QUERY preparada */ private object $query; /** @var object $conn Recebe a conexao com BD */ private object $conn; /** * @return array Retorna o array de dados */ function getResult(): array|null { return $this->result; } /** * Recebe os valores para montar a QUERY. * Converte a parseString de string para array. * @param string $table Recebe o nome da tabela do banco de dados * @param string $terms Recebe os links da QUERY, ex: sts_situation_id =:sts_situation_id * @param string $parseString Recebe o valores que devem ser subtituidos no link, ex: sts_situation_id=1 * * @return void */ public function exeRead(string $table, string|null $terms = null, string|null $parseString = null): void { if(!empty($parseString)){ parse_str($parseString, $this->values); } $this->select = "SELECT * FROM {$table} {$terms}"; $this->exeInstruction(); } public function fullRead(string $query, string|null $parseString = null): void { $this->select = $query; if (!empty($parseString)) { parse_str($parseString, $this->values); } $this->exeInstruction(); } private function exeInstruction():void { $this->connection(); try{ $this->exeParameter(); $this->query->execute(); $this->result = $this->query->fetchAll(); }catch(PDOException $err){ $this->result = null; } } private function connection():void { $this->conn = $this->connectDb(); $this->query = $this->conn->prepare($this->select); $this->query->setFetchMode(PDO::FETCH_ASSOC); } private function exeParameter():void { if($this->values){ foreach($this->values as $link => $value){ if(($link == 'limit') or ($link == 'offset') or ($link == 'id')){ $value = (int) $value; } $this->query->bindValue(":{$link}", $value, (is_int($value) ? PDO::PARAM_INT : PDO::PARAM_STR)); } } } } helpers Pagination: <?php namespace App\adms\helpers; /** * Classe genérica para gerar a paginação * * @author John Trindade */ class AdmsPagination { /** @var integer $page Recebe o numero da pagina que o usuario esta*/ private int $page; /** @var integer $limitResult Recebe o limite de resultado*/ private int $limitResult; /** @var integer $offset Recebe o calculo entre a quantidade de paginas e o limite de resultado*/ private int $offset; /** @var string $query Recebe a query que será feita a paginação*/ private string $query; /** @var string|null $parseString Recebe a parseString*/ private string|null $parseString; /** @var array $resultBd Recebe o resultado que vem do banco de dados*/ private array $resultBd; /** @var string|null $result Recebe o resultado TRUE ou FALSE*/ private string|null $result; /** @var integer $totalPages Recebe o total de paginas*/ private int $totalPages; /** @var integer $maxLinks Recebe o número maximo de paginas*/ private int $maxLinks = 2; /** @var string $link Recebe o link da pagina*/ private string $link; /** @var string|null $var Recebe a informação relacionada com a pagina*/ private string|null $var; /** @return integer Recebe o resultado do calculo entre a quantidade de paginas e o linmite de resultado*/ function getOffset(): int { return $this->offset; } /** @return string|null Recebe o resultado TRUE ou FALSE*/ function getResult(): string|null { return $this->result; } /** * Metodo para criar o link da pagina * * @param string $link * @param string|null|null $var */ function __construct(string $link, string|null $var = null) { $this->link = $link; $this->var = $var; } /** * Metodo recebe a pagina e o limite de resultado a ser exibido * * @param integer $page * @param integer $limitResult * @return void */ public function condition(int $page, int $limitResult): void { $this->page = (int) $page ? $page : 1; $this->limitResult = (int) $limitResult; $this->offset = (int) ($this->page * $this->limitResult) - $this->limitResult; } /** * Metodo recebe a query que será feita a paginação e a parseString * Chama o helper AdmsRead para fazer a pesquisa no banco de dados * @param string $query * @param string|null|null $parseString * @return void */ public function pagination(string $query, string|null $parseString = null): void { $this->query = (string) $query; $this->parseString = (string) $parseString; $count = new \App\adms\helpers\AdmsRead(); $count->fullRead($this->query, $this->parseString); $this->resultBd = $count->getResult(); $this->pageInstruction(); } /** * Metodo faz o calculo do total de paginas * Chama o metodo layoutPagination * @return void */ private function pageInstruction(): void { $this->totalPages = (int) ceil($this->resultBd[0]['num_result'] / $this->limitResult); if ($this->totalPages >= $this->page) { $this->layoutPagination(); } else { header("Location: {$this->link}"); } } /** * Metodo com o layout da paginação que será exibida na view * @return void */ private function layoutPagination(): void { $this->result = "<div class='content-pagination'>"; $this->result .= "<div class='pagination'>"; $this->result .= "<a href='{$this->link}{$this->var}'>Primeira</a>"; for ($beforePage = $this->page - $this->maxLinks; $beforePage <= $this->page - 1; $beforePage++) { if ($beforePage >= 1) { $this->result .= "<a href='{$this->link}/$beforePage{$this->var}'>$beforePage</a>"; } } $this->result .= "<a href='#' class='active'>{$this->page}</a>"; for ($afterPage = $this->page + 1; $afterPage <= $this->page + $this->maxLinks; $afterPage++) { if ($afterPage <= $this->totalPages) { $this->result .= "<a href='{$this->link}/$afterPage{$this->var}'>$afterPage</a>"; } } $this->result .= "<a href='{$this->link}/{$this->totalPages}{$this->var}'>Última</a>"; $this->result .= "</div>"; $this->result .= "</div>"; } } model: <?php namespace App\adms\Models\distritos; /** * Listar distritos do banco de dados */ class AdmsList { /** @var bool $result Recebe true quando executar o processo com sucesso e false quando houver erro */ private bool $result; /** @var array|null $resultBd Recebe os registros do banco de dados */ private array|null $resultBd; /** @var int $page Recebe o número página */ private int $page; /** @var int $page Recebe a quantidade de registros que deve retornar do banco de dados */ private int $limitResult = 15; /** @var string|null $page Recebe a páginação */ private string|null $resultPg; /** @var string|null $searchEmail Recebe o email do distrito */ private string|null $searchDistrito; /** @var string|null $searchNameValue Recebe o nome do distrito */ private string|null $searchNameValue; /** * @return bool Retorna true quando executar o processo com sucesso e false quando houver erro */ function getResult(): bool { return $this->result; } /** * @return bool Retorna os registros do BD */ function getResultBd(): array|null { return $this->resultBd; } /** * @return bool Retorna a paginação */ function getResultPg(): string|null { return $this->resultPg; } /** * Metodo faz a pesquisa dos distritos na tabela adms_distritos e lista as informações na view * Recebe o paramentro "page" para que seja feita a paginação do resultado * @param integer|null $page * @return void */ public function listDistritos(int $page = null): void { $this->page = (int) $page ? $page : 1; $pagination = new \App\adms\helpers\AdmsPagination(URLADM . 'list-distritos/index'); $pagination->condition($this->page, $this->limitResult); $pagination->pagination("SELECT COUNT(dist.id) AS num_result FROM adms_distritos dist"); $this->resultPg = $pagination->getResult(); $listDistrito = new \App\adms\helpers\AdmsRead(); $listDistrito->fullRead("SELECT dist.id, dist.name_distrito FROM adms_distritos AS dist ORDER BY dist.id ASC LIMIT :limit OFFSET :offset", "limit={$this->limitResult}&offset={$pagination->getOffset()}"); $this->resultBd = $listDistrito->getResult(); if ($this->resultBd) { $this->result = true; } else { $_SESSION['msg'] = "<p class='alert-danger'>Erro: Nenhum Distrito encontrado!</p>"; $this->result = false; } } /** * Metodo faz a pesquisa dos distritos na tabela adms_distritos e lista as informações na view * Recebe o paramentro "page" para que seja feita a paginação do resultado * Recebe o paramentro "search_distrito" para pesquisar o distrito atraves do nome * @param integer|null $page * @param string|null $search_distrito * @return void */ public function listSearchDistrito(int $page = null, string|null $search_distrito): void { $this->page = (int) $page ? $page : 1; $this->searchDistrito = trim($search_distrito); $this->searchNameValue = "%" . $this->searchDistrito . "%"; if ((!empty($this->searchDistrito))) { $this->searchUserName(); } else { $this->listDistritos(); } } /** * Metodo pesquisar pelo nome do distrito * @return void */ public function searchUserName(): void { $pagination = new \App\adms\helpers\AdmsPagination(URLADM . 'list-distritos/index', "?search_name={$this->searchDistrito}"); $pagination->condition($this->page, $this->limitResult); $pagination->pagination("SELECT COUNT(dist.id) AS num_result FROM adms_distritos dist WHERE name_distrito LIKE :search_distrito", "search_distrito={$this->searchNameValue}"); $this->resultPg = $pagination->getResult(); $listUsers = new \App\adms\helpers\AdmsRead(); $listUsers->fullRead("SELECT dist.id, dist.name_distrito FROM adms_distritos AS dist WHERE dist.name_distrito LIKE :search_distrito ORDER BY dist.id ASC LIMIT :limit OFFSET :offset", "search_distrito={$this->searchNameValue}&limit={$this->limitResult}&offset={$pagination->getOffset()}"); $this->resultBd = $listUsers->getResult(); if ($this->resultBd) { $this->result = true; } else { $_SESSION['msg'] = "<p class='alert-danger'>Erro: Nenhum distrito encontrado!</p>"; $this->result = false; } } } Controler: <?php namespace App\adms\Controllers; /** * Controller da página listar distritos * @author John Trindade <jht_pt@icloud.com> */ class ListDistritos { /** @var array|string|null $data Recebe os dados que devem ser enviados para VIEW */ private array|string|null $data; /** @var array|null $data Recebe os dados que devem do formulario */ private array|null $dataForm; /** @var string|int|null $page Recebe o numero da pagina que usuario esta */ private string|int|null $page; /** @var string|null $searchDistrito Recebe o nome do distrito */ private string|null $searchDistrito; public function index(string|int|null $page = null) { $this->page = (int) $page ? $page : 1; $this->dataForm = filter_input_array(INPUT_POST, FILTER_DEFAULT); $this->searchDistrito = filter_input(INPUT_GET, 'search_distrito', FILTER_DEFAULT); if (!empty($this->dataForm['SearchDistrito'])) { $listSearchDistrito = new \App\adms\Models\distritos\AdmsList(); $listSearchDistrito->listSearchDistrito($this->page, $this->dataForm['search_distrito']); if ($listSearchDistrito->getResult()) { $this->data['list'] = $listSearchDistrito->getResultBd(); $this->data['pagination'] = $listSearchDistrito->getResultPg(); } else { $this->data['list'] = []; $this->data['pagination'] = ""; } $this->data['form'] = $this->dataForm; } elseif (!empty($this->searchDistrito)) { $listSearchDistrito = new \App\adms\Models\distritos\AdmsList(); $listSearchDistrito->listSearchDistrito($this->page, $this->searchDistrito); if ($listSearchDistrito->getResult()) { $this->data['list'] = $listSearchDistrito->getResultBd(); $this->data['pagination'] = $listSearchDistrito->getResultPg(); } else { $this->data['list'] = []; $this->data['pagination'] = ""; } $this->data['form'] = $this->dataForm; } else { $listDistritos = new \App\adms\Models\distritos\AdmsList(); $listDistritos->listDistritos($this->page); if ($listDistritos->getResult()) { $this->data['list'] = $listDistritos->getResultBd(); $this->data['pagination'] = $listDistritos->getResultPg(); } else { $this->data['list'] = []; $this->data['pagination'] = ""; } } $this->data['sidebarActive'] = "list-distritos"; $loadView = new \Core\ConfigView("adms/Views/distritos/list", $this->data); $loadView->loadView(); } } Formulário: <?php if (isset($this->data['form'])) { $valorForm = $this->data['form']; } ?> <!-- Inicio do conteudo do Administrativo --> <div class="wrapper"> <div class="row"> <!-- Inicio menu pesquisa --> <div class="top-list"> <form method="POST" action=""> <div class="row-input-search"> <?php $search_distrito = ""; if (isset($valorForm['search_distrito'])) { $search_distrito = $valorForm['search_distrito']; } ?> <div class="column"> <label class="title-input-search">Pesquisar Distrito: </label> <input type="text" name="search_distrito" id="search_distrito" class="input-search" placeholder="Pesquisar pelo nome do Distrito..." value="<?php echo $search_distrito; ?>" autofocus> </div> <div class="column margin-top-search"> <button type="submit" name="SearchDistrito" class="btn-info" value="Pesquisar">Pesquisar</button> </div> </div> </form> </div> <div class="content-adm-alert"> <?php if (isset($_SESSION['msg'])) { echo $_SESSION['msg']; unset($_SESSION['msg']); } ?> </div> <!-- Inicio da Tabela Listar --> <table class="table-list"> <thead class="list-head"> <tr> <th class="list-head-content table-md-none">ID</th> <th class="list-head-content">Distrito</th> </tr> </thead> <tbody class="list-body"> <?php foreach ($this->data['list'] as $distritos) { extract($distritos); ?> <tr> <td class="list-body-content table-md-none"><?php echo $id; ?></td> <td class="list-body-content"><?php echo $name_distrito; ?></td> </tr> <?php } ?> </tbody> </table> <!-- Final da Tabela Listar --> <!-- Inicio da Paginação --> <?php echo $this->data['pagination']; ?> <!-- Final da Paginação --> </div> </div> <!-- Final do conteudo do Administrativo-->
  8. PHP + MYSQL Estou com um problema, atendendo que o formato da hora hh:mm tenho de somar as horas mas acontece que nalguns registos ultrapassa as 99:99 ou seja tenho somas de 125:35 horas como representar essas horas? Converter em dias? Alguém já passou por isso? Sugestão?
  9. Boas, Eu tenho o objetivo de tentar relacionar a tabela «ROTAS» com «PRODUTOS» onde irei criar a tabela «CARGA» para ajudar(eu acho😅) ROTAS(ID_ROTA, ID_CAMIAO, ID_CLIENTE, ID_CARGA) CARGA(ID_CARGA, "aqui eu iria criar uma tabela 'temporaria' «PRODUTO_CARGA»") |------------CARGA---------- | | id_carga | aqui supostamente o id da tabela(produto_carga) | | 213 | 27 | PRODUTO_CARGA(ID_PRODUTO, QNT) |---PRODUTO_CARGA--- | | id_produto | QNT | | 213 | 27 | |etc... PRODUTO(ID_PRODUTO, NOME, MARCA, VALOR) Mas como consigo fazer a parte de ir buscar uma tabela inteira e não so uma "row"? Agradeço desde já:) FOTO DA BASE DE DADOS (phpMyAdmin DESIGNER)
  10. Boa tarde a todos, Ver se consigo explicar-me: Tenho uma tabela de contactos (tbl_contactos) em que tem vários campos, um deles o email_principal. Faço um SELECT tbl_contactos.email_principal FROM tbl_contactos. A minha ideia é em PHP/MYSQLI passar as colunas, dos email, mas em linhas em que cada email fica separado por ponto e virgula (;) para posteriormente poder utilizar uma botão, que vai abrir o outlook através a <a href="mailto:$variavel_com_o_emails_todos">ENVIAR EMAIL</a> A minha duvida é como consigo colocar todos os email do SELECT separados por ponto e virgula e passar para a variável para posteriormente remeter para todos os destinatários SELECCIONADOS. Obrigado pela vossa ajudar, se conseguirem.
  11. Olá a todos, Estou a ter uma dificuldade, ver se consigo explicar. Tenho um DASHBOARD que vai buscar dados ao mysql. Por sua vez este mysql é alimentado através de um backoffice. A minha dificuldade neste momento é quando insiro dados no mysql através do backoffice, como consigo atuaizar o dashboard logo automaticamente esteja ele aberto onde for, no meu pc ou noutro?
  12. Boa noite a todos! Estou desenvolvendo uma query que possa me proporcionar um relatório de vendas especificando os produtos de cada nota de venda. O problema é que, como a numeração das notas se repete (pois uma nota pode ter mais de um produto relacionado), o valor total de cada nota é trazido mais de uma vez. No final das contas, o somatório dos valores totais das notas difere muito pois considera todas as duplicatas de valor. Há algum modo de ignorar ou excluir ou substituir os valores repetidos (por um valor nulo, por exemplo, que não interfira no somatório) utilizando SQL? Eis a minha query até o momento: SELECT NFVENDA.nf_numero AS NUMERO, NFVENDA.nf_serie AS SERIE, NFVENDA.nf_modelo AS MODELO, NFVENDA.dt_emissao AS EMISSAO, ITEM.id_identificador AS CODIGO, ESTOQUE.descricao AS PRODUTO, ITEM.cfop AS CFOP, ITEM.qtd_item AS QUANTIDADE, ITEM.vlr_unit AS VAL_UNITARIO, ITEM.vlr_total AS TOTAL_ITEM, TOTAIS.tot_nf AS TOTAL_NF FROM tb_nfv_item ITEM, tb_nfvenda NFVENDA, tb_estoque ESTOQUE, tb_nfvenda_tot TOTAIS WHERE NFVENDA.dt_emissao BETWEEN '01.07.2022' AND '31.07.2022' AND ITEM.id_nfvenda = NFVENDA.id_nfvenda AND estoque.id_estoque = item.id_identificador AND TOTAIS.id_nfvenda = NFVENDA.id_nfvenda ORDER BY NFVENDA.nf_numero A saída que eu tenho é semelhante a isto (https://drive.google.com/file/d/17Rq5bGfaZ6CrAFFWwE0fx72wwJDUW1xC/view?usp=sharing)
  13. Boa tarde, Necessito de responder a 3 questões de um exercício através de funções ou procedimentos e não consigo, dá sempre erros. Seria possível ajudarem-me pf? Obrigada. create table venda ( idVenda int not null, dataVenda timestamp, valorFaturado float, idCliente int not null, primary key(idVenda), constraint FK_idCliente foreign key (idCliente) references cliente (idCliente) on delete no action on update no action ); create table artigo ( idArtigo int not null, nomeArtigo varchar(255), qtdArtigo int(3), precoArtigo float, primary key(idArtigo)); Questões: -- a. Obtenha a faturação anual por ano. -- b. Obtenha a faturação total de um dado ano. -- c. Coloque a quantidade dos artigos todos a zero.
  14. Olá, Preciso enviar os 10 ultimos itens de um mysql para todos os e-mails cadastrados, com codigo abaixo não acontece nada. <?php $conn = new mysqli("localhost","user","pass","db"); $sql = mysqli_query($conn, "SELECT * FROM jobs"); $numRows = mysqli_num_rows($sql); $mail_body = ''; while($row = mysqli_fetch_array($sql)){ $id = $row["id"]; $salary = $row["salary"]; $cargo=$row["title"]; $description = $row["plot"]; $mail_body = ''; } //colocar a chamada mail dentro do loop que itera sobre os clientes: $sql = mysqli_query($conn, "SELECT email FROM subscriptions WHERE id=4168"); $numRows = mysqli_num_rows($sql); $subject = "New jobs"; $headers = "From:info@umsite.com\r\n"; $headers .= "Content-type: text/html\r\n"; while($row = mysqli_fetch_array($sql)){ $email = $row["email"]; $name = $row["firstname"]; $mail_result = mail($email, $subject, $mail_body, $headers); if ($mail_result) { echo 'ok'; } } ?> grato por qualquer ajuda
  15. Numa tabela com as datas das consultas queria que não fosse permitido ao utilizador alterar os dados da consulta a menos de 72 horas da data da consulta marcada. O projeto de avaliação que estou a fazer esta tabela é gerada em php diretamente da base de dados. Mas para exemplificar resumi a uma tabela. Já tentei fazer um loop mas não estou a conseguir, apenas consegui umas dicas com o código a seguir: <!DOCTYPE html> <html lang="pt"> <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"> <title>Document</title> <style> table td { padding: 15px; } </style> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <table> <thead> <tr> <th>ID_CONSULTA</th> <th>UTILIZADOR</th> <th>DATA</th> <th>OBSERVAÇÕES</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>marco</td> <td id="data-consulta">2022-06-16</td> <td>marcação1</td> <td><button id="editar">Editar</button></td> </tr> <tr> <td>2</td> <td>martim</td> <td id="data-consulta">2022-06-20</td> <td>marcação2</td> <td><button id="editar">Editar</button></td> </tr> <tr> <td>3</td> <td>carlos</td> <td id="data-consulta">2022-06-15</td> <td>marcação3</td> <td><button id="editar">Editar</button></td> </tr> </tbody> </table> <script src="script.js"></script> </body> </html> var inputConsulta = document.querySelector('#data-consulta'); var editar = document.querySelector('#editar'); function calcularDiferenca() { var dataConsulta = inputConsulta.innerHTML; //var dataAtual = inputAtual.value; var dataAtual = new Date().toISOString().slice(0, 10); dataConsulta = new Date(dataConsulta).toISOString().slice(0, 10); //dataConsulta = new Date(dataConsulta); //dataAtual= new Date(dataAtual); var diffInTime = Math.abs(dataConsulta - dataAtual); var timeInOneDay = 1000 * 60 * 60 * 24; var diffInDays = diffInTime / timeInOneDay; if (diffInDays >= 3) { alert('Você escolher alterar a marcação!'); } else { alert('O prazo de 72 para alterar a marcação expirou!'); } } editar.addEventListener('click', () => { var diffInDays = calcularDiferenca(); if (diffInDays >= 3) { ('#editar').prop('disabled', false); alert('Você escolheu alterar uma marcação!'); } else { $('#editar').prop('disabled', true); alert('O prazo para alterar a marcação foi expirado!\nPor favor, entre em contacto com a empresa!'); } });
  16. Eu queria depois de validar o login para redirecionar para a página dependendo do nível de acesso, agradeceria que alguem me ajudasse o mais rápido possível, obrigado aqui está a página de login de validação: <?php session_start(); include ("config.php"); if(isset($_POST['submit'])){ $Nmutilizador = mysqli_real_escape_string($conn, $_POST['username']); $pass = md5($_POST['Password']); $lvlacesso = $_POST['NivelAcesso']; $select = " SELECT * FROM users WHERE NmUtilizador = '$Nmutilizador' && PalavraPasse = '$pass' "; $result = mysqli_query($conn, $select); if(mysqli_num_rows($result) > 0){ $row = mysqli_fetch_array($result); if ($_SESSION['NivelAcesso'] == '1') { // check the value of the 'status' in the db //go to admin area header("Location: indexadmin.php"); } else { //go to members area header("Location: indexposlogin.php"); } }else{ $error[] = 'incorrect email or password!'; } }; ?> pagina de login: <?php session_start(); echo '<!doctype html> <html lang="en"> <head> <title>Página de Login</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link href="https://fonts.googleapis.com/css?family=Lato:300,400,700&display=swap" rel="stylesheet"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="css/stylelogin.css"> <style> h3{ text-align: center; } .disclaimer{ visibility: hidden; } </style> </head> <body> <section class="ftco-section"> <div class="container"> <div class="row justify-content-center"> <div class="col-md-6 text-center mb-5"> <h2 class="heading-section">Inicie sessão</h2> </div> </div> <div class="row justify-content-center"> <div class="col-md-7 col-lg-5"> <div class="wrap"> <div class="img" style="background-image: url(Imagens/imagemlogin.png);"></div> <div class="login-wrap p-4 p-md-5"> <div class="d-flex"> <div class="w-100"> <h3 class="mb-4">Login</h3> </div> </div> <form action="validalogin.php" class="signin-form"> <div class="form-group mt-3"> <input name="username" type="text" class="form-control" required> <label class="form-control-placeholder" for="username">Nome de Utilizador</label> </div> <div class="form-group"> <input name="pass" id="password-field" type="password" class="form-control" required> <label class="form-control-placeholder" for="password">Palavra-Passe</label> <span toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password"></span> </div> <div class="form-group"> <button type="submit" class="form-control btn btn-primary rounded submit px-3">Entrar</button> </div> <div class="form-group d-md-flex"> <div class="w-50 text-left"> <label class="checkbox-wrap checkbox-primary mb-0">Lembrar me <input type="checkbox" checked> <span class="checkmark"></span> </label> </div> <div class="w-50 text-md-right"> <a href="#">Esqueci me da palavra-passe</a> </div> </div> </form> <p class="text-center">Não és membro? <a data-toggle="tab" href="registar.php">Registar me</a></p> <p class="text-center"><a data-toggle="tab" href="https://ingamept.000webhostapp.com/">Voltar</a></p> </div> </div> </div> </div> </div> </section> <script src="js/jquery.min.js"></script> <script src="js/popper.js"></script> <script src="js/bootstrap.min.js"></script> <script src="js/main.js"></script> </body> </html>
  17. Boa tarde, Venho aqui para recorrer à vossa ajuda, porque estou bloqueado e já não sei o que fazer. Eu estou a tentar fazer um trigger que me permita atualizar alguns campos de uma tabela, tendo por base o valor doutra tabela. No entanto, eu até consigo deixar o trigger a funcionar com a condição AFTER INSERT, mas não consigo deixar a funcionar com o AFTER UPDATE. Já simplifiquei coisas, editei código, adicionei e acrescentei variáveis, mas não estou a perceber o que estou a fazer mal para que isto não funcione com o AFTER UPDATE. Pus o código mais simples que tenho aqui, porque já sei se as mudanças que andei para aqui a fazem o mínimo sentido, mas como não tinha resultados, não quis inventar mais. Alguém consegue explicar-me o que estou a fazer de errado? Obrigado. BEGIN update documentsheaders inner join entity_stockdocument_extrafields on entity_stockdocument_extrafields.StockDocument_id=documentsheaders.id set documentsheaders.entitykeyid=entity_stockdocument_extrafields.entity where documentsheaders.DocumentKeyId='ES' and documentsheaders.entitykeyid<>entity_stockdocument_extrafields.entity update documentsheaders inner join entities on entities.KeyId=documentsheaders.EntityKeyId set documentsheaders.EntityDescription=entities.Name where documentsheaders.DocumentKeyId='ES' and documentsheaders.EntityKeyId=entities.KeyId; END
  18. Boa tarde, Já levo umas horas valentes a tentar encontrar o erro, ou uma solução o que acontece é o seguinte: eu tenho uma tabela que, com a instrução onchange atualiza os valores de base de dados, mas, graficamente tanto muda como não muda o conteúdo, se fizer o refresh/F5 manual fica tudo ok, mas o objetivo era ser automático. As instruções funcionam o graficamente não, isso é que me esta a intrigar. function CriarProcesso(){ var NomeProcesso = document.getElementById("NomeProcesso").value; var dadosajax = { 'NomeProcesso' : NomeProcesso }; pageurl = 'URL/CriarProcesso.php'; $.ajax({ url: pageurl, data: dadosajax, type: 'POST', dataType: "text", cache: false, error: function(){ toastr.danger('Erro: Inserir Registo!!'); }, success: function(result){ if($.trim(result) == '1'){ toastr.success('O registo foi editado com sucesso'); $("#table-custo").load(location.href + " #table-custo"); } else{ toastr.danger('Não é possível registar.Tente mais tarde.'); } } }); } Mesmo com load em divs diferentes ou mesmo o Append, não estão a fazer o refresh.
  19. Olá a todos, Necessito de uma pequena ajuda para construir uma Query onde vou apenas quero ver cada utilizador com o registo mais recente. Exemplo pratico : Tabela Ficha : ID | ID_user | Data_registo | Valor 1 | 1 | 01-01-2020 | 2 2 | 2 | 01-02-2021 | 5 3 | 1 | 06-01-2021 | 7 4 | 1 | 01-03-2022 | 8 neste exemplo de tabela quero ver apenas o registo mais recente de cada ID_user 2 | 2 | 01-02-2021 | 5 4 | 1 | 01-03-2022 | 8 existe forma de ir so buscar o mais recente de cada ID_user? Obrigado
  20. Bom dia tenho uma duvida em relcação ao programa que estou a desenvolver e da me o seguinte erro: Fatal error: Uncaught Error: Call to a member function query() on string in D:\xampp\htdocs\site\validarupdate.php:11 Stack trace: #0 {main} thrown in D:\xampp\htdocs\site\validarupdate.php on line 11
  21. Boas tardes estou a desenvolver um projeto final e aparece me o seguinte erro Ja tentei de tudo mas nao sei como resolver alguem me poderia ajudar? Aqui está o codigo: <?php $uname1 = $_POST['Nome_Utilizador']; $paswrd = $_POST['Password']; $email = $_POST['Email']; if (!empty($uname1) || !empty($email) || !empty($paswrd)) { $host = "localhost"; $dbusername = "root"; $dbpassword = ""; $dbname = "pap"; // Create connection $conn = new mysqli ($host, $dbusername, $dbpassword, $dbname); if (mysqli_connect_error()){ die('Connect Error ('. mysqli_connect_errno() .') ' . mysqli_connect_error()); } else{ $SELECT = "SELECT Nome_Utilizador From login Where Nome_Utilizador = ?"; $INSERT = "INSERT Into registoo (NmUtilizador , Password ,Email)values(0,?,?,?)"; //Prepare statement $stmt = $conn->prepare($SELECT); $stmt->bind_param("s", $email); $stmt->execute(); $stmt->bind_result($email); $stmt->store_result(); $rnum = $stmt->num_rows; //checking username if ($rnum==0) { $stmt->close(); $stmt = $conn->prepare($INSERT); $stmt->bind_param("sss", $uname1,$paswrd,$email); $stmt->execute(); echo "Registado com sucesso"; } else { echo "Alguem ja tem esse nome de utlizador , coloque outro"; } $stmt->close(); $conn->close(); } } else { echo "Todos os campos sao necessarios"; die(); } ?>
  22. Olá a todos. Estou a fazer uma base de dados "ecommerce" contudo quando estava a fazer a ligação do ficheiro mysqli_connect.php com o ficheiro add_artist.php, estou a ter erros no segundo ficheiro. Em baixo envio o código fonte e algumas imagens para me ajudarem. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Add an Artist</title> <meta charset="UTF-8"> <meta name="description" content="Home page"> <meta name="keywords" content="ecommerce"> <meta name="author" content="José Moreira"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <?php # Script 19.1 - add_artist.php // This page allows the administrator to add an artist. if ($_SERVER['REQUEST_METHOD'] = = 'POST') { // Handle the form. // Validate the first and middle names (neither required): $fn = (!empty($_POST['first_name'])) ? trim($_POST['first_name']) : NULL; $mn = (!empty($_POST['middle_name'])) ? trim($_POST['middle_name']) : NULL; // Check for a last_name... if (!empty($_POST['last_name'])) { $ln = trim($_POST['last_name']); // Add the artist to the database: require ('../../mysqli_connect. php'); $q = 'INSERT INTO artists (first_ name, middle_name, last_name) VALUES (?, ?, ?)'; $stmt = mysqli_prepare($dbc, $q); mysqli_stmt_bind_param($stmt, 'sss', $fn, $mn, $ln); mysqli_stmt_execute($stmt); // Check the results.... if (mysqli_stmt_affected_ rows($stmt) = = 1) { echo '<p>The artist has been added.</p>'; $_POST = array( ); } else { // Error! $error = 'The new artist could not be added to the database!'; } // Close this prepared statement: mysqli_stmt_close($stmt); mysqli_close($dbc); // Close the database connection. } else { // No last name value. $error = 'Please enter the artist\'s name!'; } } // End of the submission IF. // Check for an error and print it: if (isset($error)) { echo '<h1>Error!</h1> <p style="font-weight: bold; color: #C00">' . $error . ' Please try again.</p>'; } // Display the form... ?> <h1>Add a Print</h1> <form action="add_artist.php" method="post"> <fieldset><legend>Fill out the form to add an artist:</legend> <p><b>First Name:</b> <input type="text" name="first_name" size="10" maxlength="20" value="<?php if (isset($_POST['first_name'])) echo $_POST['first_name']; ?>" /></p> <p><b>Middle Name:</b> <input type="text" name="middle_name" size="10" maxlength="20" value="<?php if (isset($_POST['middle_name'])) echo $_POST['middle_name']; ?>" /></p> <p><b>Last Name:</b> <input type="text" name="last_name" size="10" maxlength="40" value="<?php if (isset($_POST['last_name'])) echo $_POST['last_name']; ?>" /></p> </fieldset> <div align="center"><input type="submit" name="submit" value="Submit" /></div> </form> </body> </html> mysqli_connect.php <?php # Script 9.2 - mysqli_connect.php // This file contains the database access information. // This file also establishes a connection to MySQL, // selects the database, and sets the encoding. // Set the database access information as constants: DEFINE ('DB_USER', 'username'); DEFINE ('DB_PASSWORD', 'Quencyjones79'); DEFINE ('DB_HOST', 'localhost'); DEFINE ('DB_NAME', 'ecommerce'); // Make the connection: $dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error( ) ); // Set the encoding... mysqli_set_charset($dbc, 'utf8'); Agradeço imenso a sua ajuda.
  23. comprei um domínio na hostinger e subi um site para o servidor mas só a parte HTML. Agora não consigo utilizar o domínio com o banco de dados, tentei o dia todo, até falei com eles mas não sabem ajudar nessa questão, por favor, alguém me ajuda?
  24. Boa tarde pessoal, gostaria de renomear a tabela “matilde” para “0001 matilde” é possível? sei que tenho que digitar: rename table matilde to 0001 matilde mais infelizmente da erro, como coloco o espaço para que seja interpretado pelo sql
  25. Boa tarde, estou em volta de um query em Mysql e estou apenas a retornar os valores no total como por exemplo: id | ipaddress | created 1 | 1.1.1.1 | 2021-10-07 2 | 2.2.2.2 | 2021-10-07 3 | 2.2.2.2 | 2021-10-07 4 | 6.6.6.6 | 2021-10-07 5 | 2.2.2.2 |2021-10-07 A minha query é a seguinte: SELECT COUNT(ipaddress) AS total FROM visitors_log GROUP BY DATE(created) ORDER BY created DESC O meu objectivo era não contar os ipaddress repetidos como por exemplo: created | total 2021-10-07 | 3 > numero de ipaddress unicos
×
×
  • 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.