Ir ao conteúdo
  • Cadastre-se

unknn

Membros Juniores
  • Total de itens

    13
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. $mtFB = $conn->query("SELECT entry_type FROM bn_publicacao")->fetchColumn(); if ($mtFB['entry_type'] == 'pagina'){ echo '<meta property="og:type" content="website">'; } else{ echo '<meta property="og:type" content="article">'; echo '<meta property="article:author" content="">'; echo '<meta property="article:publisher" content="">'; echo '<meta property="article:published_time" content="">'; echo '<meta property="article:modified_time" content="">'; } A coluna chamada "entry_type" tem apenas dois valores possíveis: "pagina" ou "post", esse sript deveria dar echo na meta que está no if quando o entry_type = pagina, e dar echo nas metatags que estão no else quando o entry_type = post . Mas não está funcionando, só está imprimindo as meta tags que estão no else. Eu tentei usar o fetchAll ao invés de fetchColumn, mas com o fetchAll mostra um erro "Undefined index: entry_type" na linha do if. E com o fetch, eu tenho o mesmo problema que o fetchColumn, O que tem de errado no script? E como resolvo?
  2. Eu ja pesquisei bastante sobre isso no google e em alguns forums, mas parace que cada caso é 1 caso porque nada funcionou aqui. O que chegou mais perto, foi a resposta do usuario "Danijel" link: https://stackoverflow.com/questions/16388959/url-rewriting-with-php . Mais SÓ mudou o url mesmo, e não abria os arquivos. Eu preciso mudar o url de: http://localhost/site/?p=home http://localhost/site/index.php?p=home Para: http://localhost/site/home E http://localhost/site/index.php?post=um-arquivo-qualquer Para: http://localhost/site/post/um-arquivo-qualquer
  3. ##index.php define('DB_HOSTNAME', 'localhost'); define('DB_USERNAME', 'root'); define('DB_PASSWORD', null); define('DB_CHARSET', 'utf8'); define('DB_DATABASE', 'publicacoes'); $conn = new PDO('mysql:host=' . DB_HOSTNAME . ';dbname=' . DB_DATABASE . ';charset=' . DB_CHARSET . ';', DB_USERNAME, DB_PASSWORD); $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $isPost = !empty($_GET['post']); $slug = 'home'; if ($isPost) { $slug = $_GET['post']; } elseif (!empty($_GET['p'])) { $slug = $_GET['p']; } try { $stmt = $conn->prepare('SELECT `title`, `text`, `capa`, `alt`, `slug` FROM bn_publicacao WHERE `slug` = :slug AND `entry_type` = :entry_type'); $stmt->execute([ ':entry_type' => $isPost ? 'post' : 'pagina', ':slug' => $slug ]); if (!$UN = $stmt->fetch(\PDO::FETCH_ASSOC)) { throw new \InvalidArgumentException('Post title ' . htmlentities($title, \ENT_QUOTES, 'UTF-8', false) . ' not found in database'); } $titulo = $shareTitulo = $UN['title']; $descricao = $shareDescricao = $UN['text']; $ogUrl = $urlCanonico = $UN['capa']; $imgAlt = $UN['alt']; $slug = $UN['slug']; $keywords = $shareImge = ''; } catch (\InvalidArgumentException $e) { header('Location: index.php?p=home'); exit; } catch (\Exception $e) { throw $e; } function sanitize($data, $filter = \FILTER_SANITIZE_STRING) { if ($data = filter_var(trim($data), $filter)) { $data = preg_replace('/http(s)?:\/\//', '', $data); } return $data; } $loadPage = null; if ($sanitizedName = sanitize($isPost ? $titulo : $slug)) { $loadPageSuffix = ($isPost ? '/posts/' : '/page_'); $loadPage = __DIR__ . $loadPageSuffix . $sanitizedName . '.php'; } if (null === $loadPage || !is_file($loadPage)) { header('HTTP/1.1 404 Not Found'); exit; } $pages = $conn->query('SELECT title, slug FROM bn_publicacao WHERE "entry_type" = "pagina"') ->fetchAll(\PDO::FETCH_NUM); ?> <!DOCTYPE html> <html> <head><title><?php echo htmlentities($titulo, \ENT_QUOTES, 'UTF-8', false); ?></title> </head> <body> <?php foreach($pages as list($pageTitle, $pageSlug)) { ?> <li> <a href="?p=<?php echo htmlentities($pageSlug, \ENT_QUOTES, 'UTF-8', false); ?>"><?php echo htmlentities($pageTitle, \ENT_QUOTES, 'UTF-8', false); ?></a> </li> <?php } ?> <?php require_once $loadPage; ?> </body> </html> ## page_home.php <?php $stmtIDrow1 = 'SELECT * FROM bn_publicacao WHERE "entry_type" = "post"'; $IDrow1 = $conn->query($stmtIDrow1)->fetchAll(); ?> <?php foreach ($IDrow1 as $IDr1) { ?> <a href="index.php?post=<?php echo htmlentities($IDr1['slug'], \ENT_QUOTES, 'UTF-8', false); ?>"><h2><?php echo htmlentities($IDr1['title'], \ENT_QUOTES, 'UTF-8', false); ?></h2></a> <?php } ?> Só está carregando o header e o footer da página, não mostra nenhum erro na página, simplesmente não imprime os registros do Banco de dados, a página fica em branco, só com o header e o footer, já se eu tirar essa parte do código 'WHERE "entry_type" = "post"/"pagina"' os registros são imprimidos normalmente, mas não é assim que ele deve funcionar... Como resolvo isso? Não consegui encontrar o erro. Para sanar qualquer duvida sobre o meu Banco de dados, eu vou deixar duas imagens da minha tela com amostra do meu atual Banco de dados.
  4. Esse é o meu arquivo chamado index.php: <?php $maxlinks = 4; $paginaAtual = (isset($_GET['paginaAtual'])) ? (int)$_GET['paginaAtual'] : 1; $maximo = 5; $inicio = (($maximo * $paginaAtual) - $maximo); $publicacoesUN = DBRead('publicacao', "ORDER BY id DESC LIMIT $inicio, $maximo"); $post = empty($_GET['post']) ? '' : $_GET['post']; $pagina = empty($_GET['p']) ? 'home' : $_GET['p']; if ($post != '' || ($post == '' && $pagina != '')) { switch ($pagina): case 'home': $titulo = ''; $shareTitulo = ''; $descricao = ''; $shareDescricao = ''; $shareImg = ''; $keywords = ''; $ogUrl = ''; $urlCanonico = ''; break; case 'ultimasnoticias': $titulo = ''; $shareTitulo = ''; $descricao = ''; $shareDescricao = ''; $shareImg = ''; $keywords = ''; $ogUrl = ''; $urlCanonico = ''; break; default: $titulo = 'Home'; $pagina = 'home'; endswitch; } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <nav> <ul> <li> <a href="?p=home">Página Inicial</a> </li> <li> <a href="?p=ultimasnoticias">Últimas Notícias</a> </li> </ul> </nav> <?php if (empty($post)) { require_once 'page_' . $pagina . '.php'; } else { require_once 'posts/' . $post . '.php'; } ?> </body> </html> Esse é o meu arquivo chamado ultimasnoticias.php: <div class="container my-3"> <div class="row"> <?php foreach ($publicacoesUN as $UN): ?> <div class="col-12 col-md-6 col-lg-3 mb-3 mb-md-3"> <div class="card"> <div class="img-container"> <a href="index.php?post=<?php echo $UN['title']?>"><img src="<?php echo $UN['capa']?>" alt="<?php echo $UN['alt']?>" class="card-img-top" id="imgUNcover"></a> </div> <div class="card-body"> <a href="index.php?post=<?php echo $UN['title']?>" class="card-title cardTitleLink"><h1 class="cardTitleUN"><?php echo $UN['title']?></h1></a> <p class="card-text text-muted"><?php echo $UN['text']?></p> <a href="index.php?post=<?php echo $UN['title']?>" class="btn btn-outline-danger btn-sm">Continue Lendo</a> </div> </div> </div> <?php endforeach; ?> </div> </div> <?php $pdo = new PDO('mysql:host=localhost;dbname=publicacoes', 'root', ''); $seleciona_2 = $pdo->prepare("SELECT * FROM `bn_publicacao`"); $seleciona_2->execute(); $total = $seleciona_2->rowCount(); $total_paginas = ceil($total/$maximo); if($total > $maximo){ echo '<a href="?paginaAtual=1">First page</a>'; for ($i = $paginaAtual - $maxlinks; $i <= $paginaAtual -1; $i++) { if ($i >= 1) { echo '<a href="?paginaAtual='.$i.'">'.$i.'</a>'; } } echo '<span>'.$paginaAtual.'</span>'; for ($i= $paginaAtual +1; $i <= $paginaAtual + $maxlinks; $i++) { if ($i <= $total_paginas) { echo '<a href="?paginaAtual='.$i.'">'.$i.'</a>'; } } echo '<a href="?paginaAtual='.$total_paginas.'">Last page</a>'; } ?> Quando eu clico nos links da paginação, 1, 2, 3, first page, last page.. etc, o link me redireciona para a pagina principal, que no caso é a page_home.php. Se eu colocar o script do arquivo ultimasnoticias.php dentro do <body> do arquivo index.php a paginação funciona perfeitamente. Ou seja, pra um site estático essa paginação iria funcionar, mas o meu site é server side e não está funcionando, e não consegui achar uma solução. Alguém sabe como resolver?
  5. @DiF Eu tive que mudar a logica: $post = empty($_GET['post']) ? '' : $_GET['post']; $pagina = empty($_GET['p']) ? 'home' : $_GET['p']; if ($post != '' || ($post == '' && $pagina != '')) { E mudar o require: <?php if (empty($post)) { require_once 'page_' . $pagina . '.php'; } else { require_once 'posts/' . $post . '.php'; } ?> Em seguida eu tive que criar outro switch-case, em baixo do switch ($pagina) com o nome switch ($post).
  6. Sabe quando você ta em um site de noticias por exemplo, e atualiza a página, ou então vai pra outra página, e aparece uma noticia nova no lado de baixo do post ou entao ao lado dele. Qual o nome desse recurso? Eu já tenho um script pra exibir os registros que tenho no meu Banco de Dados, so n sei como faz esse tipo de exibiçao. Por exemplo: Eu tenho 40 registros no Banco de Dados, coloquei um LIMIT 4 na exibiçao de registros, ou seja, só ira exibir 4 registros dos 40 que eu tenho. Esses 4 registros que eu coloquei no LIMIT, eu queria que mostrasse registros diferentes na tela, sempre que o usuario atualizasse a página ou entrasse em outra.
  7. Boa tarde. Sim, eu estava precisando colocar um parametro com o 'posts/'. Eu já resolvi meu problema. Obrigado!
  8. Meu index.php tem esse script dentro dele: <?php $pagina = empty($_GET['p']) ? 'home' : $_GET['p']; switch ($pagina): case 'contato': $titulo = 'Contato '; $keywords = ''; $descricao = ''; break; case 'privacidade': $titulo = 'Privacidade '; $keywords = ''; $descricao = ''; break; case 'ultimasnoticias': $titulo = 'Ultimas Noticias'; $keywords = ''; $descricao = ''; break; default: $titulo = 'Home'; $keywords = ''; $descricao = ''; $pagina = 'home'; endswitch; ?> <html> <head> <title><?php echo $titulo; ?></title> <meta name="keywords" content="<?php echo $keywords; ?>"> <meta name="description" content="<?php echo $descricao; ?>"> </head> <body> <?php require_once 'page_' . $pagina . '.php'; ?> <footer>Rodapé</footer> </body> </html> Eu estou tenho muita dificuldade em explicar o meu problema, então eu tentei explicar usando a imagem abaixo.
  9. @makotsunami você poderia entrar na conta que criei no 000webhost? Como eu te passo o login e a senha? Parece que n pode colocar aqui, e eu n tenho permiçao pra te enviar mensagem privada. So tem 1 arquivo php na pasta "posts", eu planejo colocar os outros em .php se eu conseguir acessar eles pelo link (a pergunta do tópico). o link para o arquivo .php está no arquivo page_home. O arquivo init.php foi onde eu coloquei o script php. Qualquer duvida é so me falar. adicionado 3 minutos depois @DiF Sim, uma pessoa me falou que eu deveria usar um include para chamar o arquivo usando o query string "?p=". O problema é que eu não sei como fazer isso. Esse script php que eu coloquei nesse tópico não foi eu que criou. Eu consigo acessar o arquivo da pasta "posts" usando o caminho "posts/nomeDoArquivo.php", mas se eu fizer assim o arquivo vai ficar sem o CSS e sem o Header e Footer, sendo que eu estou usando um script php para colocar somente 1 Header e Footer para todas as páginas.
  10. Eu tenho a seguinte linha: <a href="posts/?p=nomeDoArquivo"> Eu tenho um arquivo chamado "page_home.php", nele tem alguns links, os arquivos dos links estão na pasta "posts", eu não sei porque, mas quando eu clico no link ele n ta mostrando o arquivo. Já quando eu excluo o caminho "posts/" da linha, e tiro o arquivo da pasta posts, colocando ele na mesma pasta que o page_home.php, tudo funciona normalmente. Eu disconfio que é por causa desse script logo abaixo, não foi eu que criou ele, então eu n sei qual o problema. <?php $pagina = empty($_GET['p']) ? 'home' : $_GET['p']; switch ($pagina): case 'contato': $titulo = 'Contato | BizarroNEWS'; $keywords = ''; $descricao = 'descricao contato'; break; case 'privacidade': $titulo = 'Privacidade | BizarroNEWS'; $keywords = ''; $descricao = 'descricao privacidade'; break; case 'ultimasnoticias': $titulo = 'Últimas Notícias | BizarroNEWS'; $keywords = ''; $descricao = 'descricao noticias'; break; case 'nomeDoArquivo': $titulo = ''; $keywords = ''; $descricao = ''; break; default: $titulo = 'BizarroNEWS | Home'; $pagina = 'home'; $keywords = ''; $descricao = 'descricao home'; endswitch;
  11. Recentemente eu aprendi como deixar um site estático um pouco dinâmico, colocando o footer e header em um único documento para todas as páginas. Mas pra cada página eu preciso de uma meta description e meta keywords diferentes. Como faço isso? O script que eu usei: <?php function carrega_pagina(){ (isset($_GET['p'])) ? $pagina = $_GET['p'] : $pagina = 'home'; if(file_exists('page_'.$pagina.'.php')): require_once('page_'.$pagina.'.php'); else: require_once('page_home.php'); endif; } function gera_titulos(){ (isset($_GET['p'])) ? $pagina = $_GET['p'] : $pagina = 'home'; switch ($pagina): case 'contato': $titulo = 'Contato - BizarroNEWS'; break; case 'privacidade': $titulo = 'Privacidade | BizarroNEWS'; break; case 'ultimasnoticias': $titulo = 'Últimas Notícias | BizarroNEWS'; break; default: $titulo = 'BizarroNEWS | Home'; break; endswitch; return $titulo; } ?> Documento index.php: <?php require_once('funcoes.php'); require_once('header.php'); carrega_pagina(); require_once('footer.php'); ?> Eu tenho 3 documentos chamados header.php, index.php e footer.php. O header.php so tem o header da página, footer.php só tem o footer, e o index.php só tem o comando PHP que está chamando o arquivo funcoes.php (primeiro script que colei na pergunta), header.php e footer.php. E tenho mais documentos chamados page_home.php, page_ultimasnoticias.php, page_contato.php e page_privacidade. Dentro deles só o conteudo da página, sem footer e sem header.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×