• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kebrus

[PHP] Galeria de Imagens Aleatórias

9 mensagens neste tópico

Deve ter sido o último script que fiz, nem sequer foi pra mim, foi pra ajudar alguém noutro lado, acho o código simples, mas tenho a certeza que há gente ainda muito fresca em php (como eu) e por isso vou explicar tudo.

Trata-se de criar uma galeria de imagens de thumbnails que ao clickar numa thumbnail ela abre a respectiva imagem, aqui não estou obviamente a usar nenhuma base de dados para guardar as informações das imagens, porque o interesse é saber fazer a galeria aleatória e por isso guardei as informações em arrays (que para os newbies são uma espécie conjunto de várias strings, e string é informação contida numa varivel, exemplo: $aminhastring = "bla bla bla"; em que neste caso $aminhastring é a variavel e bla bla bla é a string).

o codigo:

<?php
$link = array("http://urldolink1",
/* 2 */                "http://urldolink2",
/* 3 */                "http://urldolink3",
/* 4 */                "http://urldolink4",
/* 5 */                "http://urldolink5");
$imagem = array("imagem1.png",
/* 2 */                "imagem2.png",
/* 3 */                "imagem3.png",
/* 4 */                "imagem4.png",
/* 5 */                "imagem5.png");
$disp = count($link);
$numbers = range(0, ($disp - 1));
shuffle($numbers);
$i = 0;
$max = 3;
foreach ($numbers as $num) {
        if ($i < $max){
      echo '<a href="'.$link[$num].'"><img src="'.$imagem[$num].'"></a>'.($num+1).' ';
    } else {
    break;
  }
  $i++;
}
?>

A explicação:

As primeiras duas variaveis $link e $imagem armazenam o url do link e o url da imagem respectivamente.

$disp = count($link); counta quantos elementos existem na array $link e armazena o valor na variavel $disp.

$numbers = range(0, ($disp - 1)); cria uma array de numeros através da função range(min, max); que neste caso começa em 0 zero e acaba em $disp - 1 ... quer isto dizer que se ele contar cinco elementos na array $link (que é o caso) ele vai criar uma array só com números que começa no 0 e acaba em 4 e armazena essa array na variável $numbers.

O interesse de criar uma array que começa em 0 e acaba em 4 é porque vamos utilizar esses números para chamar as informações contidas nas primeiras duas arrays, e como os conteúdos das arrays começam por 0, tive de criar assim, ou seja se eu agora quisesse chamar o primeiro conteúdo da primeira array, fazia algo do genero: echo '$link[0]'; estão a ver o 0? É por isso que começa em 0 e acaba em 4.

shuffle($numbers); vai baralhar aleatoriamente os elementos dentro da array, ou seja antes disto eles estão por esta ordem 1 - 2 - 3 - 4 - 5 e depois disto eles podem ficar, por exemplo, assim 2 - 5 - 1 - 3 - 4.

Se não quiserem uma galeria de imagens aleatórias basta apagar este pedaço de código.

$i = 0; e $max = 3; existem aqui como complemento ao script, isto porque imaginem que apesar de terem introduzido na array 10 imagens só querem que se mostre 8, então basta alterar o valor da variável $max para 8, $i deve permanecer 0.

Agora vamos analisar o loop:

foreach ($numbers as $num) {
        if ($i < $max){
      echo '<a href="'.$link[$num].'"><img src="'.$imagem[$num].'"></a>'.($num+1).' ';
    } else {
    break;
  }
  $i++;
}

Vamos lê-lo: para cada (foreach) valor na varivel $numbers se torna noutra que é a $num ($numbers as $num) acontece tal...

Se o valor de $i for menor que o valor de $max (if ($i < $max)) então dispor no browser (echo) isto: <a href="'.$link[$num].'"><img src="'.$imagem[$num].'"></a>'.($num+1).' '. Caso contrário, se o $i não for menor que $max (else) sair do loop (break;). No final de cada loop aumentar um valor ao $i ($i++; ).

Resumindo, o que o loop faz é pegar nos valores aleatórios da array numbers e chamar as outras duas arrays consoante os valores da array numbers, ou seja, imaginado que ao fazer shuffle da array $numbers aqui ficava assim: 2 - 5 - 1 - 3 - 4 então ele iria substituir $num no echo pelo primeiro valor (neste exemplo 2), fazer loop e subtituir pelo segundo (neste caso 5) e finalmente fazer loop outra vez e subtituir por 1, o loop acabava aqui porque pus o limite de 3 ($max = 3; ) pois no quarto loop o $i já estava com o valor 3 e ao fazer a comparação se $i é menor que $max ia obviamente constatar que é falso e correr o else, saindo do loop.

Neste exemplo o echo cria um link de uma imagem (thumbnail) para o url dessa imagem e logo a seguir cria o respectivo numero do array ao lado ('.($num+1).') seguido de um espaço em branco ( ), não é obrigatorio ter o numero ao lado, só adicionei isso para verificar que o o script está a funcionar sem ter estar a adicionar links e imagens reais aos arrays.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hehe ;) gostei.

isto pode-se aplicar, por exemplo, num site de venda de uma especie de produtos quaiquer como "porduto do momento" ou num site de publicidade uma area do genero "empresas de x" ou num site pessoal como "funny moment"... gostei mesmo. vi uma vez um script do genero mas era para se tivesses varias banners, mudares atraves de um php script aleatoriamente, tambem. mas mesmo assim esta bom. parabens :)

ps: so agora realmente me apercebi que php tem MUITO a ver com c. ja tinha ouvido falar muito disso mas agora que me sinto um pouquinho mais ligado ao c vejo que realmente tem razao :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
hehe ;) gostei.

isto pode-se aplicar, por exemplo, num site de venda de uma especie de produtos quaiquer como "porduto do momento" ou num site de publicidade uma area do genero "empresas de x" ou num site pessoal como "funny moment"... gostei mesmo. vi uma vez um script do genero mas era para se tivesses varias banners, mudares atraves de um php script aleatoriamente, tambem. mas mesmo assim esta bom. parabens :)

ps: so agora realmente me apercebi que php tem MUITO a ver com c. ja tinha ouvido falar muito disso mas agora que me sinto um pouquinho mais ligado ao c vejo que realmente tem razao :D

Ya quem sabe C deve aprender PHP, porque realmente são linguagens que tem a lógica muito parecida.

Gostei bastante do script. Para um tipo como eu que tem trabalhado na aprendizagem do C e já vou algo avançado no C básico, ao ver no PHP conteúdos lógicos que já sei no C consigo ler o código com muito mais facilidade.

Cumps e vai continuando a dar mais umas aulinhas de PHP ao pessoal. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Thanks, por acaso nunca experimentei aprender C, mas tambem como vou começar este ano a aprender. Se for tão fácil como PHP então acho que me vou safar bem, não conheço C mas penso que uma das principais diferenças entre C e PHP é que no PHP são criadas várias funções já embutidas no código para facilitar a criação de um script para a net, e como PHP é uma linguagem em constante evolução, novas e novas funções vão aparecendo.

fiquem bem :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Thanks, por acaso nunca experimentei aprender C, mas tambem como vou começar este ano a aprender. Se for tão fácil como PHP então acho que me vou safar bem, não conheço C mas penso que uma das principais diferenças entre C e PHP é que no PHP são criadas várias funções já embutidas no código para facilitar a criação de um script para a net, e como PHP é uma linguagem em constante evolução, novas e novas funções vão aparecendo.

fiquem bem :P

Bem com o C vais ter mais algum trabalho que não tiveste com o PHP disso tenho a certeza. No entanto, não é difícil desde que estudes com vontade. É claro que algumas coisas não vais perceber à primeira, nem à segunda e vais ter de ler uma terceira, quarta ou quinta vez para perceberes direitinho o que lá está.

Depois de saberes o C básico ("Linguagem C" de Luís Damas) o C avançado já será mais fácil para ti.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Muito bom, mas podias usar o GeSHi para a malta conseguir ler melhor :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora