Oi pessoal, tudo certo?
Sou novo em programação e criei um site de restaurante e coloquei URL Amigável dela tudo ok. Mas na hora que eu fui clicar em um link de pagina cuja as informações vem do BD o mesmo deu ERRO.
O link esta:
http://meu-site.com.br/informativo_descricao&id=13
e eu gostaria que ficasse assim ou mais próximo disso:
http://meu-site.com.br/mais-esperanca-para-voce
Bom, segue o que tenho aqui:
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
RewriteRule ^post/([0-9]+)/(.*)?$ posts.php?id=$1 [NC,L]
Index.php
<?php
$modulo = Url::getURL( 0 );
if( $modulo == null )
$modulo = "home";
if( file_exists( "pages/" . $modulo . ".php" ) )
require "pages/" . $modulo . ".php";
else
require "pages/404.php";
?>
Pagina:
<?
$query = "select * from tbl_informativo order by id desc";
$rs = mysql_query($query);
while($row = mysql_fetch_array($rs)){
?>
<div class="mix col-md-12 col-lg-12 col-sm-12 col-xs-12 single-menu <?= $row["categoria"] ?> " >
<div class="event-img">
<img src="<?= $row["capa"] ?>" width="300" height="200" alt="">
</div>
<div class="event-details">
<h3><a href="<?php echo URL::getBase(); ?>informativo_descricao&id=<? echo "$row[id]"; ?>"><? echo "$row[titulo]"; ?></a></h3>
</div>
</div>
<? } ?>
Banco de Dados
CREATE TABLE `tbl_informativo` (
`id` int(11) NOT NULL,
`capa` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`titulo` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`slug` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`categoria` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`texto` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`data` varchar(15) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`codigo` text CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Extraindo dados da tabela `tbl_informativo`
--
INSERT INTO `tbl_informativo` (`id`, `capa`, `titulo`, `slug`, `categoria`, `texto`, `data`, `codigo`) VALUES
(13, '/upload/files/Sem%20T%C3%ADtulo-1.png', 'MAIS ESPERANÇA PARA VOCÊ', 'mais-esperanca-para-voce', 'NOVIDADE', '<p>Para um restaurante um clássico é algo que, por alguma razão, cai no gosto do público, quase que por unanimidade.</p>\r\n\r\n<p>Todos os domingos no jantar (a partir de junho iremos homenagear os nossos clássicos).<br />\r\nE quem sai ganhando é você!<br />\r\nConvide amigos e a cada 2 pratos você paga somente um. É uma diferença de 50% nos pratos! Que tal?</p>\r\n\r\n<p>(Promoção válida somente para consumo no restaurante. Não é válida para entrega)\r\n', '26/05/2019', '9968e41f26b710780d4785ca460ede5b');
Url.php
<?php
class Url
{
private static $url = null;
private static $baseUrl = null;
public static function getURL( $id )
{
if( self::$url == null )
// Verifica se a lista de URL já foi preenchida
self::getURLList();
// Valida se existe o ID informado e retorna.
if( isset( self::$url[ $id ] ) )
return self::$url[ $id ];
// Caso não exista o ID, retorna nulo
return null;
}
public static function getBase()
{
if( self::$baseUrl != null )
return self::$baseUrl;
global $_SERVER;
$startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] );
$excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -9 );
if( $excludeUrl[0] == "/" )
self::$baseUrl = $excludeUrl;
else
self::$baseUrl = "/" . $excludeUrl;
return self::$baseUrl;
}
private static function getURLList()
{
global $_SERVER;
// Primeiro traz todos as pastas abaixo do index.php
$startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] ) -1;
$excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -10 );
// a variável$request possui toda a string da URL após o domínio.
$request = $_SERVER['REQUEST_URI'];
// Agora retira toda as pastas abaixo da pasta raiz
$request = substr( $request, strlen( $excludeUrl ) );
// Explode a URL para pegar retirar tudo após o ?
$urlTmp = explode("?", $request);
$request = $urlTmp[ 0 ];
// Explo a URL para pegar cada uma das partes da URL
$urlExplodida = explode("/", $request);
$retorna = array();
for($a = 0; $a <= count($urlExplodida); $a ++)
{
if(isset($urlExplodida[$a]) AND $urlExplodida[$a] != "")
{
array_push($retorna, $urlExplodida[$a]);
}
}
self::$url = $retorna;
}
}
?>
Não sei se precisa dessa informação toda, mas de qualquer forma esta ai. Obrigado desde já!