Ir para conteúdo

POWERED BY:

Arquivado

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

Luiz Eduardo_8047

[Resolvido] Categoria dinamica

Recommended Posts

Ola Pessoal, bom é o seguinte:

tenho uma tabela categorias, e queria saber se tem e como faz para ao clicar no link se a categoria for 1 ele vai para a pagina categoriaA.php e se a categoria for 2,3,4,5,6,7 ele vai para a pagina categoriaB.php?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo não seria somente criar os devidos links então ?

 

<a href='categoriaA.php'>Categoria A</a>

<a href='categoriaB.php'>Categoria B</a>

 

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo não seria somente criar os devidos links então ?

 

<a href='categoriaA.php'>Categoria A</a>

<a href='categoriaB.php'>Categoria B</a>

 

?

 

 

Mas seria dinamicamente, no meu caso é pra exibir os produtos de uma pagina, e queria que o link mudasse para CategoriaA.php se fosse 1 e se fosse 2,3,4,5,6,7 mudasse o link dinamicamente para categoriaB.php, tem como?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pesquise sobre Url amigaveis, htaccess, etc... Tem vários topicos aqui no imasters.

 

 

Não, não quero usar url amigaveis, eu uso php/mysql e no meu banco de dados existe a tabela categorias e eu queria que mudasse o link de acordo com a categoria clickada!

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com as URL amigaveis você poderá fazer isso facilmente... sem precisar criar cada arquivo para sua respectiva categoria...

 

Vou dar um exemplo:

 

seu site: exemplo.com.br

 

HTACCESS code

RewriteEngine On
RewriteRule ^categorias/?$ /categorias.php?id=$1 [NC,L]

 

quando alguem digitar

 

www.exemplo.com.br/categorias/1

 

irá aparecer a pagina www.exemplo.com.br/categorias.php?id=1

 

 

sem falar que após o 1 você pode colocar o nome da categoria sem mecher em nada no codigo exemplo:

www.exemplo.com.br/categorias/1/categoriaA

www.exemplo.com.br/categorias/1/categoriaA.php

www.exemplo.com.br/categorias/1/categoriaA.asp

www.exemplo.com.br/categorias/1/categoriaA.qualquercoisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com as URL amigaveis você poderá fazer isso facilmente... sem precisar criar cada arquivo para sua respectiva categoria...

 

Vou dar um exemplo:

 

seu site: exemplo.com.br

 

HTACCESS code

RewriteEngine On
RewriteRule ^categorias/?$ /categorias.php?id=$1 [NC,L]

 

quando alguem digitar

 

www.exemplo.com.br/categorias/1

 

irá aparecer a pagina www.exemplo.com.br/categorias.php?id=1

 

 

sem falar que após o 1 você pode colocar o nome da categoria sem mecher em nada no codigo exemplo:

www.exemplo.com.br/categorias/1/categoriaA

www.exemplo.com.br/categorias/1/categoriaA.php

www.exemplo.com.br/categorias/1/categoriaA.asp

www.exemplo.com.br/categorias/1/categoriaA.qualquercoisa

 

 

 

Tudo bem isso foi util pra mim, Obruigado, Mas o que eu digo é tenho uma pagina onde eu exibo todos os produtos, e nesses produtos todos tem o mesmo link

 

<a  href="detalhes.php?id_categoria=<?php echo $row_Recordset1['id_produto'];?>

 

eu queria que se o id_categoria fosse um ele fosse para a pagina

 

<a  href="detalhesA.php?id_categoria=<?php echo $row_Recordset1['id_produto'];?>"></a>

 

e se nao fose id_categoria 1 ele continuasse com o link normal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se consegui entender bem o que você quis dizer, seria algo asim?

 

if($_GET['id_categoria']==1){
header("LOCATION : pagina_que_vc_quer_acessar.php");
}

 

 

Como eu inplantaria isso? Onde eu colocaria?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez não facilitaria você fazer da seguinte maneira:

 

Pagina Categoria.php

 

$id = $_GET['id'];
$query = mysql_query("Select * From Banco where id='$id'");
while($dados=mysql_fetch_array($query)){
echo $dados['campoA'];
echo $dados['campoB'];
echo $dados['campoC'];
echo $dados['campoD'];
}

 

Caso faça desta forma será mais facil quando quizer adicionar uma categoria nova basta cria-la no banco de dados, sem a necessidade de criar uma nova pagina...

 

 

Caso queira fazer como no exemplo anterior (SEM HTACCESS)

 

você teria que fazer uma pagina para cada categoria desta forma

 

Pagina Categoria_A.php

 

$id = 'id_da_categoria_A'; /*Seria um ID fixo não seria passado pela URL, caso desejasse criar mais paginas teria que ir alterando os ID o que dificultaria na manutenção do site.*/
$query = mysql_query("Select * From Banco where id='$id'");
while($dados=mysql_fetch_array($query)){
echo $dados['campoA'];
echo $dados['campoB'];
echo $dados['campoC'];
echo $dados['campoD'];
}

 

 

 

Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez não facilitaria você fazer da seguinte maneira:

 

Pagina Categoria.php

$id = $_GET['id'];
$query = mysql_query("Select * From Banco where id='$id'");
while($dados=mysql_fetch_array($query)){
echo $dados['campoA'];
echo $dados['campoB'];
echo $dados['campoC'];
echo $dados['campoD'];
}

 

Caso faça desta forma será mais facil quando quizer adicionar uma categoria nova basta cria-la no banco de dados, sem a necessidade de criar uma nova pagina...

 

 

Caso queira fazer como no exemplo anterior (SEM HTACCESS)

 

você teria que fazer uma pagina para cada categoria desta forma

 

Pagina Categoria_A.php

 

$id = 'id_da_categoria_A'; /*Seria um ID fixo não seria passado pela URL, caso desejasse criar mais paginas teria que ir alterando os ID o que dificultaria na manutenção do site.*/
$query = mysql_query("Select * From Banco where id='$id'");
while($dados=mysql_fetch_array($query)){
echo $dados['campoA'];
echo $dados['campoB'];
echo $dados['campoC'];
echo $dados['campoD'];
}

Espero ter ajudado!

 

Não, não, você, não está entendendo, eu tenho as categorias ja prontas ja tah montada a pagina eu queria que ao clickar no link ele passa por uma verificação se é anel ou brinco, se for brinco eu queria que ele fosse para a pagina brinco.php?id=2 e se fosse anel eu queria que ele fosse paea a pagina 1 anel.php?id=1!

tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pagina Verifica.php

 

 

<?
if($_GET['categoria']){
if($_GET['categoria']=="anel"){
$location = "anel.php?id=1";
}elseif($_GET['categoria']=="brinco"){
$location = "brinco.php?id=2"
}

header("Location $location");
}

<a href="?categoria=anel">Anel</a>
<a href="?categoria=brinco">brinco</a>
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pagina Verifica.php

 

 

<?
if($_GET['categoria']){
if($_GET['categoria']=="anel"){
$location = "anel.php?id=1";
}elseif($_GET['categoria']=="brinco"){
$location = "brinco.php?id=2"
}

header("Location $location");
}

<a href="?categoria=anel">Anel</a>
<a href="?categoria=brinco">brinco</a>
?>

 

Não, tenho uma pagina catalogo.php pronta, e queria que se eu clicasse no link id_produto=1 ele passa por uma verficação pra ve se é anel e fosse para a pagina detalhens.php e se nao fosse anel ele fosse normal para a pagina detalhes.php!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, até agora já dei varias sujestões... Você deveria estudar algumas expressões do PHP como: if, else, header, while, mysql_query. Entre outras, acho que não precisaria de muita coisa além disso para que o seu sistema funcionasse da maneira que você quer. Caso ainda necessite de ajuda seria bom se mandasse mais detalhes tais como o banco de dados que está usando, as paginas que já estão prontas com seus respectivos códigos, a pagina a qual está com dificuldade, a logica que está usando para a criação do sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, até agora já dei varias sujestões...

 

Ok, estou planejando fazer um curso mais breve possível!

o meu código é este abaixo!

 

<?php require_once('Connections/doiselementos.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
 $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

 $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 switch ($theType) {
   case "text":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;    
   case "long":
   case "int":
     $theValue = ($theValue != "") ? intval($theValue) : "NULL";
     break;
   case "double":
     $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
     break;
   case "date":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;
   case "defined":
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
     break;
 }
 return $theValue;
}
}

//NeXTenesio Special List Recordset
$colname_Recordset1 = "-1";
if (isset($_GET['cod_produto'])) {
 $colname_Recordset1 = $_GET['cod_produto'];
}
mysql_select_db($database_doiselementos, $doiselementos);

$query_Recordset1 = sprintf("SELECT * FROM produto WHERE cod_produto = %s", $colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $doiselementos) or die(header("location:catalogo.php?"));
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
//End NeXTenesio Special List Recordset
?>
<?php
if (!isset($_SESSION)) {
 session_start();
}
$MM_authorizedUsers = "1,2";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
 // For security, start by assuming the visitor is NOT authorized. 
 $isValid = False; 

 // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
 // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
 if (!empty($UserName)) { 
   // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
   // Parse the strings into arrays. 
   $arrUsers = Explode(",", $strUsers); 
   $arrGroups = Explode(",", $strGroups); 
   if (in_array($UserName, $arrUsers)) { 
     $isValid = true; 
   } 
   // Or, you may restrict access to only certain users based on their username. 
   if (in_array($UserGroup, $arrGroups)) { 
     $isValid = true; 
   } 
   if (($strUsers == "") && false) { 
     $isValid = true; 
   } 
 } 
 return $isValid; 
}

$MM_restrictGoTo = "login.php?";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
 $MM_qsChar = "?";
 $MM_referrer = $_SERVER['PHP_SELF'];
 if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
 if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) 
 $MM_referrer .= "?" . $QUERY_STRING;
 $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
 header("Location: ". $MM_restrictGoTo); 
 exit;
}
?>
<?php
$currentPage = $_SERVER["PHP_SELF"];

//NeXTenesio Special List Recordset
$maxRows_Recordset1 = 99999999999;
$pageNum_Recordset1 = 0;
if (isset($_GET['pageNum_Recordset1'])) {
 $pageNum_Recordset1 = $_GET['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;

mysql_select_db($database_doiselementos, $doiselementos);

$query_Recordset1 = "SELECT * FROM produto";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $doiselementos) or die(header("location:catalogo.php?"));
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

if (isset($_GET['totalRows_Recordset1'])) {
 $totalRows_Recordset1 = $_GET['totalRows_Recordset1'];
} else {
 $all_Recordset1 = mysql_query($query_Recordset1);
 $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;
//End NeXTenesio Special List Recordset

$queryString_Recordset1 = "";
if (!empty($_SERVER['QUERY_STRING'])) {
 $params = explode("&", $_SERVER['QUERY_STRING']);
 $newParams = array();
 foreach ($params as $param) {
   if (stristr($param, "pageNum_Recordset1") == false && 
       stristr($param, "totalRows_Recordset1") == false) {
     array_push($newParams, $param);
   }
 }
 if (count($newParams) != 0) {
   $queryString_Recordset1 = "&" . htmlentities(implode("&", $newParams));
 }
}
$queryString_Recordset1 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset1, $queryString_Recordset1);
?>

 

 

 

 

<table width="45" border="0"  cellpadding="0" cellspacing="0" class="body" >
<tr align="left">
<?php
do { // horizontal looper
?>
<td>
<ul class="thumb">
<li><a  href="detalhes.php?id_produto=<?php echo $row_Recordset1['id_produto'];?>" title="2elemento's" class="lyteframe" data-lyte-options="group:galaxies " ><center><img src="imgcatalogo/thumb/<?php echo $row_Recordset1['imagem']; ?>" alt="Clique para ver detalhes" border="0" align="left" style="opacity: 0.4;" title="Clique para ver detalhes" onMouseOver="this.style.opacity=1;this.filters.alpha.opacity=100" onMouseOut="this.style.opacity=0.4;this.filters.alpha.opacity=40"></center></a></li>
</ul></td>
<?php
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
if (!isset($nested_Recordset1)) {
$nested_Recordset1= 1;
}
if (isset($row_Recordset1) && is_array($row_Recordset1) && $nested_Recordset1++%9==0) {
echo "</tr><tr>";
}
} while ($row_Recordset1); //end horizontal looper 
?>
</tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Sumario eu sei fazer, mas to tendo um trabalhão pra fazer isso, como já postei os códigos acima!

eu queria que ao clicar no link

 

<a  href="detalhes.php?id_produto=<?php echo $row_Recordset1['id_produto'];?>"><?php echo $row_Recordset1['nomedoproduto'];?></a>

 

ele reconhecesse o id_categoria e se fosse 1 ele ia para a pagina

 

<a  href="destalhedoproduto.php?id_produto=<?php echo $row_Recordset1['id_produto'];?>"><?php echo $row_Recordset1['nomedoproduto'];?></a> 

 

e se não fosse ele ia para a pagina do link normal

o codigo do meu banco de dados é

 

CREATE TABLE `produto` (
 `id_produto` int(11) NOT NULL auto_increment,
 `cod_produto` varchar(40) NOT NULL,
 `nomerodio` varchar(60) default NULL,
 `descricao` varchar(400) default NULL,
 `preco` decimal(10,2) default NULL,
 `imagem` varchar(80) NOT NULL,
 `id_categoria` int(11) default NULL,
 PRIMARY KEY  (`id_produto`),
 KEY `relcatprod` (`id_categoria`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=363 ;

 

Pode me ajudar por favor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi mal, tinha entendido errado..

se passar os parâmetros você já sabe,

então só adaptar a pg verifica.php q ja está lá em cima:

(if c/ header location):

 

<?php
if($_GET['produto']==1)
{
 header('Location: pagina-de-detalhes.php');
}
else
{
 header('Location: catalogo.php');
}
?>

 

só lembre d adaptar tb o link; ele deverá direcionar à pg verifica.php;

ex:

 

<a href="verifica.php?produto=<?php echo $row_Recordset1['idcategoria']; ?>"><?php echo $row_Recordset1['produto']; ?><br />
 </a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi mal, tinha entendido errado..

se passar os parâmetros você já sabe,

então só adaptar a pg verifica.php q ja está lá em cima:

(if c/ header location):

 

<?php
if($_GET['produto']==1)
{
 header('Location: pagina-de-detalhes.php');
}
else
{
 header('Location: catalogo.php');
}
?>

 

só lembre d adaptar tb o link; ele deverá direcionar à pg verifica.php;

ex:

 

<a href="verifica.php?produto=<?php echo $row_Recordset1['idcategoria']; ?>"><?php echo $row_Recordset1['produto']; ?><br />
 </a>

 

 

ok funcionou certinho, obrigado, mas tem como passa o id_produto tambem pelo verifica.php

if($_GET['id_produto']==1)
{
 header('Location: ../detalhes.php?id_produto=<?php $row_Recordset1["id_produto"];?>');
}

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.