Ir para conteúdo

POWERED BY:

Arquivado

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

Gui Alexander Schweickert

Mostrar apenas os que tem registros no mysql?

Recommended Posts

tenho esse codigo

       <h1>selecione um mes</h1>
<?php do { ?> 
   	<a href="ver/<?php echo $rowmes['Mes']; ?>"><?php echo $rowmes['Desc']; ?></a>
       <?php } while ($rowmes = mysql_fetch_assoc($mes)); ?>

na pratica ele fica:

selecione um mes
· janeiro
· fevereiro
· março...
(e todos os outros 9 meses q existem na tabela)

 

ele mostra todos os meses .. no caso so quero que mostre os meses que possuem registros, vou cadastrar alguns dados mas so para alguns meses por ex: janeiro, fevereiro..

nao quero que ele mostre [no caso] os meses março, abril, maio, junho... pq eles nao teriam registros

 

resumindo: so quero exibir os meses que possuem registros(os dados q vou cadastrar). os meses que nao possuem registros, nao irao aparecer na pagina.

alguem poderia me ajudar com isso ?

 

ficarei agradecido!

obrigado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem,

mas acho que é algo assim;

 

 

<select name="mes">

<option value="">Selecione um mês</option>

$sql = "SELECT * FROM mes";
$query = mysql_query($sql) or die (mysql_error());

while($ln = mysql_fetch_object ){
$mes = $ln -> mes;
$desc = $ln -> desc;
$id = $ln -> id;

echo '
		<option value="'.$id.'">'.$mes.'</option>
	';
}

</select>

 

Algo assim pelo o que entendi, não testei, mas veja se é o que quer. happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi, basta você adicionar um critério where na cláusula sql, tipo $sql = "SELECT * FROM mes WHERE DESC >0 OU qualquer outro campo do BD que não pode estar vazio";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi, basta você adicionar um critério where na cláusula sql, tipo $sql = "SELECT * FROM mes WHERE DESC >0 OU qualquer outro campo do BD que não pode estar vazio";

 

tenho 2 consultas referentes ao mes

"SELECT * FROM mes ORDER BY Cast(mes as UNSIGNED)";

"SELECT * FROM mes WHERE mes = %s"

mes Mes = numero do mes (ex 01 = janeiro)

mes Desc = nome do mes (ex janeiro)

 

nao consegui entender onde eu coloco where desc>0 :S

hiago nao quero fazer um select é só um menu com os meses mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho 2 consultas referentes ao mes

"SELECT * FROM mes ORDER BY Cast(mes as UNSIGNED)";

"SELECT * FROM mes WHERE mes = %s"

mes Mes = numero do mes (ex 01 = janeiro)

mes Desc = nome do mes (ex janeiro)

 

nao consegui entender onde eu coloco where desc>0 :S

hiago nao quero fazer um select é só um menu com os meses mesmo

 

Não precisa fazer duas consultas.

O where que o companheiro falou é algo assim,

SELECT * FROM mes WHERE mes>4 ORDER BY Cast(mes as UNSIGNED);

nesse caso só exibiria os meses maiores que 4 (abril), mas dessa forma iria dar errado pois seu bd está diferente

o que acho que pode ter aí e pode dar certo é

SELECT * FROM mes WHERE id BETWEEN 5 AND 6 ORDER BY Cast(mes as UNSIGNED);

 

algo assim, esse seu order nunca vi, pode ter um jeito mais simples ORDER by id DESC,

suponho que para cada mês um id, acho que teria 12 ids (12 meses).

Acho que é isso.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa fazer duas consultas.

O where que o companheiro falou é algo assim,

SELECT * FROM mes WHERE mes>4 ORDER BY Cast(mes as UNSIGNED);

nesse caso só exibiria os meses maiores que 4 (abril), mas dessa forma iria dar errado pois seu bd está diferente

o que acho que pode ter aí e pode dar certo é

SELECT * FROM mes WHERE id BETWEEN 5 AND 6 ORDER BY Cast(mes as UNSIGNED);

 

algo assim, esse seu order nunca vi, pode ter um jeito mais simples ORDER by id DESC,

suponho que para cada mês um id, acho que teria 12 ids (12 meses).

Acho que é isso.

 

esse order é pra exibir assim:

1

2

3

11

22

 

tava assim:

1

11

2

22

3

 

nesse caso só exibiria os meses maiores que 4 (abril), mas dessa forma iria dar errado pois seu bd está diferente

o que acho que pode ter aí e pode dar certo é

nao entendi pq exibir meses maiores. so quero exibir os meses q tem registros neles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tá, agora acho que entendi o que você quer...

 

SELECT * FROM mes WHERE desc <> '';

 

selecione todos da tabela mes onde o campo desc seja diferente de nulo,

ou seja, pegar todos os meses que não tem descrição

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tá, agora acho que entendi o que você quer...

 

SELECT * FROM mes WHERE desc <> '';

 

selecione todos da tabela mes onde o campo desc seja diferente de nulo,

ou seja, pegar todos os meses que não tem descrição

eu cadastro nas ids.. tenho tabela "eventos" e "mes"

eventos tem id do evento, mes q foi cadastrado (por numero 01 = janeiro, 02 = fevereiro), data (dia 15, dia 20) foto e descriçao do evento

mes tem os numero dos meses para cadastrar 01 = janeiro etc, descriçao do mes que no caso é janeiro, fevereiro

 

quero exibir apenas meses que possuem eventos no caso

 

ficou assim

=" SELECT * FROM mes ORDER BY Cast(mes as UNSIGNED) WHERE Desc <>";

resultado

Você tem um erro de sintaxe no seu SQL próximo a 'WHERE Desc <> LIMIT 0, 12' na linha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim vai dar erro mesmo,....

 

Order by é um dos últimos elementos de uma query,

e você colocou "desc <>";

Não sei se percebeu mas eu coloquei duas aspas simples depois de <> (diferente),

eu to querendo dizer que o campo desc tem que ser diferente de '' (nulo)

experimente colocar essas duas aspas simples e troque a ordem do where e order by;

 

" SELECT * FROM mes WHERE Desc <> ''  ORDER BY mes ASC ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu caso seria..

 

seleciona tabela mes, organiza (1, 2, 3, 11, 22 e nao 1, 11, 2 22, 3) onde o Mes nao tenha registros cadastrados (for nulo) pra ele nao aparece

 

continuou mostrando todos

"SELECT * FROM mes WHERE Mes <>'' ORDER BY Cast(mes as UNSIGNED)";

Compartilhar este post


Link para o post
Compartilhar em outros sites

no meu caso seria..

 

seleciona tabela mes, organiza (1, 2, 3, 11, 22 e nao 1, 11, 2 22, 3) onde o Mes nao tenha registros cadastrados (for nulo) pra ele nao aparece

 

Na teoria está certo o que postei, porém não estou com seu código para testar,

dessa forma que coloquei o order by ele vai ordenar do menor pro maior, 1,2,3,4...10.

Testá aí e diga o que dá errado (se der errado).

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei do seu jeito deu erro de sintaxe

 

mas tenho q relembrar pra você que na tabela "mes" tem: Mes, Desc

no caso de janeiro:

mes = 01

desc = janeiro

eu teria q verificar pra ver se esse mes teria registros na tabela eventos pq la que eles ficam, nao?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentou desse jeito?

SELECT * FROM mes WHERE Desc <> ''  ORDER BY mes ASC

 

Verifica o nome dos campos, falo sobre maiúsculo e minúsculo,

e coloque o erro, fiz um bd rapidinho e testei deu certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando coloco o seu:

SELECT * FROM mes WHERE Desc <> ''  ORDER BY mes ASC

da erro de sintaxe

 

quando ponho

SELECT * FROM mes WHERE Mes <> ''  ORDER BY mes ASC

funciona mas continua mostrando todos

tentei do seu jeito deu erro de sintaxe

 

mas tenho q relembrar pra você que na tabela "mes" tem: Mes, Desc

no caso de janeiro:

mes = 01

desc = janeiro

eu teria q verificar pra ver se esse mes teria registros na tabela eventos pq la que eles ficam, nao?

 

vlw por ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tá, acho que agora entendi...²

 

Assim dá erro mesmo.

 

Se você armazena o desc(mes) na tabela eventos,

vamos lá, algo assim:

SELECT * FROM mes m, evento e WHERE m.desc = e.mes ORDER by m.mes ASC

 

 

O que eu quis dizer com isso,

Seleciona todos os regristos da tabela mes (m), evento (e) onde a desc(tabela mes) seja igual ao mes que tem registrado na tabela evento, ordenado pelo mes ascendente.

 

Fale os campos da sua tabela eventos para faciliar, espero que tenha entendido essa m***** de explicação.yay.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora todos sumiram

SELECT * FROM mes m, eventos e WHERE m.desc = e.Mes ORDER by m.Mes ASC

(tentei sem e com a maiusculas, alterei tb o nome da tabela "evento" pq era "eventos" se n dava erro de tabela n existe)

 

mas é basicamente isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo que eu coloquei era suposições de nome, repito, não sei como estão suas tabelas, não sei os nomes etc...

Você tem que adaptar o código que coloquei para o seu caso.

 

Na sua tabela eventos, quais campos que tem?

vai armazenar o id do mês, nome, ou número(01,03,12...)?

Explique melhor sua situação, sobre o que pretende com isso e tal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na sua tabela eventos, quais campos que tem?

vai armazenar o id do mês, nome, ou número(01,03,12...)?

Explique melhor sua situação, sobre o que pretende com isso e tal.

 

eventos:

idevento

mes (mes q o evento foi cadastrado por numero 01 = janeiro, 02 = fevereiro)

data

foto

desc (descriçao)

 

na tabela mes dai teria esse numero da coluna "mes" dos eventos

 

ve ai:

 

eventos tem id do evento, mes q foi cadastrado (por numero 01 = janeiro, 02 = fevereiro), data (dia 15, dia 20) foto e descriçao do evento

mes tem os numero dos meses para cadastrar 01 = janeiro etc, descriçao do mes que no caso é janeiro, fevereiro

 

tenho um menu com esse meses pro usuario escolher um mes e ver os registros dele

       <h1>selecione um mes</h1>
       <?php do { ?> 
       <a href="ver/<?php echo $rowmes['Mes']; ?>"><?php echo $rowmes['Desc']; ?></a>
       <?php } while ($rowmes = mysql_fetch_assoc($mes)); ?>

(mostra meses)

<?php echo $rowmes['Mes']; ?>"> = id do mes

<?php echo $rowmes['Desc']; ?> = nome do mes

 

link assim

 

<a href="ver/1"> janeiro</a> (ver registros do mes 1)

 

so que eu so quero mostrar os meses que tem registros, se nao tiver registro em março por exemplo nao aparecera nesse menu

Compartilhar este post


Link para o post
Compartilhar em outros sites
SELECT * FROM mes m, eventos e WHERE m.mes = e.mes ORDER by m.Mes ASC

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.