Ir ao conteúdo
  • Cadastre-se

unknn

Membro Júnior
  • Posts

    17
  • Cadastrado em

  • Última visita

Reputação

4
  1. @navegantenarede Eu n sei, eu neim entendo de .htaccess, eu so achei esse codigo em um forum, e consegui fazer funcionar a url amigavel pra uma query string, a ?p= pega os arquivos que estão no diretorio principal, e a ?page= pega os arquivos em um sub-diretorio.
  2. @navegantenarede Eu tentei o que você disse, e mostrou esse erro na tela em todas as pagina q acesso ERR_TOO_MANY_REDIRECTS
  3. Eu estou usando esse codigo abaixo pra ter uma url amigavel, atualmente eu preciso de duas querystrings para acessar os arquivos do meu site, ?p= e ?page =. Eu tentei colocar uma url amigavel, e consegui colocar somente pra uma querystring. Como faço pra colocar dois RewriteRule, um pra cada querystring? <IfModule mod_rewrite.c> RewriteEngine On Options -Indexes ## RewriteCond Set here RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ index.php?p=$1 </IfModule>
  4. Mostra esse erro de SQL: Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-8, 4' at line 1. Isso acontece quando eu escrevo isso no URL:&tab=-1 ou &tab=-2, &tab=-3 ... etc O erro aponta pra essa query: $UTP = $db->query("SELECT `list`, `price` FROM burritos WHERE date = 'vm' LIMIT $startVEP, $maximoVEP"); Na parte onde tem escrito syntax to use near '-8, 4' está dizendo que estou passando um valor negativo no LIMIT. Então o erro está em $startVEP = (($maximoVEP * $page) - $maximoVEP); mas eu não vejo o que tem de errado com a logica. Alguém pode ajudar? Esse é o código de paginação: <?php if(empty($_GET['tab'])){}else{$page = $_GET['tab'];} if(isset($page)){$page = $_GET['tab'];}else{$page = 1;} $maximoVEP = 1; $startVEP = (($page * $maximoVEP) - $maximoVEP); $list = 'Asic'; $stmtVEP = $db->prepare("SELECT count(*) FROM burritos WHERE date = 'vm' AND list = :list"); $stmtVEP->bindValue(':list', $list, PDO::PARAM_STR); $stmtVEP->execute(); $total = $stmtVEP->fetchColumn(); $total_pages = ceil($total/$maximoVEP); echo '<nav aria-label="Page navigation example">'; echo '<ul class="pagination paginationEp ml-1 mr-1">'; if ($page >= 2){ echo '<li class="page-item">'; echo '<a class="page-link" href="?p='; echo htmlentities($slug, \ENT_QUOTES, "UTF-8", false); echo '&tab='.($page-1).'"><i class="faz fa-angle-left"></i> ANTERIOR</a>'; echo '</li>'; } echo '<li class="page-item">'; echo '<a class="page-link" href="'; echo htmlentities($slug, \ENT_QUOTES, "UTF-8", false); echo '"><i class="faz fa-list-ul"></i></i></a>'; echo '</li>'; if ($page < $total_pages){ echo '<li class="page-item">'; echo '<a class="page-link" href="?p='; echo htmlentities($slug, \ENT_QUOTES, "UTF-8", false); echo '&tab='.($page+1).'">PRÓXIMO <i class="faz fa-angle-right"></i></a>'; echo '</li>'; } echo '</nav>'; $conn = null; ?>
  5. $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?
  6. 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
  7. ##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.
  8. 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?
  9. @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).
  10. 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.
  11. Boa tarde. Sim, eu estava precisando colocar um parametro com o 'posts/'. Eu já resolvi meu problema. Obrigado!
  12. 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.
  13. @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.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...