Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, tudo bem?
Consegui montar o código que pega os nomes dos arquivos de imagem de determinada pasta e imprima na tela para mim.
O projeto é um selecionador de imagens, em que o cliente vai escolher quais imagens deseja imprimir e ao clicar em enviar, vou receber o nome dos arquivos.
Porém, o código de seleção de imagem já está funcionando como eu quero, mas, não estou conseguindo fazer o código php de destino.
Segue o código completo e funcionando do sistema de seleção:
<style type="text/css">
body {
margin:0;
}
</style>
<?phpfunction PegaNomes($dirPath)
{
$files = scandir($dirPath);
foreach ($files as $key => $file)
{
if ($file == '..' || $file == '.' || !preg_match("/-295x250\.jpg$/i", $file))
{
unset($files[$key]);
continue;
}
$currentDirPath = $dirPath."\\".$file;
if(is_dir($currentDirPath))
{
$dirName = $file;
$file = array($dirName);
$file[] = GetDirectoriesAndFiles($currentDirPath);
unset ($files[$key]);
$files[$key] = $file;
}
}
return $files;
}
?>
<center>
<?php
$Diretorio = "site/wp-content/uploads/2016/06"; //Nome ou endereço da pasta que se encontra as imagens que desejo exibir
$imagens = PegaNomes($Diretorio);
$contador = 0;
?>
<form action='destino.php' method='POST'>
<?php foreach ($imagens as $id =>$image): ?>
<img src="<?php echo $Diretorio ?>/<?php echo $image ?>">
<label><input type="checkbox" name="imagens[<?php echo $id ?>]" value="<?php echo $image ?>"></label>
<?php $contador ++; ?>
<?php if ($contador >= 3) { ?>
<br>
<?php $contador = 0; ?>
<?php } ?>
<?php endforeach ?>
<br /><label>Quantidade de fotos escolhidas: <input type="text" name="result" id="result" value="0" /></label>
<br /><input type="submit" name="botao_enviar" value="Enviar">
</form>
</center>
<script>
var itens = document.querySelectorAll("label input");
var resultado = document.getElementById("result");
for ( i = 0, soma = 0; i < itens.length ; i++){
itens[i].onchange = function(){
if (this.checked==true) {
soma = soma + 1;
}
else {
soma = soma - 1;
}
resultado.setAttribute("value",soma)
}
}
</script>
E aqui o código que comecei a fazer de envio. Porém o que não estou conseguindo raciocinar é como foi fazer o loop para capturar o **$_POST['']; **com o nome do arquivo.
<?php
$emaildestinatario = 'contato@rolly.com.br';
$emailremetente= trim("rolly.santos@live.com");
$foto= $_POST[''];
$mensagemHTML = '<P>Fotos selecionadas</P>
<p> </p>
<hr>';
$assunto.= "Solicitaçao de Orçamento";
$headers = "MIME-Version: 1.1\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";$envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);
if($envio)echo "<script>location.href='[http://rolly.com.br/site/orcamento-sucesso/'](http://rolly.com.br/site/orcamento-sucesso/)";
?>
Alguem poderia me dar uma ajuda de como poderia ser feito este $_POST[''];?Vasculhando o imasters, encontrei algo interessante.
Que eu poderia usar o seguinte:
foreach ($_POST as $campo => $valor) {
$$campo = $valor;
}
Em que vou capturar todos os campos POST que me é enviado da página anterior, só que o meu problema ainda está sendo como vou imprimir esses campos na tela.
Aqui...
consegui resolver parte do código.
Em que, como o foreach de exibição de imagens é uma array.
Puxei a array e transformei em uma variável.
Agora, o que não consigo é imprimir a array no e-mail.
<?php
$emaildestinatario = 'contato@rolly.com.br';
$emailremetente= trim("rolly.santos@live.com");
$escolhidas = $_POST['imagens'];
//escolhidas é uma array que tem todos os nomes que preciso exibir na mensagem enviada para o email.
//print_r ($escolhidas);
//se eu der um print_r, vou ver todos os nomes do que escolhi.
//Pra ver o print_r funcionando acesse o link http://rolly.com.br/escolhe.php
$mensagemHTML = '<P>Fotos selecionadas</P>
<p> Quero exibir os dados da array aqui </p>
<hr>';
$assunto.= "Fotos selecionadas";
$headers = "MIME-Version: 1.1\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: $emailremetente\r\n"; // remetente
$headers .= "Return-Path: $emaildestinatario \r\n"; // return-path
$envio = mail($emaildestinatario, $assunto, $mensagemHTML, $headers);
if($envio)
echo "<script>location.href='[http://rolly.com.br/site/orcamento-sucesso/'](http://rolly.com.br/site/orcamento-sucesso/)";
else
echo "erro ao enviar";
?>
Alguem poderia me ajudar a imprimir os dados da array no corpo da mensagem enviada ao e-mail?
Ja tentei foreach, mas nada imprimi.
Pensei em colocar algo tipo assim:
$TotalDados = count($escolhidas);
$i=0;
$mensagemHTML = '<P>Fotos selecionadas</P>
<p> </p>'.for($i=0;$i<$TotalDados;$i++)
{
echo $escolhidas;
};
Mas n"ao aceita o for.
Quando você quer fazer um loop em um array, utilize o foreach, que é específico para array.
Tenta assim:
$informacoesImagens = "";
if(!empty($_POST['imagens']) && is_array($_POST['imagens'])){
foreach($_POST['imagens'] as $id => $imagem){
$informacoesImagens .= "{$id} - {$imagem}<br>";
}
}
$mensagemHTML = "
<p>Fotos selecionadas</p>
<p>{$informacoesImagens}</p>
<hr>
";Obrigadão AndersonMamede, me ajudou muito.
Deu super certo aqui!
Valeu!
Beleza!!
Você encontra mais informações sobre o foreach na documentação.
Acabei de ler a seguinte matéria, porém, não entendi como vou usar os dados extraidos e colocando no html do txto de e-mail.
>
Quem não se viu na horrível tarefa de receber uma data de dados de um formulário, atribuindo uma por uma todas as variáveis em PHP? Isso fazia-se com linhas como estas:
Se o formulário tivesse 10 elementos não seria muito chato escrever as 10 linha de código, mas se fossem 50 ou 100 a situação seria muito menos agradável. O código que vamos ver a seguir tornará problema mais fácil.
Realiza-se um loop foreach que vai recorrendo cada um dos elementos POST. Em cada iteração, vão-se acedendo a todos os elementos do POST e vão-se guardando em $nome_campo o nome do campo recebido para o formulário e em $valor, o valor que se tinha introduzido no formulário.
Tudo o anterior deduz-se da primeira linha. As seguintes em cada iteração, cada uma dos comandos que deveríamos ter escrito manualmente. Isto é, na variável comando guardaremos uma linha de código PHP que realiza a declaração da variável do formulário dentro de PHP e a sua inicialização com o valor que se tinha escrito.
Na seguinte linha, onde está a função eval(), executa-se a sentença gerada no passo anterior. A função eval() de PHP executa o conteúdo de uma cadeia de caracteres como se fosse um comando de PHP.