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

Tentar explicar novamente o sql;

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

 

 

- o 'm' e o 'e' após os nomes das tabelas quer dizer que estou 'apelidando' as tabelas.

- Toda vez que quiser mostrar um campo de uma tabela x, uso esse apelido para não dar conflito com outras tabelas,

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.

- order by m.mes asc -> Ordenando os dados pelo campo mes (da tabela mes, sendo o campo, 01,02,12...) em ordem crescente, ou seja, do menor para o maior.

 

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 pinch.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ;]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

apareceu so setembro

 

nao vou fazer um menu em select

vai ser normal mesmo

janeiro | fvereiro

 

Se apareceu só setembro

quer dizer que na tabela eventos só tem 1 evento

Compartilhar este post


Link para o post
Compartilhar em outros sites

da um echo na variável $mes, que é pra estar dentro de um while.

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro do while dos registros do bd

$mes = $ln -> mes; (meu exemplo)

 

echo $mes;

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho esse while aqui

<?php } while ($row_mes = mysql_fetch_assoc($mes)); ?>

 

eu achava que seria facil..

tenho isso

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

e isso

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era pra trocar igual tinha te falado ;x

 

Tenta rever o que disse e montar uma nova página apenas com isso para testar,

use e abuse do nosso amigo google quando aparecer algum erro,

no caso de sql, teste ele no banco de dados pra ver tbm se tá tudo certo.

Estou saindo aqui, estude mais um pouco esses códigos.

 

Abç

não desista! thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok vou tentar.

seria pra substituir esse todo entao?

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

 

aquele select n pegou de jeito nenhum :wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

<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>

 

 

SELECT * FROM eventos

Cria uma página para testarmos isso individualmente,

nessa nova página coloque todo esse <select>

acima dele coloque sua conexao com o banco de dados,

o Sql está logo acima, e é esse que vamos utilizar nesse novo exemplo

depois executa o sql ->

$query = mysql_query($sql) or die (mysql_error());

Agora vamos pra parte de repetição de dados (loop);

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

 

////aqui dentro você vai colocar o select todo fazendo ele estar dentro do while e assim repetindo.

}//depois fecha o while

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficou assim

<?php require_once('configdb.php'); ?>
<?php
mysql_select_db($database_conection, $conection);
$query_mes = "SELECT * FROM mes ORDER BY Cast(mes as UNSIGNED)";
$mes = mysql_query($query_limit_mes, $conection) or die(mysql_error());
$row_mes = mysql_fetch_assoc($mes);
?>
<select name="mes">
<?php while($ln = mysql_fetch_object($query_mes)){
$mes = $ln -> mes;
$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>';         
}
}//depois fecha o while
?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retire essas linhas

$query_mes = "SELECT * FROM mes ORDER BY Cast(mes as UNSIGNED)";
$mes = mysql_query($query_limit_mes, $conection) or die(mysql_error());
$row_mes = mysql_fetch_assoc($mes);

 

troque por estas

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

 

e dentro do while que está assim: ...ech_object($query_mes))){

troque por ...ech_object($query);

 

e arrume está parte depois do if(isset($mes)...

echo '<option value="',$zero,$m,'">',$meses[$m],'</option>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php require_once('configdb.php'); ?>
<?php
$sql = "SELECT * FROM eventos";
$query = mysql_query($sql) or die (mysql_error());
?>
<select name="mes">
<?php while($ln = mysql_fetch_object($query)){
$mes = $ln -> mes;
$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 value="',$zero,$m,'">',$meses[$m],'</option>'; }
}//depois fecha o while
?>
</select>

 

nesse caso

e dentro do while que está assim: ...ech_object($query_mes))){

troque por ...ech_object($query);

eu substitui assim:

<?php require_once('configdb.php'); ?>
<?php
$sql = "SELECT * FROM eventos";
$query = mysql_query($sql) or die (mysql_error());
?>
<select name="mes">
<?php while($ln = mysql_fetch_object($query));
$mes = $ln -> mes;
$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 value="',$zero,$m,'">',$meses[$m],'</option>'; }
//depois fecha o while
?>
</select>

 

resultado

image.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testou?

O que aparece?

Aparece algo?

 

coloque depois de $mes = $ln -> $mes;

echo $mes;

 

Repetiu os posts... vou alterar esse.

 

Reparei no seu while que está fechado, não está repetindo as informações que queremos;

 

Tire o ';' depois do final do while

 

troque para while($ln = mysql_fetch_object($query)){

E antes de fechar o php (?>)

feche o while '}'

Compartilhar este post


Link para o post
Compartilhar em outros sites
Esse campo mes da tabela eventos tá assim: 01,02,03?

mes.png

 

eu fiz certo o "mysql_fetch_object($query));"? nao sei se alterei certo pois tive q tirar uma chave do final

 

estrutura tabela eventos post #28

 

nao entendi a ultima alteraçao

devo mudar de

$mes = $ln -> mes;

pra qual?

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.