
Problemas Com Php/mysql
#1
Posted 07/04/2006, 08:53
<table width="475" border="0" cellpadding="0" cellspacing="0">
<? $j=0;
$result = mysql_query("SELECT * FROM acer_prod, arkon_prod, asus_prod, cellink_prod, dell_prod, destinator_prod, emtac_prod, genius_prod, globalsat_prod, guys_prod, holux_prod, hp_prod, imate_prod, jambra_prod, kingston_prod, mitac_prod, navibe_prod, pielframa_prod, qtek_prod, sandisk_prod, tomtom_prod, twinmos_prod ORDER BY tempo DESC LIMIT 4");
or die(mysql_error());
--» while ($rowEx = mysql_fetch_array($result, MYSQL_ASSOC)) {
$j++;
$exincubasid[$j] = $rowEx["id"];
$prod[$j] = $rowEx["prod"];
$foto[$j] = $rowEx["foto"];
$preco[$j] = $rowEx["preco"];
$info[$j] = $rowEx["info"];
}?>
<? $i = 1;
while ($i <= $j) {?>
<tr>
<td width="233" align="center" valign="top" background="bckk.gif"><p><a href="<? echo $info[$i] ?>"><img src="../foto/<? echo $foto[$i]; ?>" width="100" height="100" border="0" ></a><span class="style10"><? echo $prod[$i]; ?><br>
<? echo $preco[$i]; ?></span></p>
<p>
<? $i++; if ($i>$j) { break;}?>
</p></td>
<td width="13" rowspan="2"><img src="gif3pixel.gif" width="3" height="3"></td>
<td width="229" align="center" valign="top" background="bckk.gif"><div align="center" class="style10">
<p><a href="<? echo $info[$i] ?>"><img src="./foto/<? echo $foto[$i]; ?>" width="100" height="100" border="0" ></a><? echo $prod[$i]; ?><br>
<? echo $preco[$i]; ?></p>
<p>
<? $i++; if ($i>$j) { break;}?>
</p>
</div></td>
</tr>
<tr>
<td height="23"><? } ?></td>
<td height="23"> </td>
</tr>
</table>
se alguem poder dar uma ajudinha
obrigado
#2
Posted 07/04/2006, 08:55
Tire esse ponto e virgula dai e veja se resolve..$result = mysql_query("SELECT * FROM acer_prod, arkon_prod, asus_prod, cellink_prod, dell_prod, destinator_prod, emtac_prod, genius_prod, globalsat_prod, guys_prod, holux_prod, hp_prod, imate_prod, jambra_prod, kingston_prod, mitac_prod, navibe_prod, pielframa_prod, qtek_prod, sandisk_prod, tomtom_prod, twinmos_prod ORDER BY tempo DESC LIMIT 4"); <---
or die(mysql_error());
while ($rowEx = mysql_fetch_array($result, MYSQL_ASSOC)) {
$j++;
Flws...

#3
Posted 07/04/2006, 09:08
obrigado
mas apareceu outro problema
Column: 'tempo' in order clause is ambiguous
a coluna tempo é
tempo int(4)
e vai inserir o valor do time()
o valor que fica na bd é 1142557760
e é para ordenar por ordem de chegada
#4
Posted 07/04/2006, 09:15
A coluna tempo existe em mais de uma tabela listada no from. Quallifique a coluna com o nome da tabela:Column: 'tempo' in order clause is ambiguous
select * from .... order by acer_prod.tempo
Curso de Introdução à Programação
#5
Posted 07/04/2006, 10:23
obrigado
#6
Posted 07/04/2006, 10:39
Por isso não terá como você dizer simplesmente * (ALL).
Terá que usar um aliase para indicar um outro nome para um campo.
E outra, você que fez essa query?
Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#7
Posted 07/04/2006, 10:50
Algumas tabelas possuem campos com o mesmo nome.
Por isso não terá como você dizer simplesmente * (ALL).
Terá que usar um aliase para indicar um outro nome para um campo.
E outra, você que fez essa query?
Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...
todas as tabelas tem esse campo (tempo) e o query só vai apanhar as 4 ultimas entradas em tds as tabelas
resoltaria em uma consulta de 4 dados porque tem o limit 4 (posso estar enganado mas penso ser assim)
só não consigo que o query me apresente as ultimas 4 entradas dessas tabelas
#8
Posted 07/04/2006, 11:05
bv83, você tem um problema básico de projeto de banco de dados. Várias tabelas de produtos. Todas com a mesma estrutura?. Se for um projeto novo considere seriamente reestruturar a base e transformar todas as tabelas de produtos em uma única tabela.Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...
Em nenhum momento você disse que o objetivo era esse. Apenas pediu correções para os erros.se alguem souber outra maneira de apanhar os ultimos 4 geristos de varias tabelas diferentes...
Para pegar os últimos quatro de cada tabela (veja que nheca de código a estrutura da sua base exige):
select * from (select * from acer_prod order by tempo desc limit 4) as acer inner join (select * from arkon_prod order by tempo desc limit 4) as arkon on acer.campo_comum = arkon.campo_comum inner join ...
Curso de Introdução à Programação
Você está enganado. A consulta retornará (retornaria?) 4 colunas multiplicado pelo número de tabelas.resoltaria em uma consulta de 4 dados porque tem o limit 4 (posso estar enganado mas penso ser assim)
Algumas tabelas possuem campos com o mesmo nome.
Por isso não terá como você dizer simplesmente * (ALL).
Terá que usar um aliase para indicar um outro nome para um campo.
E outra, você que fez essa query?
Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...
Curso de Introdução à Programação
#9
Posted 07/04/2006, 11:08
bv83, você tem um problema básico de projeto de banco de dados. Várias tabelas de produtos. Todas com a mesma estrutura?. Se for um projeto novo considere seriamente reestruturar a base e transformar todas as tabelas de produtos em uma única tabela.Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...
Em nenhum momento você disse que o objetivo era esse. Apenas pediu correções para os erros.se alguem souber outra maneira de apanhar os ultimos 4 geristos de varias tabelas diferentes...
Para pegar os últimos quatro de cada tabela (veja que nheca de código a estrutura da sua base exige):
select * from (select * from acer_prod order by tempo desc limit 4) as acer inner join (select * from arkon_prod order by tempo desc limit 4) as arkon on acer.campo_comum = arkon.campo_comum inner join ...
Curso de Introdução à Programação
pensava que tinha só um erro por isso não citei o objectivo
mas o objectivo é pegar os ultimos 4 de todas ao mesmo tempo não apanhar os ultimos 4 de cada tabela
não posso restruturar a bd porque o projecto já está criado assim a muito...
#10
Posted 07/04/2006, 11:11
E como você tem um campo com o mesmo nome em todas, você terá que fazer:
SELECT tabela1.campo AS tb1_campo, tabela2.campo AS tb2_campo, ...
tabela1, tabela2 => Nome das tabelas.
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
#11
Posted 07/04/2006, 11:22
Obrigado a todos que tentaram ajudar


1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)