Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 :)
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";>
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>
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.
>
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.
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
>
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
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 ";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)";>
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).
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?
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...
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
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./applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/yay.gif&key=c3e2cd3310e584bb2aac68e573195765c1d7d3d1477b310220bd24a0f67080be" alt="yay.gif" />
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
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.
>
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
SELECT * FROM mes m, eventos e WHERE m.mes = e.mes ORDER by m.Mes ASC
>
SELECT * FROM mes m, eventos e WHERE m.mes = e.mes ORDER by m.Mes ASC
agora apareceu os registros que cadastrei ao inves dos meses, n entendi pq
Tentar explicar novamente o sql;
SELECT * FROM mes m, eventos e WHERE m.mes = e.mes ORDER by m.Mes ASC
ex: m.mes = (campo mes da tabela mes), e.mes = (campo mes da tabela evento).
Se eu usasse apeas mes=mes, iria dar conflito pois ele não saberia de qual das duas tabelas procurar, provavelmente o mysql iria escolher algumas das duas para fazer essa igualdade.
Where m.mes = e.mes
- Buscando somente dados onde conter o mesmo mes nas duas tabelas, m.mes(tabela mes) = e.mes(tabela eventos);
Caso você queira buscar apenas um 'x' registro nessas duas tabelas, acrescenta antes do order by:
AND mes=02
Sendo assim só vai trazer registro relativos ao mes de fevereiro, e ele existindo na tabela eventos.
Não sei se deu pra entender, mas tentei /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/pinch.gif&key=96a8615563bc061a8b6f83a283888799048c7eba03baaa04832ea14b122393b9" alt="pinch.gif" />
eu entendi todo o funcionamento da consulta antes mesmo
e esta tudo certo como você fez, tudo consultado certo
mesmo assim agora esta aparecendo os registros e nao os meses
to quase desistindo =/
Como assim os registros e não os meses?
entendo por isso
depois de ter feito toda a busca, query
while($ln = mysql_fetch_object($query){
$mesN = $ln -> mes;
$mes = $ln -> desc;
echo $mesN.' - '.$mes;
}
isso que não dá certo?
Não desiste ;]
>
Como assim os registros e não os meses?
cada mes tem registros, certo?
quando substitui sua consulta pela minha apareceu todos os meus registros (pra mim tbm nao faz sentido), na minha consulta apareciam os 12 meses
Te passar um jeito mais fácil pra fazer o loop desses meses.
<select name="mes">
<?php
$meses = array('','janeiro','fevereiro','março','abril','maio','junho','julho','agosto','setembro','outubro','novembro','dezembro');
for($m=1;$m<=12;$m++){
$zero = ($m<10) ? 0 : '';
if(isset($mes) AND $mes == $zero.$m)
echo '<option selected="selected" value="',$zero,$m,'">',$meses[$m],'</option>';
}
?>
</select>
onde $mes é o mes que pega do banco de dados
$mes = $ln - > mes;
Veja se entende, só vai aparecer se o $mes tiver naquela consulta.
Fiz isso pra eliminar essa tabela mes, por enquanto vamos desconsiderar ela.
SELECT * FROM eventos
Para isso é necessário que tenha registros lá, pelo menos 1.
Tente modificar para isso que fiz.
apareceu so setembro
nao vou fazer um menu em select
vai ser normal mesmo
janeiro | fvereiro
Não entendi muito bem,
while($ln = mysql_fetch_object ){
Algo assim pelo o que entendi, não testei, mas veja se é o que quer. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/happy.gif&key=d39e68bd94edabd9069b8f4a6d941163110d4d36d12e6324ad75ec83de4843df" alt="happy.gif" />