Ir para conteúdo

POWERED BY:

Arquivado

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

Kakaroto1309

Registro Especifico

Recommended Posts

a tabela vai ficar assim

 

create table shows(

id int(8) not null auto_increment,

show varchar(50) not null,

local varchar(50) not null,

cidade varchar(50) not null,

data date not null,

foto varchar(100),

primary key (id)

);

 

Quero pegar o décimo ID cadastrado, desde que a data seja superior ou igual a data atual. exemplo: hoje é 15 de janeiro e tenho 20 registros, quero puxar o décimo registro. O décimo registro no caso será o 10. Amanha é 16 de janeiro e continuo com 20 registros, pois nao cadastrei nenhum, ele irá puxar o décimo id novamente, que não será mais o (10) e sim o (11). Sacas?

 

tentei assim e nao deu

 

SELECT TOP 10 id FROM eflyers WHERE data >=NOW() ORDER BY data ASC");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não entendi MUITO bem sua lógica na parte do décimo registro, porém você terá que fazer uma condição, algo parecido com isso:

 

"SELECT * FROM shows WHERE id = 10 AND data >= " . date("Y-m-d")

 

A parte que acredito que terá que mudar é o "id = 10" que foi onde não entendi muito bem sua lógica.

 

Qualquer coisa, tente explicar novamente, me descule

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quase respondeu o que eu queria

 

eu coloquei assim:

"SELECT * FROM shows WHERE id = 10 AND data >= NOW()")

 

Deu certo, ele ta pegando o 10 registro. Só que o seguinte se esse 10 registro passar da data de hoje, ele teria que pegar o próximo registro que esteja dentro da data.

 

na verdade não quero pegar o decimo registro, quero pegar o decimo show desde que esteja dentro da data especifica. Deu pra entender?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a ignorância, mais agora eu entendi, não tinha visto que tinha alterado o post. O MySQL trata isso diferente usando o LIMIT. O TOP funciona com o SQL Server, tente assim:

 

"SELECT * FROM shows WHERE data >= " . date("Y-m-d") . " ORDER BY id DESC LIMIT 9,1"

 

Tente e poste pra gente ver se deu certo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona assim: "LIMIT inicio,fim"

 

No seu caso como queria pegar o 10º registro, seria um registro depois do 9º, então o que você precisa, o 10º

 

Eu coloquei o ORDER BY mais nesse caso nem precisaria já que ele vai pegar sempre o último registro.

 

Deu certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu cadastrei na tabela shows os dados

 

ID 1 = 08/01/2011

ID 2 = 16/01/2011

ID 3 = 28/01/2011

 

ai coloquei

SELECT * FROM shows WHERE data >=NOW() ORDER BY id DESC LIMIT 1,3");

 

Resultado: Ele ta pegando a primeira DATA que se encaixa na condição. No caso será a data de ID 2. Até ai tudo bem ...

 

E se eu quiser pegar a SEGUNDA DATA (28/01/11) que se encaixa nessa condição???

E no caso do 3, toda vez que cadastrar novo terá quer ficar alterando ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

No post você falou sobre pegar o 10º registro, agora você mudou. Se for alterar ou se for fazer de forma dinâmica, você terá que passar esses valores através de variáveis, você irá fazer uma espécie de paginação ou algo do tipo? Qual é a necessidade da posição do registro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o décimo foi exemplo ...

 

é que assim

no site vai te a agenda de shows, normal e embaixo eu coloquei uma table com 4 colunas.

 

na primeira coluna quero carregar as informações do 1 show (desde que a data do show seja superior a atual ou igual)

na segunda coluna quero carregar as informações do 2 show (desde que a data do show seja superior a atual ou igual)

na terceira coluna quero carregar as informações do 3 show (desde que a data do show seja superior a atual ou igual)

na quarta coluna quero carregar as informações do 4 show (desde que a data do show seja superior a atual ou igual)

 

Sakas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi bem, não precisa de nada disso então! Serão 4 colunas e irá popular a partir do primeiro show e da data atual, é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo - Hoje é 15/01/2011

Então

 

Coluna 1 ------------ Coluna 2 ------------ Coluna 3 ------------ Coluna 4

 

Show 15/01 ---------- Show 16/01 ---------- Show 17/01 ---------- Show 18/01

Bar da Esquina ------ Bar da Esquina ------ Bar da Esquina ------ Bar da Esquina

São Paulo ----------- Campinas ------------ São Carlos ---------- São Paulo

 

Ai amanha é 16/01/2011

Então

 

Coluna 1 ------------ Coluna 2 ------------ Coluna 3 ------------ Coluna 4

 

Show 16/01 ---------- Show 17/01 ---------- Show 18/01 ---------- Show 19/01

Bar da Esquina ------ Bar da Esquina ------ Bar da Esquina ------ Bar da Esquina

São Paulo ----------- Campinas ------------ São Carlos ---------- São Paulo

 

Note que no dia 16/01 sumiu o show do dia 15/01 e aparecei do dia 19/01. Porém os shows do dia 20/01, 21/01, 22/01, ..., 31/01 já estão cadastrados e dinamicamente eles vai saindo os velhos e entrando os novos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, é mais fácil ainda, já que irão aparecer sempre 4 shows ou se menor que 4, a quantidade que tiver cadastrado na tabela.

 

Então ficará assim:

 

"SELECT * FROM shows WHERE data >= " . date("Y-m-d") . " LIMIT 4"

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim beleza até ai tudo bem ..

 

mais o f*** é o código que vai gerar a TABELA.

 

while($x = mysql_fetch_array($selecionar))
{
echo'
		<table width="100%" border="0" cellspacing="0" cellpadding="0">
	  <tr align="center"> 
		<td width="25%" height="110"><img src="' . $x['foto'] . '" width="160" height="100" border="1"></td>
		<td width="25%" height="110"><img src="' . $x['foto'] . '" width="160" height="100" border="1"></td>
		<td width="25%" height="110"><img src="' . $x['foto'] . '" width="160" height="100" border="1"></td>
		<td width="25%" height="110"><img src="' . $x['foto'] . '" width="160" height="100" border="1"></td>
	  </tr>
	  <tr align="center"> 
		<td height="20"></td>
		<td height="20"></td>
		<td height="20"></td>
		<td height="20"></td>
	  </tr>
	  <tr align="center"> 
		<td height="20"><strong><font size="1" face="Verdana">' . $x['dia'] . '/' . $x['mes'] . ' - ' . $x['show'] . '</font></strong></td>
		<td height="20"><strong><font size="1" face="Verdana">' . $x['dia'] . '/' . $x['mes'] . ' - ' . $x['show'] . '</font></strong></td>
		<td height="20"><strong><font size="1" face="Verdana">' . $x['dia'] . '/' . $x['mes'] . ' - ' . $x['show'] . '</font></strong></td>
		<td height="20"><strong><font size="1" face="Verdana">' . $x['dia'] . '/' . $x['mes'] . ' - ' . $x['show'] . '</font></strong></td>
	  </tr>
	  <tr align="center"> 
		<td height="20"><font size="1" face="Verdana">' . $x['local'] . '</font></td>
		<td height="20"><font size="1" face="Verdana">' . $x['local'] . '</font></td>
		<td height="20"><font size="1" face="Verdana">' . $x['local'] . '</font></td>
		<td height="20"><font size="1" face="Verdana">' . $x['local'] . '</font></td>
	  </tr>
	  <tr align="center"> 
		<td height="20"><font size="1" face="Verdana">' . $x['cidade'] . '</font></td>
		<td height="20"><font size="1" face="Verdana">' . $x['cidade'] . '</font></td>
		<td height="20"><font size="1" face="Verdana">' . $x['cidade'] . '</font></td>
		<td height="20"><font size="1" face="Verdana">' . $x['cidade'] . '</font></td>
	  </tr>
	  <tr align="center"> 
		<td height="26"></td>
		<td height="26"></td>
		<td height="26"></td>
		<td height="26"></td>
	  </tr>
	</table>
	';
}

 

Se fosse uma tabela embaixo da outra seria facil. O duro é que é 4 colunas, não sei como faço pra gerar isso.

No caso ai ele ta gerando 1 tabela com 4 colunas pro primeiro show, mais 1 tabela embaixo com 4 colunas pro segundo show e assim sucessivamente ...

 

Nota que a variavel data num tem ai, é que eu usei ela só pra fim de ordenação e talz

Compartilhar este post


Link para o post
Compartilhar em outros sites

					SELECT
					MONTH(`agenda_data`) as `mes`,
					DAY(`agenda_data`) as `dia`,
					`agenda_titulo` as `titulo`,
					`agenda_cidade` as `cidade`,
					`agenda_local` as `local`
				FROM `agenda`
				WHERE `agenda_data` >= DATE_FORMAT(NOW(), \'%Y-%m-%d\')
				ORDER BY `agenda_data` ASC
				LIMIT 5

 

Copiado do site de um cliente meu, que faz exatamente o que você está querendo. Analise e edite à vontade.

Leve em conta que o campo `agenda_data` é do tipo DATE, com padrão YYYY-MM-DD.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que colocar a tabela e a linha fora do loop, ficando assim:

 

echo "<table>";
echo "<tr>";

while($x = mysql_fetch_array($selecionar))
{
   echo "<td>" . $x["campo_da_tabela"] . "</td>";
}

echo "</tr>";
echo "</table>";

 

O loop só irá rodar para preencher as colunas da tabela!

 

Kakaroto1309 deu certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O exemplo do Vinicius deu certo, o do Matheus não consegui.

 

Mais o jeito do Vinicius é um jeito que não quero, pois tenho uma tabela com 5 linhas, quero escrever na primeira linha o show, na segunda linha o local, na terceira, ... e assim por dianta. Até ai tudo bem, o duro é que essa tabela de 5 linhas esta dentro de uma tabela com 4 colunas, intao teria que ser um código que inserisse essa tabela dentro da primeira coluna, depois pulasse pra segunda coluna e inserisse, ... até a 4 coluna depois parasse.

 

Eu preciso do seguinte:

 

Tenho 5 coisas gravados no BD

1. Show 1 - 08/01/11

1. Show 2 - 17/01/11

1. Show 3 - 20/01/11

1. Show 4 - 22/01/11

1. Show 5 - 23/01/11

 

Preciso pegar o SEGUNDO SHOW, conforme as condições:

- Data seja igual ou superior a data de hoje

 

Exemplo

Quero pegar somente o Show 4 e inserir na tabela, não quero pegar nem 1, nem o 2, nem o 3. Notem que o Show 3,4 e 5 se encaixam na condição, só que quero pegar o show 4 e não o 3. Com a função limit ele pegaria o 3, 4 e 5.

 

Alguem sabe?

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.