Ir para conteúdo
Fórum Script Brasil
  • 0

Listar imagem por pasta/categoria do banco de dados


uilhian

Pergunta

eu tenho o seguinte código:

<div id="CONTEUDO">
                <h1>portif&oacute;lio</h1>
                <p><?php echo $portifolio_texto; ?></p>
                <?php $i = 0; foreach (glob("imgs/01/*.jpg") as $i1) { $class =  $i>=1 ? 'style="display: none;"':''; ?>
                        <div class="thumb" <?php echo $class; ?>><a href="<?php echo $i1; ?>" rel="lightbox[roadtrip]"><img src="thumb.php?img=<?php echo $i1; ?>" /></a></div>
                <?php $i++; } ?>
                <?php $i = 0; foreach (glob("imgs/02/*.jpg") as $i2) { $class =  $i>=1 ? 'style="display: none;"':''; ?>
                        <div class="thumb" <?php echo $class; ?>><a href="<?php echo $i2; ?>" rel="lightbox[roadtrip2]"><img src="thumb.php?img=<?php echo $i2; ?>" /></a></div>
                <?php $i++; } ?>
                <?php $i = 0; foreach (glob("imgs/03/*.jpg") as $i3) { $class =  $i>=1 ? 'style="display: none;"':''; ?>
                        <div class="thumb" <?php echo $class; ?>><a href="<?php echo $i3; ?>" rel="lightbox[roadtrip3]"><img src="thumb.php?img=<?php echo $i3; ?>" /></a></div>
                <?php $i++; } ?>

e assim vai...
</div>
só que ta sobrecarregando a pagina conforme vai adicionando pastas... ae pensei em colocar num banco de dados pra tentar "simplificar" assim... tenho um banco de dados assim: ID | PASTA | CIDADE | STATUS 01 | imgs/01/*.jpg | SP | Finalizada 02 | imgs/02/*.jpg | MG | Finalizada gostaria de saber como faço pra "MOSTRAR" somente a primeira imagem de cada pasta separadamente, e ao clicar nela abrir as imagens corrente de cada pasta. ? tipo porque eu tava fazendo tudo isso manualmente como podem ver no código acima toda vez que criava uma pasta tinha que adiciona o código manualmente. o site pra ter uma ideia é ESSE AQUI tenho isso aqui de php:
<?php
        $consulta = mysql_query("SELECT * FROM minha_tabela ORDER BY cidade LIMIT 8");
        if (!$consulta) { echo(''.$erro[OPS].''); } else {
        while($verificar = mysql_fetch_array($consulta)) {
                $id             = $verificar["ID"]     ;
                $pasta          = $verificar["PASTA"]  ;
                $status         = $verificar["STATUS"] ;
                        
        } }
?>

caso alguém possa me ajuda desde já muito obrigado.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Cara, quando você quiser que um registro seja uma pasta, você deixa o campo pasta zero e quando quiser colocar alguma imagem dentro da pasta, você preenche o campo pasta com o id da pasta. Dessa forma, você vai conseguir fazer uma consulta tranquila pois para consultar as pastas, você seleciona todos os registros que tem o campo pasta igual a zero e para visualizar todas as imagens de uma determinada pasta, você passa o id da pasta.

Link para o comentário
Compartilhar em outros sites

  • 0
boa tarde dedas,

cara muito obrigado pela atenção, mas tipo eu não manjo nada de php to tentando monta isso na raça olhando códigos pela net...

poderia me da um exemplo de como fazer isso que você ta tentando me passar ? agradeceria muito. Obrigado!

De boa :) Então vamos começar !

Vamos supor que você queira criar um módulo em um sistema que gerencie banners de um site. Nesse módulo, você quer separar os banners do site por pastas. Por exemplo: banners da página inicial do site ficam na pasta Banner index no módulo e banners das páginas internas do site ficam na pasta Banner interna no módulo.

Vamos começar criando uma tabela onde vamos gerenciar esse módulo:

CREATE TABLE `banner`(
    `banner_id` int(10) NOT NULL AUTO_INCREMENT,
    `pasta_id` int(10) DEFAULT NULL,
    `nome` varchar(255) DEFAULT NULL,
    `imagem` varchar(255) DEFAULT NULL,
    `data_cadastro` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(`banner_id`)
)DEFAULT CHARSET=latin1;
Você pode perceber que eu criei um campo chamado banner_id e um pasta_id. No campo banner_id, eu coloquei como auto_incremento justamente para que as pastas e as imagens tenham um identificador. Para criar uma pasta, você vai deixar o campo pasta_id igual a zero. Dessa forma:
INSERT INTO `banner`(`pasta_id`,`nome`,`imagem`) VALUES(0,"Pasta - Banner index","imagem.jpg");
Você acaba de criar uma pasta chamada Pasta - Banner index ! Agora, para inserir imagens dentro dessa pasta, você vai utilizar o valor do campo pasta_id para identificar em qual pasta você quer inserir uma determinada imagem. Por exemplo: Você quer inserir uma imagem dentro da pasta que você acabou de criar (Pasta - Banner index), para isso, você deve inserir da seguinte maneira:
INSERT INTO `banner`(`pasta_id`,`nome`,`imagem`) VALUES(1,"Imagem index","imagem2.jpg");

Ai você pergunta: Porque você colocou o número 1 como valor do campo pasta_id ?

E eu te respondo: Porque o valor 1 é o valor(banner_id) da pasta que você acabou de criar.

Resumindo: Se quiser criar uma pasta, deixa o campo pasta_id zerado e se quiser inserir uma imagem dentro de uma determinada pasta, basta inserir o identificador(banner_id) da pasta no campo pasta_id da imagem.

Espero que não tenha ficado confuso, mas se tiver ficado, sugiro que você insira os sql que eu coloquei aqui para poder ver como funciona na prática.

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

bom se eu entendi bem minha "TABELA" ficaria assim:

ID_PADRÃO | ID_PASTA | PASTA | CIDADE | BAIRRO | STATUS | DATA

CREATE TABLE `banner`(
    `id_padrao` int(3) NOT NULL AUTO_INCREMENT,
    `id_pasta` int(3) DEFAULT NULL,
    `pasta` varchar(255) DEFAULT NULL,
    `cidade` varchar(255) DEFAULT NULL,
    `bairro` varchar(255) DEFAULT NULL,
    `status` varchar(20) DEFAULT NULL,
    `data_cadastro` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(`id_padrao`)
)DEFAULT CHARSET=latin1;
até ae então tudo certo, correto ? caso não me corrija. ;) ae por exemplo já tenho 3 pastas local criada, com 5 imagens cada pasta. eu teria que fazer assim então:
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(1,"pasta 01","imagem1.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(1,"pasta 01","imagem2.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(1,"pasta 01","imagem3.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(1,"pasta 01","imagem4.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(1,"pasta 01","imagem5.jpg");

INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(2,"pasta 02","imagem1.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(2,"pasta 02","imagem2.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(2,"pasta 02","imagem3.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(2,"pasta 02","imagem4.jpg");
INSERT INTO `TABELA`(`id_pasta`,`pasta`,`cidade`,`bairro`,`status`) VALUES(2,"pasta 02","imagem5.jpg");

etc...

seria isso ?

desde já muito obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Cara,

A criação da sua tabela está perfeita, porém, eu trocaria o campo pasta por nome. O motivo é que nessa tabela, você vai cadastrar pastas e imagens, devido a isso, ficaria estranho cadastrar nome de uma imagem em um campo pasta... É so uma observação, não irá atrapalhar em nada :) Sugiro também que você crie um campo imagem para cadastrar o nome da imagem.

Sua nova tabela ficaria dessa forma:

CREATE TABLE `banner`(
    `id_padrao` int(10) NOT NULL AUTO_INCREMENT,
    `id_pasta` int(10) DEFAULT NULL,
    `nome` varchar(255) DEFAULT NULL,
    `imagem` varchar(255) DEFAULT NULL,
    `cidade` varchar(255) DEFAULT NULL,
    `bairro` varchar(255) DEFAULT NULL,
    `status` int(2) DEFAULT NULL,
    `data_cadastro` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(`id_padrao`)
)DEFAULT CHARSET=latin1;
Agora vamos fazer seu exemplo, vamos criar 3 pastas, cada uma com 5 imagens. Criando as 3 pastas:
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(0,"Pasta 1","imagem1.jpg","São Paulo","Morumbi",1);
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(0,"Pasta 2","imagem2.jpg","São Paulo","Morumbi",1);
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(0,"Pasta 3","imagem3.jpg","São Paulo","Morumbi",1);
Agora, vamos criar as 5 imagens dentro de cada pasta:
-- Insere 5 imagens na Pasta 1
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(1,"Imagem 1","imagem1.jpg","São Paulo","Morumbi",1);
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(1,"Imagem 2","imagem2.jpg","São Paulo","Morumbi",1);
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(1,"Imagem 3","imagem3.jpg","São Paulo","Morumbi",1);
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(1,"Imagem 4","imagem4.jpg","São Paulo","Morumbi",1);
INSERT INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`) VALUES(1,"Imagem 5","imagem5.jpg","São Paulo","Morumbi",1);

-- Insere 5 imagens na Pasta 2
INSERT INTO  `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(2,"Imagem 1","imagem1.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(2,"Imagem 2","imagem2.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(2,"Imagem 3","imagem3.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(2,"Imagem 4","imagem4.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(2,"Imagem 5","imagem5.jpg","São Paulo","Morumbi",1);

-- Insere 5 imagens na Pasta 3
INSERT INTO  `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(3,"Imagem 1","imagem1.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(3,"Imagem 2","imagem2.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(3,"Imagem 3","imagem3.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(3,"Imagem 4","imagem4.jpg","São Paulo","Morumbi",1);
INSERT  INTO `banner`(`id_pasta`,`nome`,`imagem`,`cidade`,`bairro`,`status`)  VALUES(3,"Imagem 5","imagem5.jpg","São Paulo","Morumbi",1);

Lembrando que o insert que você colocou no seu exemplo iria gerar um erro, pois você não colocou os valores de todos dos campos.

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

opa...

ve ae...

$sql = "CREATE TABLE obras(
        ID int(3) NOT NULL AUTO_INCREMENT,
        ID_PASTA int(3) DEFAULT NULL,
        NOME varchar(100) DEFAULT NULL,
        IMAGEM varchar(100) DEFAULT NULL,
        CIDADE varchar(50) DEFAULT NULL,
        BAIRRO varchar(50) DEFAULT NULL,
        STATUS int(15) DEFAULT NULL,
        PRIMARY KEY(ID)
    )DEFAULT CHARSET=latin1;"
    
mysql_query("INSERT INTO obras(ID_PASTA,NOME,IMAGEM,CIDADE,BAIRRO,STATUS) VALUES(0,'Pasta 1','imagem1.jpg','São Paulo','Morumbi',1)");
mysql_query("INSERT INTO obras(ID_PASTA,NOME,IMAGEM,CIDADE,BAIRRO,STATUS) VALUES(0,'Pasta 2','imagem2.jpg','São Paulo','Morumbi',1)");
mysql_query("INSERT INTO obras(ID_PASTA,NOME,IMAGEM,CIDADE,BAIRRO,STATUS) VALUES(0,'Pasta 3','imagem3.jpg','São Paulo','Morumbi',1)");

mysql_query("INSERT INTO obras(ID_PASTA,NOME,IMAGEM,CIDADE,BAIRRO,STATUS) VALUES(1,'imagem 1','imagem1.jpg','São Paulo','Morumbi',1)");
mysql_query("INSERT INTO obras(ID_PASTA,NOME,IMAGEM,CIDADE,BAIRRO,STATUS) VALUES(1,'imagem 1','imagem2.jpg','São Paulo','Morumbi',1)");
mysql_query("INSERT INTO obras(ID_PASTA,NOME,IMAGEM,CIDADE,BAIRRO,STATUS) VALUES(1,'imagem 1','imagem3.jpg','São Paulo','Morumbi',1)");

que nem agora caso esteja certo...

como faço pra mostrar a PRIMEIRA imagem de cada "pasta" ? como ta no site que postei logo no começo.

não esquecendo... muito obrigado pela atenção

Editado por uilhian
Link para o comentário
Compartilhar em outros sites

  • 0

Agora sim ta correto :) Para você exibir a imagem da pasta, você faz um select onde o id_pasta = 0, dessa forma, você vai pegar apenas os registros que são considerados como pasta.

Exemplo do select:

//Seleciona as pastas.
$select = "Select * From obras Where id_pasta = 0";

Link para o comentário
Compartilhar em outros sites

  • 0

até ae entendi, mas que nem no caso eu queira usar o lightbox pra abrir "todas" imagens referente a "PASTA/IMAGEM"ao clicar em uma determinada imagem. ?

algo do tipo:

<?php $i = 0; foreach (glob("imgs/01/*.jpg") as $i1) { $class =  $i>=1 ? 'style="display: none;"':''; ?>
        <div class="thumb" <?php echo $class; ?>><a href="<?php echo $i1; ?>" rel="lightbox[roadtrip]"><img src="thumb.php?img=<?php echo $i1; ?>" /></a></div>
<?php $i++; } ?>

Editado por uilhian
Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz,

Como eu não sei a quantidade de pastas e imagens que seu site vai ter, sugiro que você faça isso usando ajax. Minha idéia é +/- o seguinte:

Liste todas as pastas em um arquivo, depois, cria um função ajax onde ao clicar na imagem da pasta você vai consultar outro arquivo(via ajax) e nesse arquivo você irá listar todas as imagens daquela respectiva pasta.

Mais uma coisinha :} Caso você nunca tenha trabalhado com ajax, sugiro que estude por esse link: http://www.w3schools.com/ajax/default.asp

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

O ideal seria usar ajax pois pouparia de você carregar todas as imagens de todas as pastas, entende ? Mas tenta fazer sem ajax, se o site tiver poucas pastas e poucas imagens eu acho que não vai afetar muito no carregamento do site :)

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

então dedas o que eu mais qeria era não carregar todas imagens de uma vez pois já está sobrecarregando o site porque quase todo dia adiciono imagens e só tende aumentar...

só que ta complicado achar a solução pra isso, pois ta dificil achar ajuda em ajax ou um outro tipo de solução sei la...

mas desde já valeu ae pela força!

Link para o comentário
Compartilhar em outros sites

  • 0

Enfim consegui ter tempo de postar :) Segue o link para download dos arquivos: galeria

Ao abrir o arquvo rar, você vai se deparar com: 3 arquivos php, 1 sql e 2 pastas. Segue a sequência para instalação da galeria:

1. Extraia os arquivos para uma pasta no seu servidor.

2. Rode o arquivo sql em um banco chamado script_brasil

3. Modifique o parâmetro href que fica dentro de um loop no arquivo script.brasil.ajax.php

Depois de analisar como tudo funciona, basta inserir no seu site/sistema :D Lembrando que esse método de galeria faz com que sejam carregadas apenas as imagens das pastas, já as imagens das respectivas pastas, são carregadas quando o usuário clica na imagem de uma pasta. Creio que é exatamente o que você precisa :]

Espero que eu tenha ajudado ^^

Abraço !

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

opaaaa...

e como tem ajudado, sem palavrasss...

agradecido mesmo...

o esquema é bem esse isso ae mesmo rodo redondo essa galeria que você posto...

só que mesmo assim fico uma duvida... ;(

que nem o esquema você fez as "imagens" ficam em um uniko lugar todas juntas...

que nem no caso o que tenho aqui é cada "obra" tem sua respectiva pasta, exemplo:

tem a pasta imagens e dentro da pasta imagens tem:

imagens/Pasta_01 = imagens obra 1 dentro

imagens/Pasta_02 = imagens obra 2 dentro

ae nesse caso como chamar as imagens ?

Link para o comentário
Compartilhar em outros sites

  • 0

Faz o seguinte, deixa as imagens das pastas na raiz da pasta imagens e cria uma pasta para cada pasta.Entendeu ? Tipo assim:

/imagens

img_pasta1.jpg

img_pasta2.jpg

/imagens/pasta_1

img1.jpg

img2.jpg

img3.jpg

/imagens/pasta_2

img1.jpg

img2.jpg

O grande segredo ai é você colocar o id do registro pasta como numero da pasta que vai guardar as imagens da respectiva pasta criada no sistema. Creio que ficou um pouco confuso, mas acho que da pra entender :)

abraço!

Editado por dedas
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, no arquivo script.brasil.ajax.php você vai trocar a linha 12 que atualmente está assim:

$url_valor .= "{href : 'http://localhost/estudo/img/".$query_array['imagem']."'},";
Por essa:
$url_valor .= "{href : 'http://localhost/estudo/galeria/img/pasta_".$id_pasta."/".$query_array['imagem']."'},";

Vo upar o arquivo com as atualizações para que você possa analisá-lo caso não consiga entender. Baixe aqui

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...