Jump to content
Fórum Script Brasil
  • 0

URL Amigável com SQL (Ajuda)


Question

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&aacute;ssico &eacute; algo que, por alguma raz&atilde;o, cai no gosto do p&uacute;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&aacute;ssicos).<br />\r\nE quem sai ganhando &eacute; voc&ecirc;!<br />\r\nConvide amigos e a cada 2 pratos voc&ecirc; paga somente um. &Eacute; uma diferen&ccedil;a de 50% nos pratos! Que tal?</p>\r\n\r\n<p>(Promo&ccedil;&atilde;o v&aacute;lida somente para consumo no restaurante. N&atilde;o &eacute; v&aacute;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á!

Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148875
    • Total Posts
      644917
×
×
  • Create New...