Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo de Tarso F. M.

Tem como fazer isso aki (ver detalhes...)

Recommended Posts

Olá people! Gostaria de tirar uma dúvida envolvendo switch... Tenho aki um exemplo:

switch ($foto) {	case 1:		$foto_width = "horizontal";		break;	case 2:		$foto_width = "vertical";		break;
Vamos supor que eu tenha 50 fotos... Intercaladas entre horizontais e verticais... Teria como eu criar esse swutch sem a necessidade de citar cada case para cada uma das 50 fotos? Tipo assim...

 

Por exemplo, as fotos horizontais são as 1, 5, 6, 7, 10, 11, 15, 16, 20, 24, 35, 37, 38, 39, 46, e 48. Eu vou ter q criar um case com cada número? Não tem como criar cases onde você indicaria:

case 1 or 5 or 6 or 7...
???

 

Pq se puder fazer algo do gênero, é mais fácil e menos extenso do q criar cada case para cada uma das fotos, já que são só 2 tipos de "conteúdo de case": horizontal ou vertical...

 

É isso... Se puderem me ajudar, agradeceria! Vlw! Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olha soh, testei fazer assim, mas ele me retorna sempre "1", ele não consegue atribuir outro valor... (Esse número é atribuído via GET, onde
<a href="foto.php?foto=1"> | ]<a href="foto.php?foto=2"> | ]<a href="foto.php?foto=3">  ...
e na página "foto.php", ele busca isso assim:
$foto = $_GET["foto"];
Agora, segue aki como eu fiz baseando na indicação do Tiago:
switch ($foto) {	case $foto = 1 || $foto = 3 || $foto = 5 || $foto = 7 || $foto = 12 || $foto = 15 || $foto = 16 || $foto = 17 || $foto = 18 || $foto = 19 || $foto = 23 || $foto = 30 || $foto = 31 || $foto = 32 || $foto = 34 || $foto = 36 || $foto = 37 || $foto = 39 || $foto = 42 || $foto = 43 || $foto = 44 || $foto = 47 || $foto = 48:		$foto_dir = "vertical";		break;	case $foto = 2 || $foto = 4 || $foto = 6 || $foto = 8 || $foto = 9 || $foto = 10 || $foto = 11 || $foto = 13 || $foto = 14 || $foto = 20 || $foto = 21 || $foto = 22 || $foto = 24 || $foto = 25 || $foto = 26 || $foto = 27 || $foto = 28 || $foto = 29 || $foto = 33 || $foto = 35 || $foto = 38 || $foto = 40 || $foto = 41 || $foto = 45 || $foto = 46:		$foto_dir = "horizontal";		break;	}
Será q isso é possível? Onde será q está errado? Estranho é q naum apresenta erro, ele soh retorna como $foto = 1... Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem que ser

 

switch ($foto) {	case 1 || 3 || 5 || ....
Nunca usei, mas acredito que funcione.
Eu cheguei a testar com or ao invés das barras (||), mas não funcionou... Depois posso testar com as barras, agora não ía dar... Mas aproveitando, tenho 2 perguntas:

 

- Essa pode até ser besta, mas o q seria GD?

- E outra: qdo usar or e qdo usar barras?

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom mas pq tu naum pega as infos da imagem testa a largura e o comprimento aih classifica em hor e vertnão seria mais fácil?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suisa mandou bemeu fiz um esquema assim faz achu que dois anos, pega a largura se forma maior que altura horizontal else vertical, faz este if dentro do laç ode repetição e já sai imprimindo e se tiver mostrando ja imprime a classe do css na hora que faz esta verificação, e de preferência faça semanticamente correto usando ul li , po fui longe foi mau.ahauha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Suisa mandou bemeu fiz um esquema assim faz achu que dois anos, pega a largura se forma maior que altura horizontal else vertical, faz este if dentro do laç ode repetição e já sai imprimindo e se tiver mostrando ja imprime a classe do css na hora que faz esta verificação, e de preferência faça semanticamente correto usando ul li , po fui longe foi mau.ahauha

Teria como me mandar esse código q você utilizou há 2 anos? É q eu preciso de exemplos para poder fazer as coisas... rsrsrs... Não manjo nada (nada msm) de PHP ainda... Esse é meu primeiro projeto, e ele é bem simples...Estou usando PHP soh pra não ter q criar uma página para cada foto (o site é como se fosse um álbum de foto, onde você clica na miniatura e ele abre a janela nova com a foto)...Neste caso, o q eu fiz? O link da miniatura aponta para a página "foto.php", e o link é assim: href="foto.php?foto=1" e cada foto tem seu número certo.O problema é q as fotos não são separadas por tamanho. A 1 é vertical e a 2, horizontal, 3 tb é horizontal, a 4vertical... Não seguem um "padrão". O q muda é o link, q tem um evento onclick, q abre uma nova janela centralizada na tela de acordo com a foto... Se a foto for horizontal, o onclick está com window.open com o tamanho especificado para foto horizontal, e vertical, vice-versa...Pq eu preciso dessa verificação do número? Pq, de acordo com ele, 3 variáveis serão definidas: width com o tamanho certo, height, e tb tem um q diz "hor" ou "ver", q utilizo para aplicar uma ID de CSS... (Vixi! Q complicação! rsrsrs)Eu andei pesquisando sobre como pegar o tamanho da foto e tals... Mas eu naum consegui encontrar um meio de fazer isso... Será q alguém tem mais dicas?Vlw gente! Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre pegar o tamanho da imagem.. e abrir a janela no tamanho correto... dá uma olha aqui

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre pegar o tamanho da imagem.. e abrir a janela no tamanho correto... dá uma olha aqui

 

Flw

Vou dar uma olhadinha depois em casa... No serviço eu não tenho como, afinal de contas, eu não trabalho na frente da telinha... hehehehe...

 

Mas é simples, e eu não tinha pensado nessa coisa de imprimir na tela os valores da nova janela de acordo com a img a ser aberta...

 

Mas Tiago e Cia, me tira uma dúvida aki:

<?php$largura = imagex($imagem);$altura = imagey($imagem);?>
Como ele calcula o tamanho da imagem aki? Pq de qual imagem ele está calculando? Pq eu tenho 48 fotos... Akela variável $imagem, o q vem dentro dela? (Acho q essa parte aki quem poderia responder é o "Bacati", autor do tópico onde tirei este trecho de código)...

 

Acho q para eu entender direito aki, preciso dessa parte da variável $imagem... Assim eu não tô conseguindo assimilar as idéias... Ainda me perco com coisas q a princípio são até simples, mas para mim ainda não são...

 

Vlw gente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php/* Pegando o id da imagem via GET */$id_imagem = isset($_GET['foto'])  ?  ( int ) $_GET['foto']  :  1;/* Validacao: se o id for maior que 0 e menor que 48, o id e valido.    Se nao for, o id e 1.   48 e o numero total de fotos, altera caso seja necessario */$id_imagem = ( $id_imagem > 0 && $id_imagem <= 48)  ?  $id_imagem  :  1;/* Altere para pegar o nome da imagem */$imagem = "???????????"; /* Largura e altura */if (is_file($imagem)) {	list($largura, $altura) = getimagesize($imagem);}echo "Largura:" . $largura . "Altura:" . $altura;?>

 

Referências sobre as funções no manual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php$imagem = "fotos/teste1.jpg";$img = ImageCreateFromJpeg($imagem);$largura = imagesx($img);$altura = imagesy($img);?><a href="#" onClick="window.open('imagem.php?imagem=<?php echo $imagem;?>', '', 'width=<?php echo $largura;?>, height=<?php echo $altura;?>');">Abre pop-up</a>

$imagem aqui está recendo o caminho do arquivo....

$img - recebe a função ImageCreateFromJpeg que "Cria uma nova imagem a apratir de um arquivo ou URL"

depois pego a largura e altura pela função imagesx e imagesy respectivamente..... da imagem que foi criada no $img

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a tds pelo apoio... Mas vms lá... Ainda há perguntas a fazer... rsrsrs...

 

1º caso - Código do Epyllion:

 

/* Pegando o id da imagem via GET */

$id_imagem = isset($_GET['foto']) ? ( int ) $_GET['foto'] : 1;

/* Validacao: se o id for maior que 0 e menor que 48, o id e valido.

Se nao for, o id e 1.

48 e o numero total de fotos, altera caso seja necessario */

$id_imagem = ( $id_imagem > 0 && $id_imagem <= 48) ? $id_imagem : 1;

 

/* Altere para pegar o nome da imagem */

$imagem = "???????????";

 

1) Qual a função das interrogações ali? Me atrapalhei um pouco nesse código...

2) Nessa parte, /* Altere para pegar o nome da imagem */, o q devo colocar ali para fazer o q você mencionou (pegar o nome da imagem)?

 

 

2º caso - Código do Azeredo:

 

$imagem = "fotos/teste1.jpg";

 

- Vms supor que eu tenha um valor enviado via GET. E se chama assim na página:

 

$foto = $_GET["foto"];

 

Nesse seu trecho do código, ao invés de eu especificar manualmente o caminho da imagem, como todas elas são só números (de 1 a 48), eu poderia fazer assim?

 

$imagem = "fotos/" . $foto . ".jpg";

 

Pq, eu acho, dessa forma, crio isso uma vez só, e a cada img 'clicada', como vai ser um número diferente, ele vai 'imprimir' esse número e com isso completará o caminho do arquivo... Isso funciona? (Não pûde testar... Por isso, escrevi...)

 

 

Ah! E ainda no código do Epyllion, desculpa perguntar, mas qual a função desse comando aki:

 

isset($_GET['foto']), o "isset"???

 

Bom, por enquanto é "só"... hehehe...

 

E galera, vlw, vlw msm pelo apoio.... Té +!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sobre a ?.... é uma outra forma, bem mais reduzida e prática de se trabalhar com if..... por exemplo...

 

Variável = (condição) ? valor1 : valor2

 

Neste exemplo não só realiza uma comparação de valores, como também já atribui um valor a uma variável.

Ou seja, o que irá fazer é avaliar a condição (colocada entre parênteses) e se for verdadeira atribui o valor1 à variável e no caso contrário lhe atribui o valor 2. Entedeu??

 

seria algo do tipo.... no código do Epyllion....

$id_imagem = isset($_GET['foto']) ? ( int ) $_GET['foto'] : 1;//ficaria mais ou menos assim.....if $isset($_GET['foto']) {	$id_imagem = (int)$_GET['foto']} else {	$id_imagem = 1}

se eu estiver errado.. me corrijam por favor.... mas acho que é isso...

 

sobre o isset.. para não "entregar" tudo mastigado.. eheh dá uma olhada no manual, aconselho sempre consulta o manual para saber sobre as funções que ainda não usou... você irá entender bem, pois além de explicar o funcionamento.. ainda tem uns exemplos lá....

 

e sobre a sua dúvida no meu exemplo... pode sim passar código da foto por get.. deste modo mesmo que você postou....

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

azeredo, ótima explicação. É isso mesmo.

 

1) Qual a função das interrogações ali? Me atrapalhei um pouco nesse código...

Leia com atenção a explicação do azeredo.

 

2) Nessa parte, /* Altere para pegar o nome da imagem */, o q devo colocar ali para fazer o q você mencionou (pegar o nome da imagem)?

Coloque o caminho da foto e o nome. Não sei como está a sua estrutura de diretórios, nem a nomenclatura das imagens, por isso não coloquei. Exemplo:

 

$imagem = "foto/" . $id_imagem . '.jpg';
Dessa forma, buscamos dentro do diretório foto a imagem 1.jpg, e consequentemente 2.jpg, 3.jpg, ect.

 

sobre o isset.. para não "entregar" tudo mastigado.. eheh dá uma olhada no manual, aconselho sempre consulta o manual para saber sobre as funções que ainda não usou... você irá entender bem, pois além de explicar o funcionamento.. ainda tem uns exemplos lá....

Ótimo conselho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh relamente você tem q ter alguma base sobre as funções básicas e mais utilizadas do PHP, antes eu me batia com upload de imagem pq naum tinha pego e destrinxado um script agora eu ja cusnigo entender ele bem e ainda coloco para criar as thumbnails =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

E sobre o case(), tenta assim:

 

switch($foto){  case (1):  case (3):  case (5):  case (7):  case (9):	$foto_width = "horizontal";  break;  case (2):  case (4):  case (6):  case (8):	$foto_width = "vertical";  break;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se todas as imagens pares forem as "verticais", você pode fazer assim também e economizar algumas linhas com o switch.

 

<?php$imagem = 4;$posicao = (($imagem % 2) == 0)  ?  'vertical'  :  'horizontal';echo $posicao;?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caraca! Q aula! Gente, obrigado!

 

Estas dúvidas levantadas fazem parte de meu primeiro site envolvendo PHP... Ou seja, td q perguntei aki para vcs é pq eu naum tenho a base formada... Sempre recomendam ler o manual... Tenho feito isso, mas msm assim eu me perco com os exemplos inclusive... Tanto q eu perguntei há uns dias como somar valores a uma variável e tals, e no final de td, me indicaram usar a função 'sprintf()', q, lendo o manual, eu não consegui entender, mas o Tiago me explicou o próprio exemplo do manual e aí eu entendi com a explicação dele...

 

Peço desculpas se minhas perguntas são "simples" demais, mas é pq eu naum sei nada de PHP... E então estou usando o fórum do iMasters para aprender... hehehehe...

 

Galera, obrigado a todos mesmo pelas dicas... Vlw! Acho q agora eu jah tenho uma base bem sustentável sobre o assunto (switch e tb manipulação de imagens via GET...)

 

Fui! Té +!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo.. na dúvida.. o que vale é questionar...tb comecei recentemente com php... e tudo que aprendi e estou aprendendo devo praticamente 100% ao pessoal daqui!!Flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo, não se preocupe, no início é assim mesmo. Essas dificuldades são normais.

 

Perdoe nossa insistência em te incentivar a ler o manual, mas isso é um passo fundamental. Fico feliz em saber que você está lendo o mesmo, e, não tenha medo de perguntar caso tenha dúvidas ou não consiga entender os exemplos do manual (cá entre nós, tem alguns exemplos bem chatos, não ? *rs*).

 

"Aquele que faz uma pergunta é um tolo por cinco minutos; aquele que não faz permanece tolo para sempre"[Provérbio Chinês]

 

Foram lhe apresentadas várias maneiras de fazer, o importante é você entender a lógica e aplicar a que achar melhor.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.