uiLhian 1 Denunciar post Postado Abril 19, 2013 bom eu tenho o seguinte código em msql_* $db->query( "select * from albuns order by album_name asc" )->fetchAll(); if ( $db->rows >= 1 ) { $albuns = $db->data; foreach ( $albuns as $album ) { $a = ( object ) $album; $db->query( "select * from fotos where foto_album = $a->album_id order by foto_pos asc" )->fetchAll(); if ( $db->rows >= 1 ) { $f = ( object ) $db->data[0]; ?> <div class="box-detail box-alb" id="<?= $a->album_id ?>"> <div class="box-inner-alb"> <a href="album.php?id=<?= $a->album_id ?>" > <img src="thumb.php?img=fotos/<?= $f->foto_url ?>"> </a> </div> </div> <?php } } } no caso ele só me retorna as a quantidade de imagens da tabela fotos conforme a quantidade de album que tem na tabela album. foreach ( $albuns as $album ) { $a = ( object ) $album; select * from fotos where foto_album = $a->album_id order by foto_pos asc no caso eu fuçando na net vi sobre o INNER JOIN. e fim o seguinte: $stmtO = $pdo->prepare('SELECT obra_id, foto_album, foto_url FROM obras AS o INNER JOIN fotos AS f ON o.obra_id = f.foto_album WHERE foto_album = $o->obra_id ORDER BY foto_pos ASC' ); $stmtO->execute(); $obras = $stmtO->fetchAll(PDO::FETCH_ASSOC); if ( $stmtO->rowCount() >= 1 ) { foreach ( $obras as $o ) { sei que aqui nessa linha esta errado WHERE foto_album = $o->obra_id pois ele está antes do "foreach" o que eu gostaria de saber é como fazer ae no caso pra ele me retornar somente a primeira imagem da tabela fotos que no caso seria a capa de cada album/obra. bom não sei se deu pra entender é que é dificil explicar. :) mas desde ja obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Samuel Gomes_148425 19 Denunciar post Postado Abril 19, 2013 Eu acho que nesse linha esta errado (WHERE foto_album = $o->obra_id) porque voce usou aspas simples Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Abril 25, 2013 mas que nem no caso ae o $o está antes do 'laço' né. então ele não vai ter valor. acredito eu. aqui o erro: Notice: Undefined variable: o in então alguma luz no fim do tunel ? :( 94 visitas. onde que errei na criação do tópico ?! ;( Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Abril 25, 2013 da um echo nisso SELECT obra_id, foto_album, foto_url FROM obras AS o INNER JOIN fotos AS f ON o.obra_id = f.foto_album WHERE foto_album = $o->obra_id ORDER BY foto_pos ASC para eu ver o resultado sem as variáveis e ver o possível erro. também não vi a necessidade de usar o objeto. Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Abril 25, 2013 os erros que me retornam: Notice: Undefined variable: o in E:\Wamp\www\U\galeria.php on line 9 Notice: Trying to get property of non-object in E:\WebServer\Wamp\www\U\galeria.php on line 9 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY foto_pos ASC' at line 5' in E:\Wamp\www\U\galeria.php on line 12 Linha 9: WHERE foto_album = $o->obra_id Linha 12: $stmtO->execute(); Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Abril 25, 2013 de onde vc tira isso cara? $o->obra_id e por que? da um print_r na var albuns e mostra aqui o resultado Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Abril 29, 2013 bom eu tenho 2 tabelas: obras e fotos na tabela obras tem os seguintes campos: obra_id | obra_nome | obra_cidade na tabela fotos tem os seguintes campos: foto_id | foto_url | foto_album foto_url = o nome da imagem upada tipo nome.jpg foto_album = id da obra = obra_id a e eu quero listar as obras que no caso seria tipo uma "categoria" obra1, obra2 ... e cada uma com sua galeria. no caso esse $o->obra_id seria o total de obras cadastradas no qual receberia somente a "primeira" imagem da tabela fotos no qual a imagem fosse foto_album. tipo obra_id = 7 pegaria a 'primeira' imagem da tabela fotos cujo o foto_album fosse igual a 7. ae quando eu clicar nessa "categoria" ela abriria a galeria cujo todas imagem fosse igual foto_album igual a 7. olha o código em msql_* original: bom eu tenho o seguinte código em msql_* $db->query( "select * from albuns order by album_name asc" )->fetchAll(); if ( $db->rows >= 1 ) { $albuns = $db->data; foreach ( $albuns as $album ) { $a = ( object ) $album; $db->query( "select * from fotos where foto_album = $a->album_id order by foto_pos asc" )->fetchAll(); if ( $db->rows >= 1 ) { $f = ( object ) $db->data[0]; ?> <div class="box-detail box-alb" id="<?= $a->album_id ?>"> <div class="box-inner-alb"> <a href="album.php?id=<?= $a->album_id ?>" > <img src="thumb.php?img=fotos/<?= $f->foto_url ?>"> </a> </div> </div> <?php } } } ? um help por favor... :( Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 29, 2013 <? $albuns = $db->query( "select * from albuns order by album_name asc" ); if ( $albuns->rowCount() !== 0 ) { foreach ( $albuns->fetchAll( PDO::FETCH_OBJ ) as $obj ) { $foto = $db->query( sprintf( "select * from fotos where foto_album = '%s' order by foto_pos asc", $obj->album_id )); if ( $foto->rowCount() !== 0 ) { $f = $foto->fetch ( PDO::FETCH_OBJ ); ?> <div class="box-detail box-alb" id="<?php echo $obj->album_id; ?>"> <div class="box-inner-alb"> <a href="album.php?id=<?php echo $obj->album_id; ?>" > <img src="thumb.php?img=fotos/<?php echo $f->foto_url; ?>"> </a> </div> </div> <?php } $foto = null; } } $albuns = null; Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Abril 29, 2013 WDuarte muito obrigado ae pela grande força... me fala uma coisa nesse método que eu estava fazendo com inner join pra esse caso não serviria ? tipo o "unico" método seria esse ae mesmo ? desde ja muito obrigado mesmo. :) Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 29, 2013 Com inner join funciona, porém não é recomendado para loops, pois dobra a carga no servidor. E se sua hospedagem for compartilhada corre o risco de ser suspenso. Experiência própria! Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Abril 29, 2013 entendi... :) então nesse caso ae o modo "correto" seria esse mesmo. !? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 29, 2013 entendi... :) então nesse caso ae o modo "correto" seria esse mesmo. !? O modo correto é aquele que te traz o resultado positivo, sem implicar no desempenho do servidor, hoje em dia performance é necessário. ;) Compartilhar este post Link para o post Compartilhar em outros sites
uiLhian 1 Denunciar post Postado Abril 29, 2013 entendido... :) é que achei que daria pra fazer de uma forma mais "simples" como menos código. :) MAS... como funcionou, fica como resolvido. Compartilhar este post Link para o post Compartilhar em outros sites