Jump to content


Photo

Problemas Com Php/mysql


  • Faça o login para participar
10 replies to this topic

#1 bv83

bv83

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 07/04/2006, 08:53

da o seguinte erro unexpected T_LOGICAL_OR

<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">&nbsp;</td>
</tr>
</table>

se alguem poder dar uma ajudinha
obrigado

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 07/04/2006, 08:55

$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++;

Tire esse ponto e virgula dai e veja se resolve..

Flws...
;)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 bv83

bv83

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 07/04/2006, 09:08

deu resultado
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 Kakao

Kakao

    Turista

  • Usuários
  • 42 posts
  • Sexo:Não informado
  • Localidade:Brasília

Posted 07/04/2006, 09:15

Column: 'tempo' in order clause is ambiguous

A coluna tempo existe em mais de uma tabela listada no from. Quallifique a coluna com o nome da tabela:

select  *
  from ....
  order by acer_prod.tempo

Curso de Introdução à Programação

#5 bv83

bv83

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 07/04/2006, 10:23

não deu resultado se alguem souber outra maneira de apanhar os ultimos 4 geristos de varias tabelas diferentes...

obrigado

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 07/04/2006, 10:39

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...
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#7 bv83

bv83

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

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 Kakao

Kakao

    Turista

  • Usuários
  • 42 posts
  • Sexo:Não informado
  • Localidade:Brasília

Posted 07/04/2006, 11:05

Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...

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.

se alguem souber outra maneira de apanhar os ultimos 4 geristos de varias tabelas diferentes...

Em nenhum momento você disse que o objetivo era esse. Apenas pediu correções para os erros.

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



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

resoltaria em uma consulta de 4 dados porque tem o limit 4 (posso estar enganado mas penso ser assim)

Você está enganado. A consulta retornará (retornaria?) 4 colunas multiplicado pelo número de tabelas.

Curso de Introdução à Programação

#9 bv83

bv83

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 07/04/2006, 11:08

Até aonde sei, essa consulta resultaria em uma monstruosidade de dados...

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.

se alguem souber outra maneira de apanhar os ultimos 4 geristos de varias tabelas diferentes...

Em nenhum momento você disse que o objetivo era esse. Apenas pediu correções para os erros.

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

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 07/04/2006, 11:11

Não tinha visto o LIMIT, mas mesmo assim, o que vejo, é que será exibido os 4 resultados da primeira tabela, e das demais se repetirão.

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.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#11 bv83

bv83

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Não informado

Posted 07/04/2006, 11:22

já vi que desta maneira não vou ter sucesso vou tentar de outra maneira

Obrigado a todos que tentaram ajudar (y) (y)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq