Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cybertec

Site Dinâmico

Recommended Posts

Estou trabalhando no desenvolvimento de portal que terá grande quantidade de material,

paginas de classificados, noticias, lista comercial, agenda de eventos, galeria de fotos cada uma tem sua própria tabela .

Estou querendo ter uma pagina single.php porem eu quero que essa pagina single possa identidicar de qual tabela ela deve puxar o conteúdo para exibição.

Sei que poderia apenas criar uma tabela post com um campo de categoria porem isso deixaria meu banco de dados muito poluído e enorme.

Ficarei grato se alguém poder me ajudar.

 

Segue abaixo o código da pagina single.php

 

<?php include_once("config.php");?>
<div id="page">
<div id="full_banner_1">
<p><img src="<?php echo $urlbase_config;?>/images/publicidade_left1.gif" title="" alt="" /></p>
 <object id="FlashID2" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="728" height="95">
   <param name="movie" value="<?php echo $urlbase_config;?>/swf/728x90_ultimo_novo_vestibular.swf" />
   <param name="quality" value="high" />
   <param name="wmode" value="opaque" />
   <param name="swfversion" value="6.0.65.0" />
   <!-- This param tag prompts users with Flash Player 6.0 r65 and higher to download the latest version of Flash Player. Delete it if you don't want users to see the prompt. -->
   <param name="expressinstall" value="<?php echo $urlbase_config;?>/scripts/expressInstall.swf" />
   <!-- Next object tag is for non-IE browsers. So hide it from IE using IECC. -->
   <!--[if !IE]>-->
   <object type="application/x-shockwave-flash" data="<?php echo $urlbase_config;?>/swf/728x90_ultimo_novo_vestibular.swf" width="728" height="95">
     <!--<![endif]-->
     <param name="quality" value="high" />
     <param name="wmode" value="opaque" />
     <param name="swfversion" value="6.0.65.0" />
     <param name="expressinstall" value="<?php echo $urlbase_config;?>/scripts/expressInstall.swf" />
     <!-- The browser displays the following alternative content for users with Flash Player 6.0 and older. -->
     <div>
       <h4>Content on this page requires a newer version of Adobe Flash Player.</h4>
       <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p>
     </div>
     <!--[if !IE]>-->
   </object>
   <!--<![endif]-->
 </object>
</div><!---fim full banner---->

<div id="publididade_page">Publicidade</div>
<?php
	 $slq = mysql_query("SELECT * FROM noticias WHERE catSlug = '$arquivo' AND tituloSlug = '$post' ")
	 	or die(mysql_error());
		while($res = mysql_fetch_array($slq)){
		$images 		= $res['images'];
		$titulo 			= $res['titulo'];
		$tituloSlug 		= $res['tituloSlug'];
		$descricao		= $res['descricao'];
		$data 			= $res['data'];
		$categoria 		= $res['categoria'];
		$catSlug 		= $res['catSlug'];
		$tags 			= $res['tags'];
		$tagsSlug 		= $res['tagsSlug'];

?>       		
<div id="content">
<ul>
<li><?php echo $titulo;?></li>
< li >
<img src="<?php echo $urlbase_config;?>/timthumb.php?src=<?php echo $urlbase_config;?>/upload_noticias/<?php echo $images;?>&h=320&w=500&zc=0" title="<?php echo $titulo;?>" alt="<?php echo $titulo;?>" />
</ li >
< li ><?php echo $descricao;?></ li >
</ul>
<?php
}
?>
</div><!---content---> 
</div><!---page--->

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode indicar na url o q ele deve puxar do banco, ae você cria um link com query string

 

single.php?action=ler&tabela=classificados&id=171

 

ae você puxa os 'action','tabela','id' por $_GET....$_GET['action'] etc...ae você joga na query do mysql...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que poderia apenas criar uma tabela post com um campo de categoria selecionar atravez da categoria porem isso deixaria meu banco de dados muito poluído e enorme.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o htaccess

 

rewriterule ^single.php\/(.*)$ /single.php?action=$1&tabela=$2&id=$3

 

ae você digita single.php/ler/classificados/171

 

e pega por get no single, eh so ler mais um pouco sobre url amigaveis...

 

PS nao tenho certeza se a regra acima esta correta, mas tenho certeza q esta eh a solucao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu vou ter que alterar o mode reescrita do site. certo?

Meu arquivo .htaccess hoje esta dessa forma:

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 

 

 

Então devo adicionar mais regras.

 

Como vou fazer isso???

Compartilhar este post


Link para o post
Compartilhar em outros sites

nada, o seu htaccess ja faz pra você...ele ja pega tudo e transforma em query string

 

entao no php você so precisa fazer isto

 


if(isset($_GET['url']) && !empty($_GET['rul']))
{

$params = explode('/',$_GET['url']);

$action  = isset($params[0]) && !empty($params[0]) ? $params[0] : null;
$tabela  = isset($params[1]) && !empty($params[1]) ? $params[1] : null;
$id     = isset($params[2]) && !empty($params[2]) ? $params[2] : null;
}

//agora você pode usar o if pra ver se cada uma das variaveis ($action,$tabela, e id foram inicializadas) e usar na sua query ao mysql

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse script eu devo usar em qual pagina na index ou na single?

 

Segue a abaixo o script da pagina index.php

 

<?php
$url = $_GET['url'];
$urlE = explode('/', $url);
$arquivo = $urlE['0'];
$post    = $urlE['1'];
$search = $_GET['s'];

$paginas = array('galeria', 'agenda', 'noticias', 'cadastrar-empresa', 'quem-somos', 'contato');////adiciona as paginas estaticas
if(isset($_GET['s']) && $_GET['s'] != ''){
include "search.php";
}elseif(isset($arquivo) && $arquivo == 'arquivos'){
include "arquivo.php";
}elseif(isset($post) && $post != ''){
include "single.php";
}elseif(isset($arquivo) && in_array($arquivo, $paginas)){
include "$arquivo.php";
}elseif(isset($arquivo) && $arquivo == ''){
include "home.php";
}else{
include "categoria.php";
}
?>

 

Se tiver alguma sugestão para melhorar meu codigo.

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo vou fazer alguns testes com script que você me passou.

depois posto resultados e duvidas.

obrigado pela ajuda.

 

 


if(isset($_GET['url']) && !empty($_GET['rul']))
{

$params = explode('/',$_GET['url']);

$action  = isset($params[0]) && !empty($params[0]) ? $params[0] : null;
$tabela  = isset($params[1]) && !empty($params[1]) ? $params[1] : null;
$id     = isset($params[2]) && !empty($params[2]) ? $params[2] : null;
}

//agora você pode usar o if pra ver se cada uma das variaveis ($action,$tabela, e id foram inicializadas) e usar na sua query ao mysql

 

Não consegui formular o codigo.

 

da uma olhada no meu arquivo index.php

<?php
include_once("topo.php");
?>
<div id="conteudo">
<?php
$url = $_GET['url'];
$urlE = explode('/', $url);
$arquivo = $urlE['0'];
$post    = $urlE['1'];
$search = $_GET['s'];

$paginas = array('galeria', 'agenda', 'noticias', 'cadastrar-empresa', 'quem-somos', 'contato');////adiciona as paginas q ñ tem sub conteudo
if(isset($_GET['s']) && $_GET['s'] != ''){
include "search.php";
}elseif(isset($arquivo) && $arquivo == 'arquivos'){
include "arquivo.php";
}elseif(isset($post) && $post != ''){
include "single.php";
}elseif(isset($arquivo) && in_array($arquivo, $paginas)){
include "$arquivo.php";
}elseif(isset($arquivo) && $arquivo == ''){
include "home.php";
}else{
include "categoria.php";
}
?>
</div><!---Fim do conteudo--->
<?php
include_once("rodape.php");
?>

 

Agradeço desde a ajuda que estou recebendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que aconteceu? que erro deu?

 

primeiro você precisa validar o q esta recebendo e você nao esta validando, veja q eu fiz operadores ternarios, ou seja, de uma froma bem simples eu validei o valor recebido por $_GET['url'], você nao...por ser q get url nao tenha recebido nada, dae ele nao faz nada mesmo...outra coisa, ao invez de usar if elseif varia vezes, use switch, isto deixa mais limpo e mais rapido...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que aconteceu? que erro deu?

 

primeiro você precisa validar o q esta recebendo e você nao esta validando, veja q eu fiz operadores ternarios, ou seja, de uma froma bem simples eu validei o valor recebido por $_GET['url'], você nao...por ser q get url nao tenha recebido nada, dae ele nao faz nada mesmo...outra coisa, ao invez de usar if elseif varia vezes, use switch, isto deixa mais limpo e mais rapido...

 

Você poderia me dar um exmplo mais claro.

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.