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

Mostrar Texto Junto Com O Cadastro


Naty_Za

Pergunta

Oi Pessoal... to com um probleminha..

Tenho um sistema de cadastro de empresas por categorias... então, 1 empresa é cadastrada em várias categorias...

pra isso, fiz assim:

criei as tabelas:

"cadastros"

"submenu" - que são as categorias

"classes" - que é a tabela que indica o id_submenu e o id_cadastro...

no meu código está assim:

<?php
$consulta = mysql_query("SELECT sub.titulo, servicos, endereco, tel, email, http FROM cadastros sub inner join classes cs on cs.id_cadastro = sub.id where cs.id_submenu = $id_submenu") or die (mysql_error());
$conta = mysql_num_rows($consulta);
if ($conta == 0){
echo "NÃO TEM REGISTROS!";
}else{
while($verifica = mysql_fetch_array($consulta)){
$id = $verifica["id"];
$titulo = $verifica["titulo"];
$servicos = $verifica["servicos"];
$endereco = $verifica["endereco"];
$tel = $verifica["tel"];
$email = $verifica["email"];
$http = $verifica["http"];

echo"
<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><strong><a href=\"$http\"
target=\"_blank\" >$titulo</strong></a></strong><br></font>
<i>Serviços: $servicos</i><BR>
Endereço: $endereco<BR>
Tel: $tel<BR>
Email: <a href=mailto:$email>$email</a><BR>
<BR>
";
}
}
?>

até aí beleza... o mesmo cadastro aparecia em todas as categorias...

o que eu queria fazer então é o seguinte:

que na tabela "classes" eu criasse mais um campo "texto"

daí, de acordo com a categoria que uma empresa foi cadastrada, eu queria escrever um texto falando da empresa em relação aquela categoria....

então, em cada categoria que eu determinei pra empresa aparecer, coloquei também um texto falando em relação a ela...

por isso não posso usar o campo geral dos "cadastros", porque senão, vai ficar igual o texto pra todos, e eu queria que ficasse tipo personalizado....

deu pra entender??? por favor, pessoal, me ajudem... como eu faria isso no meu código????

Valeuuuu

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Posso te ajudar, mas preciso saber o que você entende por "personalizado" neste caso e onde esta "personalização" seria processada?

Explico:

- você entende que personalizado seria um texto genérico ao nível da categoria, ou classe, e que seria exibido igualmente para todas as empresas da mesma categoria;

ou

- você entende que personalizado seria um texto genérico ao nível da categoria, ou classe, mas cujo conteúdo deveria ser adaptado a algum dado da empresa, como o nome desta, ao exibir o texto (tipo ocorre em malas diretas...);

ou

- você entende que personalizado seria um texto específico para a empresa e, obviamente, seria exibido um texto para cada empresa.

Tendo esta informação, que foi o que não entendi de seu post, ficaria satisfeito em poder ajudar.

B)

Link para o comentário
Compartilhar em outros sites

  • 0

Oi CSML sistemas.. Valeu pela resposta....

seria mais próximo o primeiro da sua explicação.

Na tabela "cadastros" aonde apenas são cadastradas as empresas, existem os campos, que vão sempre aparecer os dados da empresa, independente de categoria, vão ser sempre os mesmos....

ex:

um única empresa vende sapatos e blusas.... então, na categoria sapatos vai aparecer o nome da empresa, e todos os campos da tabela "cadastros" que são as informações fixas, como endereço, telefone.. etc...

e na categoria blusa também, vão aparecer as informações fixas..

a uníca diferença nesses 2 cadastros seria os serviços.... tipo, ele aparece assim o cadastros:

Titulo: informação fixa da tabela cadastro

Serviço: informação personalizada de acordo com a categoria

Endereço: informação fixa da tabela cadastro

Tel: informação fixa da tabela cadastro

Email: informação fixa da tabela cadastro

se eu colocasse na tabela "cadastros" o campo "serviços" para aparecer fixo junto com os outros, iria mostrar tanto na categoria de sapatos que a empresa vende blusas, como vice -versa.. e eu não queria isso..

porque assim, um empresa vender 2 produtos não dá nada, é pouco, mas daí vou cadastrar empresas que vende mais de 20 produtos, e toda vez ficar listando todos os produtos, ficaria muito "carregado" para leitura...

e como na tabela "classes" ocorre essa divisão de empresas por categoria, pensei que talves fosse mais fácil criar um campo ali, para personalizar o texto do serviços...

eu especifico o id_cadastro e o id_submenu (que são as categorias) e daí ficaria mais fácil personalizar o texto...

tipo, na empresa 1 vai entrar na categoria 5 e o texto de serviços vai ser " vendemos blusas"

daí na mesma empresa 1 vai entrar na categoria 8 e o texto de serviços vai ser " vendemos sapatos"

só que nesse script que eu postei, ele puxa as informações da tabela cadastros, só puxa as informações fixas, e isso que não consigo fazer, puxar essas informações de texto da tabela "classes", para entrar na categoria certa.....

entendeu?? qualquer coisa explico novamente, sem problemas!!!

Valeu pela ajuda mesmo!!!!!!!!!!!!!!!!!!! ;)

-------------------------------------------------------------------------------------------------------------------------------------------

Então, consegui fazer uma parte do que eu precisava... mas ainda falta uma coisa...

assim: quando alguém clicar em uma determinada categoria, vai aparecer cadastros de empresas que vendem produtos daquela categoria.

já consegui separar um campo com textos distintos de cada categoria...

eu criei outro "select".. até aí beleza... mas como eu criei o select abaixo do outro, o serviço está aparecendo lá em baixo.. tipo assim:

TITULO

ENDEREÇO

TELEFONE

EMAIL

SERVIÇOS

Tem como interagir campos de tabelas diferentes???? porque os 4 primeiros campos, são da tabela "cadastros" o ultimo, o serviços, é da tabela "classes"

o que eu precisa saber então, é, como colocar esse "serviços" junto com os campos acima, mais especificamente abaixo do titulo, sendo ele, campo de outra tabela...

tem como fazer isso???

vou postar meu código:

<?php
$consulta = mysql_query("SELECT sub.titulo, endereco, tel, email, http FROM cadastros sub inner join classes cs on cs.id_cadastro = sub.id where cs.id_submenu = $id_submenu") or die (mysql_error());
$conta = mysql_num_rows($consulta);
if ($conta == 0){
echo "NÃO TEM REGISTROS!";
}else{
while($verifica = mysql_fetch_array($consulta)){
$id = $verifica["id"];
$titulo = $verifica["titulo"];
$endereco = $verifica["endereco"];
$tel = $verifica["tel"];
$email = $verifica["email"];
$http = $verifica["http"];

echo"
<font face=Verdana, Arial, Helvetica, sans-serif><font size=1><strong><a href=\"$http\"
target=\"_blank\" >$titulo</strong></a></strong><br></font>
Endereço: $endereco<BR>
Tel: $tel<BR>
Email: <a href=mailto:$email>$email</a><BR>
<BR><BR>
";
}
}
?>
                      <p>
                        <?
$consulta = mysql_query("SELECT * FROM classes WHERE id_submenu = '$id_submenu' ORDER BY servicos ASC") or die (mysql_error());
while($verifica = mysql_fetch_array($consulta)){ 
$id_submenu = $verifica["id_submenu"];
$servicos = $verifica["servicos"];

echo"<font face=Verdana, Arial, Helvetica, sans-serif><font size=2><i>$servicos</i><br></font>";
}
?>

Valeu!!!!

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

  • 0

Para melhor performance da aplicação, seria melhor fazer uma só consulta ao banco mesmo, já que se trata de uma consulta simples. Se entendi direito, a informação sobre serviços de uma categoria está apenas em uma linha da tabela, ok? Se estiver errado, será necessário corrigir o código da consulta... Na dúvida, vamos tratar dos três casos.

Primeira hipótese: UM REGISTRO PARA A EMPRESA, UM REGISTRO PARA SERVIÇOS - CHAVE DE PESQUISA "id_submenu"

Neste caso, somente uma query já retornaria todos os dados necessários:

SELECT t1.id, t1.titulo, t2.servicos, t1.endereco, t1.tel, t1.email, t1.http
FROM cadastros t1
INNER JOIN classes t2 ON (t1.id = t2.id_cadastro)
WHERE (t2.id_submenu = $id_submenu)[/codebox]

Não seria necessário utilizar um comando WHILE para percorrer a tabela, já que você tem conhecimento de que o resultado da consulta é apenas uma linha.

Segunda hipótese: UM REGISTRO PARA A EMPRESA, VÁRIOS REGISTROS PARA SERVIÇOS - CHAVE DE PESQUISA "id_submenu"

Aqui a coisa seria tão simples quanto a primeira, com a diferença que você pode optar por utilizar uma consulta apenas, ou várias em um loop de varredura do resultado da primeira consulta. Seu código estaria bem próximo do correto.

Vou fazer a opção de uma consulta apenas:

[codebox]SELECT t1.id, t1.titulo, t2.servicos, t1.endereco, t1.tel, t1.email, t1.http
FROM cadastros t1
INNER JOIN classes t2 ON (t1.id = t2.id_cadastro)
WHERE (t2.id_submenu = $id_submenu)

Sei o que pensou... é a mesma consulta! Correto, é mesmo, só que nesta hipótese, o resultado teria várias linhas, e você deve tratar disso no código PHP, utilizando um WHILE para varrer o resultado, sendo que a exibição seria controlada por um teste que verificaria se o registro é o primeiro ou o último do resultado. Assim, se fosse o primeiro, os campos "titulo" e "servicos" seriam exibidos. Se não fosse o primeiro, nem o último, somente o campo "servicos" deve ser exibido. Se fosse o último registro, os campos "servicos", "endereco", "tel" e "email" devem ser exibidos. Claro que deve formatar em HTML essa exibição, para cada caso, de forma a ficar apresentável em sua página. Acho que deve saber bem como fazer isso, então deixa de lado aqui...

Se optar por várias consultas, apenas inclua as consultas aos dados da tabela "classes" no WHILE que percorre o resultado da primeira tabela, "cadastros". Assim, você pode incluir os "servicos" obtidos entre dados da tabela "cadastros".

Terceira hipótese: VÁRIOS REGISTROS PARA EMPRESA, VÁRIOS REGISTROS PARA SERVIÇOS, CHAVE DE PESQUISA "id_submenu"

Aqui a coisa seria tão simples quanto a primeira, com a diferença que você pode optar por utilizar uma consulta apenas, ou várias em um loop de varredura do resultado da primeira consulta. Seu código estaria bem próximo do correto.

Vou fazer a opção de uma consulta apenas:

SELECT t1.id, t1.titulo, t2.servicos, t1.endereco, t1.tel, t1.email, t1.http
FROM cadastros t1
INNER JOIN classes t2 ON (t1.id = t2.id_cadastro)
WHERE (t2.id_submenu = $id_submenu)[/codebox]

Nesta hipótese, como na segunda, o resultado teria várias linhas, e você deve tratar de forma semelhante no código PHP, utilizando um WHILE para varrer o resultado, sendo que a exibição seria controlada por uma condicional que avaliaria o valor de "t1.id", caso fosse diferente do da linha anterior, exibiria o restante dos dados (endereço, telefone e email) e começaria novo registro na página HTML, caso contrário, apenas acrescentar o dado dos serviços. Isso poderia ser controlado por variáveis auxiliares que armazenariam o valor de "t1.id", além dos valores de "t1.endereco", "t1.tel", "t1.email". Se tiver dificuldades, me avisa!

Se optar por várias consultas, assim como na segunda hipótese, apenas inclua as consultas aos dados da tabela "classes" no WHILE que percorre o resultado da primeira tabela, "cadastros". Assim, você pode incluir os "servicos" obtidos entre dados da tabela "cadastros".

---

Parece brincadeira, né? As três hipóteses utilizaram o mesmo código SQL... mas veja que o resultado difere nas três possibilidades: 1 - apenas uma linha; 2 - um id apenas, mas com mais de uma linha variando campo "servico"; 3 - mais de um "id".

---

Vlw?

B)

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...