Ir para conteúdo

POWERED BY:

Arquivado

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

Evandro.S Eisinger

Estrutura de repetição. (UpLoad Dinâmico)

Recommended Posts

Oi Pessoal!

 

Estou tento um problema na estrutura de repetição de um projeto que estou fazendo. Vou explicar como esta funcionando:

 

1º: Formulario que envia para outro a variavel de quantos campos de upload vou querer. (Até aqui OK)

2º: Nesse formulario que recebe a variavel de quantos campos, envia para o "recebe_uploads.php" as variaveis para upload.(Aqui eu acho que fiz certo)

3º: O "recebe_uploads.php" recebe as variaveis e faz o upload dos arquivos e grava no banco o nome de cada foto enviada. ( Aqui esta o problema de repetição);

 

------------------------------------------------------------------------------------------------------------

 

1º: Cadastro:

 

<form action="recebe_cadastro.php" method="post">
<b>Envio das fotos</b><br />
Qual a quantidade de fotos para upload?<br /><br />
<input type="text" name="quantidade" size="5"/><br />
<input type="submit" value="OK"/>
</form>

 

2º: Recebe cadastro:

 

<?php
$Quantidade = (isset($_POST['quantidade']) && is_int(intval($_POST['quantidade']))) ? (int)$_POST['quantidade'] : 5;

// Abro formulário de upload
echo '<form action="recebe_fotos.php" method="POST" enctype="multipart/form-data">';
echo '<b>Envio das fotos</b><br />';
echo 'Galeria:<input type="text" name="galeria"/><br/>';
// Imprimo os campos para upload, de acordo com a quantidade
for($i = 1; $i <= $Quantidade; ++$i)
{
	echo 'Foto #' . $i . ': <input type="file" name="fotos' . $i . '" /><br/>' . "\n";
}

// Fecho formulário
echo '<br/><input type="submit" value="Cadastrar"/>';
echo '</form>';

?>

 

3º: Recebe uploads: (PROBLEMA)

 

<?php
include("conexao.php");
//Pega o valor da galeria
$galeria=$_POST['galeria'];
// Obtenho os dados do upload
$fotos = $_FILES['fotos'];
//Se o numero de fotos for menor que o numero total repete a função até chegar la
for($i = 1; $i < sizeof($fotos); $i++){
$nome=$fotos['tmp_name'][$i];
mysql_query("INSERT INTO tb_galeria (galeria) VALUES ('$galeria')") or die ("Erro no insert");
mysql_query("INSERT INTO tb_fotos (fotos,galeria) VALUES ('$nome','$galeria')") or die ("Erro no insert");
move_uploaded_file($nome,"./fotos/".$nome);
}
?>

 

 

Fico esperando a resposta de vocês anciosamente!

 

Um ABRAÇÂO e AGRADECIDO desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Alaerte!

 

Na parte campo ficaria assim:?

 

echo 'Foto #' . $i . ': <input type="file" name="fotos[' . $i . ']" /><br/>' . "\n";

 

E na parte upload nao intendi oque quis dizer... Pelo que eu saiba o for esta certo.

 

Obrigado pela ajuda!

 

Aguardo seu retorno!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Alaerte!

 

Na parte campo ficaria assim:?

 

echo 'Foto #' . $i . ': <input type="file" name="fotos[' . $i . ']" /><br/>' . "\n";

 

E na parte upload nao intendi oque quis dizer... Pelo que eu saiba o for esta certo.

 

Obrigado pela ajuda!

 

Aguardo seu retorno!

Não, ficaria assim Evandro:

echo 'Foto #' . $i . ': <input type="file" name="fotos[]"' . $i . '" /><br/>' . "\n";
pois como você trabalha com vários campos, terá que trabalhar com vetores...

 

no upload você deve contar também os campos com a função

count();
juntamente com o FOR, sabe fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não evandro, o count seria para contar os elementos contidos no array do campo...

for($a=0; $a <= count($_FILES['foto']); $a++){}
saca ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmm

 

Então ficaria assim?

 

for($i = 1; $i <= count($_FILES['foto']); $i++){

mysql_query("INSERT INTO tb_fotos (fotos,galeria) VALUES ('". $_FILES['fotos']['name'][$i] ."','$galeria')") or die ("Erro no insert");

move_uploaded_file($_FILES['fotos']['tmp_name'][$i],"./fotos/".$_FILES['fotos']['name'][$i]);

}

 

 

 

Abraços!!!

 

Obrigadooooo pela ajuda!

 

EDITADO:

 

Eu coloquei assim, mas nao funcionou na web, ele nao rava os itens e nao da upload neles:

 

<?php

include("conexao.php");

 

$galeria=$_POST['galeria'];

mysql_query("INSERT INTO tb_galeria (galeria) VALUES ('$galeria')") or die ("Erro no insert");

for($i = 1; $i <= count($_FILES['foto']); $i++){

mysql_query("INSERT INTO tb_fotos (fotos,galeria) VALUES ('". $_FILES['fotos']['name'][$i] ."','$galeria')") or die ("Erro no insert");

move_uploaded_file($_FILES['fotos']['tmp_name'][$i],"./fotos/".$_FILES['fotos']['name'][$i]);

}

?>

 

 

Mas assim funcionou parcialmente.(So gravou a primeira foto)

 

<?php

include("conexao.php");

 

$galeria=$_POST['galeria'];

mysql_query("INSERT INTO tb_galeria (galeria) VALUES ('$galeria')") or die ("Erro no insert");

for($i = 1; $i < sizeof($_FILES['fotos']); $i++){

 

mysql_query("INSERT INTO tb_fotos (fotos,galeria) VALUES ('". $_FILES['fotos']['name'][$i] ."','$galeria')") or die ("Erro no insert");

move_uploaded_file($_FILES['fotos']['tmp_name'][$i],"./fotos/".$_FILES['fotos']['name'][$i]);

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem Evandro, já que tu tentou, tentou, e tentou, e não conseguiu eu vou te quebrar esse galho e reformular pra você, segue abaixo o código correto:

 

formulário

<?php
$Quantidade = (isset($_POST['quantidade']) && is_int(intval($_POST['quantidade']))) ? (int)$_POST['quantidade'] : 5;

// Abro formulário de upload
echo '<form action="a.php" method="POST" enctype="multipart/form-data">';
echo '<b>Envio das fotos</b><br />';
echo 'Galeria:<input type="text" name="galeria"/><br/>';
// Imprimo os campos para upload, de acordo com a quantidade
for($i = 1; $i <= $Quantidade; ++$i)
{
	echo 'Foto #' . $i . ': <input type="file" name="fotos[]"/><br/>' . "\n";
}

// Fecho formulário
echo '<br/><input type="submit" value="Cadastrar"/>';
echo '</form>';

?>

upload

 

<?php
include("conexao.php");
//Pega o valor da galeria
$galeria=$_POST['galeria'];
// Obtenho os dados do upload
$fotos = $_FILES['fotos'];
//Se o numero de fotos for menor que o numero total repete a função até chegar la
for($i = 1; $i < count($fotos); $i++){
$nome=$fotos['name'][$i];
$nome_t=$fotos['tmp_name'][$i];
mysql_query("INSERT INTO tb_galeria (galeria) VALUES ('$galeria')") or die ("Erro no insert");
mysql_query("INSERT INTO tb_fotos (fotos,galeria) VALUES ('$nome','$galeria')") or die ("Erro no insert");
move_uploaded_file($nome_t,'fotos/'.$nome);
}
?>

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw Alaerte!!

 

Esta funcionando (Mas ta dando um probleminha)

 

Tive que modifica algumas coisas para funcionar.

 

Problema:

 

Quando eu cadastro um numero menor de 5 fotos, por exemplo 1 foto, ele cadastra sozinho o que falta para fechar 5....

Ai eu olho no banco e ta a foto que eu cadastrei e mais quatro em branco.

 

Verifiquei nos codigos e nao consigui achar o erro...

 

Fico assim meu codigo:

 

Recebe cadastro:

 

<?php
$quantidade = $_POST['quantidade'];
// Abro formulário de upload
echo '<form action="recebe_fotos.php" method="POST" enctype="multipart/form-data">';
echo '<b>Envio das fotos</b><br />';
echo 'Galeria:<input type="text" name="galeria"/><br/>';
// Imprimo os campos para upload, de acordo com a quantidade
for($i = 0; $i <= $quantidade-1; ++$i)
{
	echo 'Foto #' . $i . ': <input type="file" name="fotos[]"/><br/>' . "\n";
}

// Fecho formulário
echo '<br/><input type="submit" value="Cadastrar"/>';
echo '</form>';

?>

E o recebe_fotos:

 

<?php
include("conexao.php");
//Pega o valor da galeria
$galeria=$_POST['galeria'];
// Obtenho os dados do upload
$fotos = $_FILES['fotos'];
$total_fotos= count($fotos);
//Se o numero de fotos for menor que o numero total repete a função até chegar la
mysql_query("INSERT INTO tb_galeria (galeria) VALUES ('$galeria')") or die ("Erro no insert");
for($i = 0; $i < $total_fotos-1; $i++){
$nome=$fotos['name'][$i];
$nome_t=$fotos['tmp_name'][$i];
mysql_query("INSERT INTO tb_fotos (fotos,galeria) VALUES ('$nome','$galeria')") or die ("Erro no insert");
move_uploaded_file($nome_t,'fotos/'.$nome);
}
?>

 

VERIFIQUEI os FOR mas nao tem nada que fale que se for menos de 5 upload ele cadastre sozinho...

 

Abraços!!!

 

Obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Justamente por isso que tem antes a parte para colocar a quantidade de campos, pois o usuário só vai colocar a quantidade que for preciso, desta maneira não terá esse problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw, alaerte!

 

A quantidade campos ja foi mandada pelo o outro arquivo que nao mostrei nos topíco.

 

Tipo, aqui ta o link de onde eu testo, http://www.evandrowebsites.com/galeria/

 

Primeiro vai no arquivo CADASTRO.php

 

Depois de termina o cadastro volta para http://www.evandrowebsites.com/galeria/

 

E vai em GALERIAS.php

 

Escolhe a galeria que crio e ve o que ta acontecendo....

 

Tipo, ele cadastra as tuas fotos , se a quantidade for menor que 5 ele cadastra o numero que foi necessario para fazer 5 uploads.

 

E eu nao quero que isso aconteça. Quero que só faça o upload da quantidade que eu solicitei no arquivo CADASTRO.php

 

Abraços!!

 

 

 

Obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só Evandro, o problema é devido esse 5 campos default ai, mais você vai usar apenas a função isset(); para verificar quais os campos tem valor e inseri-los, saca ?

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.