Ir para conteúdo
Fórum Script Brasil
  • 0

Banner Em Determinada Categoria


Naty_Za

Pergunta

Oi pessoal...

Estou com um problema que é o seguinte:

meu site é divido por categorias.

e a estrutura dele é a seguinte:

topo.php

menu.php

banners.php

e na index.php puxo essas páginas por include!

e na banners.php, quero colocar os banners de quem está cadastrado no site, então, pra não ficar uma página enorme mostrando todos os banners em imagem e swf, eu fiz assim:

pra cada banner que eu quero colocar, criei uma página php e coloquei o swf ou jpg lá, e daí puxo essa página por include na banners.php.

e até aí ok.. aparece certinho os banners lá...

mas agora eu queria o seguinte:

ex: como são banners das empresas cadastradas no site, eu queria que o banner aparecesse somente na categoria que eu especificar.

se o cadastro da empresa X só aparece na categoria 37, o banner eu também queria que só aparecesse na categoria 37

então, eu teria que especificar lá na página do banner que é pra ele aparecer somente na categoria 37..

mas como fazer isso????

esse é meu dilema...

já tentei usar o phpadsnew e o phpadmentor, mas são muito complexos...

e acredito ser muito mais simples isso que eu quero!!!

Espero que possam me ajudar!!!

Valeuuu

Alguém me ajude!!

por favor!!!!!!!!!!!!!!!

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Bom, antes de tudo, você não precisará criar várias páginas com vários arquivos SWF.

Poderá fazer apenas o seguinte:

(Vou utilizar os códigos dos meus banners aqui, com a dimensão deles, aí depois você altera)

banners.php

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="440" height="100" id="Banner" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="<?php printf("%s", $linha0["arquivo"]); ?>" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<param name="bgcolor" value="#ffffff" />
<embed src="<?php printf("%s", $linha0["arquivo"]); ?>" menu="false" quality="high" wmode="transparent" bgcolor="#ffffff" width="440" height="100" name="Banner" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
Isso fará com que o arquivo swf chamado seja o resultado de uma busca ao banco de dados (MySQL). Então, para fazer funcionar, como é? Não sei se você tem um arquivo de funções, ou fará essas consultas no topo da página, mas lá vai. Agora, você precisa criar uma tabela no MySQL, pode chamá-la de Banners mesmo. Ela deve conter os campos id, nome, arquivo, categoria. Esse eu deixarei por sua conta, pode ser criado no phpmyadmin mesmo. Agora, sempre que entrar em uma categoria nova do seu site, você precisará criar uma variável definindo a categoria, como..
$categoria = "ScriptBrasil";
A consulta seria fácil.
$consulta0 = mysql_query("SELECT * FROM `Banners` WHERE `categoria` = '$categoria' ORDER BY RAND() LIMIT 1");
$linha0 = mysql_fetch_array($consulta0);

Aqui digo para pegar todos os campos da table Banners, onde a categoria corresponde a categoria do site, em ordem randômica, e apenas 1 resultado.

Está feito!

Editado por Lvcifer!
Link para o comentário
Compartilhar em outros sites

  • 0

Então, mas eu não queria que fosse em ordem randômica...

queria que fosse especificado qual banner aparecer e em qual categoria!!!

daí eu fiz algo mais ou menos!!

Criei no banco a tabela banners e tals e cadastrei

e linkei o id da categoria para ele, e deu certinho...

só que ocorre 2 problemas...

1º - quando coloco um valor para a categoria, o banner entra certinho, só na categoria especificada e tal...

só que quando está em outra página que não é a da categoria puxando algum valor, ele fica com o seguinte erro:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

que ocorre mesmo quando você não especifica um valor....

Problema 2:

na tabela de banners, criei os campos:

id, nome, caminho, link

só que eu coloquei tudo com texto..

então, esses textos entram lá como texto e não com a imagem do banner!!!

acho que deu pra entender né?????

esses 2 problemas que ocorre!!!

como fazer???? to postando o código...

Me ajuda!! pls!!

Valeuu

<?php
$consulta = mysql_query("SELECT sub.caminho, nome, link FROM banners sub inner join banners_classe cs on cs.id_banner = sub.id where cs.id_submenu = $id_submenu") or die (mysql_error());
$conta = mysql_num_rows($consulta);
if ($conta == 0){
echo "";
}else{
while($verifica = mysql_fetch_array($consulta)){
$id = $verifica["id"];
$nome = $verifica["nome"];
$caminho = $verifica["caminho"];
$link = $verifica["link"];

echo"
<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><strong><a href=\"$link\"
target=\"_blank\" >$nome</strong></a></strong><br></font>
<img src=<%$caminho%> 
";
}
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

É que você precisará ter a imagem salva em alguma pasta, pois no MySQL, no exemplo que mostrei, vai só o caminho para encontrar esse arquivo.

Dessa forma que você postou, teoricamente, está certinho, só falta mudar a linha:

<img src=<%$caminho%>
para:
<img src=$caminho>
E quando não é especificada a categoria, ele gera o erro pois o código precisa ser diferente, sem o WHERE. Você pode montar um if/else para ocntrolar isso.
if (!$categoria){
$consulta0 = mysql_query{"SELECT * FROM `Banners`");
}
else {
$consulta0 = mysql_query("SELECT * FROM `Banners` WHERE `categoria` = '$categoria'");
}

--- EDITADO ---

Editado por Lvcifer!
Link para o comentário
Compartilhar em outros sites

  • 0

Oi.. então... eu tenho uma pasta no onde estou salvando as imagens do banner e no banco eu só indico o caminho....

e mudei a linha e não funcionou.. :-(

e quanto aquele erro, coloquei o if/else..

na estrutura que eu montei no banco, tem a tabela "banners" que tem os campos:

"id"

"nome"

"caminho"

"link"

e em outra tabela criei "banners_classe"

com os campos:

"id_banner"

"id_submenu" - que são as categorias, puxando o id da tabela "submenu" com as categorias especificadas.

então o if/else ficaria assim?????

if (!$categoria){
$consulta0 = mysql_query{"SELECT * FROM `banners_classe`");
}
else {
$consulta0 = mysql_query("SELECT * FROM `banners_classe` WHERE `id_submenu` = '$id_submenu");
}

seria isso????????

Valeww

Link para o comentário
Compartilhar em outros sites

  • 0

Sim!

Se está em uma table separada, o if/else é este mesmo.

Na coluna caminho, você está salvando o link completo ou apenas relativo?

Pois se for relativo, o erro pode estar aí.

Clique com o botão direito na imagem que não apareceu e vá em propriedades, veja o caminho que está chamando.

Aconselho a colocar o link completo... http://www...

Link para o comentário
Compartilhar em outros sites

  • 0

o caminho que estou fazendo é o completo sim...

e quando eu clico em propriedades aparece o link certinho inteiro...

porque será que não aparece????

e quando coloco o o if/else dá um erro: Parse error:

parse error, unexpected '{'

quer que eu poste a página toda???

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu pela ajuda Lvcifer!

<?
include("Connections/config.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>vim</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$consulta = mysql_query("SELECT sub.caminho, nome, link FROM banners sub inner join banners_classe cs on cs.id_banner = sub.id where cs.id_submenu = $id_submenu") or die (mysql_error());
if (!$categoria){
$consulta0 = mysql_query{"SELECT * FROM `banners_classe`");
}
else {
$consulta0 = mysql_query("SELECT * FROM `banners_classe` WHERE `id_submenu` = '$id_submenu");
}
while($verifica = mysql_fetch_array($consulta)){
$id = $verifica["id"];
$nome = $verifica["nome"];
$caminho = $verifica["caminho"];
$link = $verifica["link"];

echo"
<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><strong><a href=\"$link\"
target=\"_blank\" >$nome</strong></a></strong><br></font>
<img src=$caminho>
";
}
?>
</body>
</html>

Editado por Naty_Za
Link para o comentário
Compartilhar em outros sites

  • 0

Testa o seguinte...

Troca a linha:

$consulta0 = mysql_query{"SELECT * FROM `banners_classe`");
por:
$consulta0 = mysql_query("SELECT * FROM `banners_classe`");
É aí que está o { que gera o erro:
parse error, unexpected '{'
O resto do código me parece ok, deve funcionar perfeitamente agora! Após a edição, seu código ficará da seguinte forma:
<? include("Connections/config.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>vim</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$consulta = mysql_query("SELECT sub.caminho, nome, link FROM banners sub inner join banners_classe cs on cs.id_banner = sub.id where cs.id_submenu = $id_submenu") or die (mysql_error());
if (!$categoria){
$consulta0 = mysql_query("SELECT * FROM `banners_classe`");
}
else {
$consulta0 = mysql_query("SELECT * FROM `banners_classe` WHERE `id_submenu` = '$id_submenu");
}
while($verifica = mysql_fetch_array($consulta)){
$id = $verifica["id"];
$nome = $verifica["nome"];
$caminho = $verifica["caminho"];
$link = $verifica["link"];

echo"
<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><strong><a href=\"$link\"
target=\"_blank\" >$nome</strong></a></strong><br></font>
<img src=$caminho>
";
}
?>
</body>
</html>

(Viram como o fórum ficou bonito?)

Editado por Lvcifer!
Link para o comentário
Compartilhar em outros sites

  • 0

Realmente ficou ótimo o fórum!!

então.. nossa, não é possivel isso!!!

eu troquei a "{" por "(" e mesmo assim ele continua dando o erro!!!

if (!$categoria){
$consulta0 = mysql_query("SELECT * FROM `banners_classe`");
}
else {
$consulta0 = mysql_query("SELECT * FROM `banners_classe` WHERE `id_submenu` = '$id_submenu");
}

aquele "if (!$categoria){" eu deixo categoria mesmo?? porque não tenho nenhuma tabela com esse nome...

de onde vem essa variável?

mas agora tá dando certinho os banners nas categorias certas.. eu separei lá no banco...

só que ele não abre banners "swf" só gif, png e jpg... deve ser porque estou puxando como:

<img src=$caminho>

como fazer pra puxar o swf e sem especificar tamanho de altura?? o de largura vai ser sempre o mesmo 120, mas o de altura pode variar....

são só essas 2 coisas que dá erro!! com o problema do 1 erro bloqueia todo o site e não dá pra fazer mais nada...

obrigada pela paciência e me ajude mais uma vez, por favor!!!!!!!!!

Valeuu

Editado por Naty_Za
Link para o comentário
Compartilhar em outros sites

  • 0

Essa variável $categoria seria aquela que seria definida no topo de cada página, lembra aquela que especificaria que banner colocar?

Mas se você estiver utilizando de outra forma, ou outra variável, então deverá colocar ela no lugar desta $categoria.

Bom, para chamar o SWF você precisa especificar altura e largura., mas poderá dar um jeito se a altura do banner variar.

O que pode ser feito, é adicionar outra coluna na tabela Banners chamada altura, e aí, quando você for chamar o <object... para colocar o SWF, deixa a altura como variável do PHP também.

O que estou querendo dizer é o seguinte:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="440" height="<?php printf("%s", $verifica["altura"]); ?>" id="Banner" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="<?php printf("%s", $verifica["arquivo"]); ?>" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<param name="bgcolor" value="#ffffff" />
<embed src="<?php printf("%s", $verifica["arquivo"]); ?>" menu="false" quality="high" wmode="transparent" bgcolor="#ffffff" width="440" height="<?php printf("%s", $linha0["altura"]); ?>" name="Banner" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

Aqui, onde estiver chamando o height, eu coloquei o <?php printf("%s", $verifica["altura"]); ?>, que puxará as informações do seu banco de dados!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...