Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

criar menu dinâmico conforme registros no banco de dados

23-05-2007 11:17

tenho uma tabela onde insiro dados em categorias, vou dar um exemplo ficticio.

quero listar todos estados de todos países.

então no menu tem os paises

Argentina
Brasil
Chile
Canadá
México
e assim segue...

ai qdo clica no PAIS direciona o link para onde eu quero.
porém como ainda não coloquei todos os estados de todos países, não quero os países que estão faltando apareçam no menu.

gostaria de fazer um menu dinâmico, onde ele buscasse no bd quais países existem e então com um WHILE eu criaria o menu.

tenho que comando que sei que lista quais os países cadastrados
// aqui seleciono todos paises cadastrados $sql= mysql_query("SELECT DISTINCT pais FROM mapa"); while ($reg = mysql_fetch_array($sql)){ //começo o while para listar os paises $pais= $reg['pais']; // aqui eu conto qtos registros existem sobre cada pais, qtas vezes cada pais se repete. $busca = mysql_query("SELECT count(*) FROM mapa where pais='$pais';"); $registros = mysql_result($busca,0); echo " Pais: $pais - Registros $registros <hr>"; } //final do while com os paises listados e qtas ocorrencias de cada pais

Este código funciona, mas tem dois erros:

1. Ele não lista em ordem alfabética, preciso que seja em ordem alfabética

2. Muitas vezes os países cadastrados tem nome que não são aceitos pelo bd, (ex: México).

solução, posso registrar os países por códigos no lugar no nome

1 Argentina
2 Brasil
3 Chile
4 Canadá
9 México
15 Singapura
99 China

ai tenho a relação de correspondencia de cada país, posso usar strings para representar o pais pelo nome
$sql= mysql_query("SELECT DISTINCT pais FROM mapa"); while ($reg = mysql_fetch_array($sql)){ //começo o while para listar os paises $pais= $reg['pais']; if ($pais==1){$pais=Argentina;} if ($pais==2){$pais=Brasil;} if ($pais==99){$pais=China;} echo "País: $pais <hr>";

pois bem, como ordeno em ordem alfabética os resultados?

Minha intenção é ir cadastrando os estados, e conforme coloco o país o menu já vai listando e incrementando sozinho.
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17636
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar menu dinâmico conforme registros no banco de dados

23-05-2007 11:25

Para ordenar em ordem alfabética/numérica bastaria usar o seguinte:
SELECT DISTINCT pais FROM mapa ORDER BY pais ASC

ou seja, ele vai listar distintamente na tabela mapa, ordenando pelos países ( pais ) ordenando em ordem alfabética ( ASC ).

Essa questão de não aceitar, por exemplo méxico, é porque você deve ter especificado algum atributo para o campo país no mysql, verifica ai.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

criar menu dinâmico conforme registros no banco de dados

23-05-2007 11:34

sim, pensei em ORDER BY pais
mas se o país está como 1, 2, 99 ???
e os numeros nao seguem a ordem alfabética, pois a cada novo país eu aumento um número, e os países as vezes vão surgindo fora de ordem alfabética.

a questão de não aceitar por ex. MÉXICO é o seguinte
qdo vou fazer a consulta no bd por
...WHERE pais='México'
ele apresenta erro no consulta, tbm acontece algumas vezes qdo o valor é composto, ex ESTADOS UNIDOS DA AMÉRICA
e tbm acho que dá erro na hora de passar estes valores pela GET.

o servidor tbm interpreta que "Estados Unidos" é diferente de "Estados unidos" então para não haver erro eu queria usar números.

atualmente na tabela os valores estão por nome. mas para evitar estes erros do servidor eu pretendo trocar por números.
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17636
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar menu dinâmico conforme registros no banco de dados

23-05-2007 13:02

O ORDER BY serve para ordenar tanto números como letras, quanto aos nomes dos países, usa uma função para jogar tudo para maiúsculo, assim, sua consulta fica padronizada.

AO GRAVAR / CONSULTAR
$string = strtoupper($string);

Quanto a strings, lembre-se de limitar elas, ex.:
$string_tal = "aaa"; // limitado por ""

ou

$valor = $_GET['valor'];

echo "valor"; // limitado por ""

Se não der certo, informe como está trabalhando com essas strings.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 237
Localização: Florianópolis/SC
Contato:

criar menu dinâmico conforme registros no banco de dados

25-05-2007 18:15

Valeu, esta funcionando, só tive que formatar as entradas na tabela, ai fica perfeito, o que dava erro era qdo eu passava alguma string pelo GET, ai palavras com acentos ou compostas não ficavam perfeitas.

Incrivel que até em javascript ta funcionando, com acentos e compostas, todas entradas estão sendo listadas corretamente

Valeu pela força
0
MIDZ.com.br
http://www.midz.com.br
Soluções Web
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17636
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

criar menu dinâmico conforme registros no banco de dados

25-05-2007 21:07

:)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado