Friendly Url in PHP and Sql

8

I have the following php code to make my site urls friendly:

<?php
 $atual = (isset($_GET['pg'])) ? $_GET['pg'] : 'home';
 $permissao = array('home', 'contato', 'sobre', 'politica');
 $pasta = 'arquivos';
   if (substr_count($atual, '/') > 0){
     $atual = explode('/', $atual);
     $pagina = (file_exists("{$pasta}/".$atual[0].'.php') && in_array($atual[0], $permissao)) ? $atual[0] : 'erro';
   } else {
       $pagina = (file_exists("{$pasta}/".$atual.'.php') && in_array($atual, $permissao)) ? $atual : 'erro';
   }
?>

My .htaccess looks like this:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?pg=$1 [L]

For static pages works perfectly. The problem now is to adapt this code to dynamic pages.

On my site I'm going to need a category.php and company.php page that will get the 'slug' value from my database.

The urls would look like this:
site.com.br/categoria.php?slug=nome-of-category
site.com.br/empresa.php?slug=company-name

How to turn these urls into:
site.com.br/nombre-da-categoria
site.com.br/company/company_name

How can I make the sql call on these pages to display the bank's values?
Can anyone help me please?

    
asked by anonymous 01.02.2015 / 03:46

1 answer

1

I had the same experience with a customer once.

For this I did the following and it worked:

index.php

$pagina = $_GET['pg']; //peguei a página.php

$pagina = (isset($pagina)) ? $pagina : 'home';

//agora vou verificar se exite algum valor depois da '/'. 
if(substr_count($pagina , '/') > 0) {

    //se existir, vou atribuir o valor à uma variável que chamarei de $slug aonde farei o get mais tarde.
    $pagina = explode('/',$pagina);
    $slug= $pagina[1]; // repare que a posição do valor é a segunda, ou seja, depois da barra
    include($pagina[0].".php") ;// inclua a pagina que o usuário escolheu (exemplo: empresa.php)

} else {

     // se não existir, o $slug será nulo, mas mesmo assim incluiremos a pagina.php.
     $slug = 0; 
     include($pagina.".php") ; 

}

That is, through this code, you can get the slug get when it exists in the url.

Example with url:

www.site.com.br/empresa/stack-exchange

empresa.php

<?php

$selecionaEmpresa = mysql_query("SELECT * FROM empresas WHERE slugEmpresa = '$slug'");
//verifica se não existe esta empresa no DB
if(mysql_num_rows($selecionaEmpresa) == 0){
    //Se não existir inclua uma pagina geral estática (pode ter a lista das empresas por exemplo)
    include(geral.php);

} else {
    // mas se existir ele fará um looping e resgatar as informações desta empresa no DB
    while($empresaSelecionada = mysql_fetch_array($selecionaEmpresa)){
?>

    <div><?php echo $empresaSelecionada['conteudo']; ?> </div>

    <?php 
    } } 
    //fecha o else e o looping 
    ?>

With the category it's the same thing without modifying the index

Only the file will be called category.php

with the link:

www.site.com.br/categoria/nome-da-categoria

you will make another selection

$selecionaEmpresa = mysql_query("SELECT * FROM empresas WHERE categoriaEmpresa = '$slug'");

Good luck!

    
06.03.2015 / 14:26