Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera do imasters , eu aqui de novo cheide dúvidas.
olha só, to tentando um script para fazer uploads de várias imagem para pasta e grava no nome das imagens no banco de dados.
Já consegui enviar varias imagens para a pastas mas na hora de gravar o nome delas no bd dá erro.
vou postar o código para entenderem melhor:
TABELA DO BD
tbl_imagens
codigo
album
fotos
FORMULÁRIO QUE ENVIA AS IMAGENS
<?php
$Quantidade = (isset($_POST['quantidade']) && is_int(intval($_POST['quantidade']))) ? (int)$_POST['quantidade'] : 1;
echo '<form action="album/fotos/processa_upload.php" method="post" name="albumfotos" enctype="multipart/form-data" >';
echo '<span>Selecione a Imagem:</span><br />';
echo '<input type="hidden" name="album" value="" />';
for($i = 1; $i <= $Quantidade; ++$i)
{
echo 'Foto #' . $i . ':<input type="file" name="fotos[]" multiple=""/><br />';
}
echo '<input type="submit" name="enviar-fotos" id="enviar" value="Cadastrar" />';
echo '</form>';
?>
CÓDIGO QUE PEGA AS IMAGENS E JOGA NA PASTA
<?php
// Pasta de destino das fotos
$Destino = 'uploads/';
// Obtém dados do upload
$Fotos = $_FILES['fotos'];
// Contagem de fotos enviadas
$Conta = 0;
// Itera sobre as enviadas e processa as validações e upload
for($i = 0; $i < sizeof($Fotos); $i++)
{
// Passa valores da iteração atual
$Nome = $Fotos['name'][$i];
$Tamanho = $Fotos['size'][$i];
$Tipo = $Fotos['type'][$i];
$Tmpname = $Fotos['tmp_name'][$i];
// Verifica se tem arquivo enviado
if($Tamanho > 0 && strlen($Nome) > 1)
{
// Verifica se é uma imagem
if(preg_match('/^image\/(gif|jpeg|jpg|png)$/', $Tipo))
{
// Caminho completo de destino da foto
$Caminho = $Destino . $Nome;
// Tudo OK! Move o upload!
if(move_uploaded_file($Tmpname, $Caminho))
{
echo 'Foto #' . ($i+1) . ' enviada.<br/>';
// Faz contagem de enviada com sucesso
$Conta++;
}
else // Erro no envio
{
// $i+1 porque $i começa em zero
echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>';
}
}
}
}
if($Conta) // Imagens foram enviadas, ok!
{
echo '<br/>Foi(am) enviada(s) ' . $Conta . ' foto(s).';
} echo 'Você não enviou fotos!';
}
?>
É isso ai, só quero fazer com que o nome do álbum e o nome das fotos sejam gravadas no banco de dados.
desde já agradeço a ajuda de todos
Olá amigo td bem.
consegui fazer com que ele grave o caminho da imagem no bd da seguinte forma, o probela é que o código só envia 5 imagens de cada vez e não encontrei com posso determinar um numero maior de imagens. segue o código
<?php
$conexao = mysql_connect("host", "usuario", "senha")
or die ("erro ao conectar");
$db = mysql_select_db("banco")
or die("erro ao selecionar banco");
?>
<?php
// Pasta de destino das fotos
$Destino = 'uploads/';
// Obtém dados do upload
$Fotos = $_FILES['fotos'];
// Contagem de fotos enviadas
$Conta = 0;
// Itera sobre as enviadas e processa as validações e upload
for($i = 0; $i < sizeof($Fotos); $i++)
{
// Passa valores da iteração atual
$Nome = $Fotos['name'][$i];
$Tamanho = $Fotos['size'][$i];
$Tipo = $Fotos['type'][$i];
$Tmpname = $Fotos['tmp_name'][$i];
// Verifica se tem arquivo enviado
if($Tamanho > 0 && strlen($Nome) > 1)
{
// Verifica se é uma imagem
if(preg_match('/^image\/(gif|jpeg|jpg|png)$/', $Tipo))
{
// Caminho completo de destino da foto
$Caminho = $Destino . $Nome;
$sql = mysql_query("INSERT INTO tbl_imagens VALUES ('','".$album."', '".$Caminho."')") or die(mysql_error());
// Tudo OK! Move o upload!
if(move_uploaded_file($Tmpname, $Caminho))
{
echo 'Foto #' . ($i+1) . ' enviada.<br/>';
// Faz contagem de enviada com sucesso
$Conta++;
}
else // Erro no envio
{
// $i+1 porque $i começa em zero
echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>';
}
}
}
}
if($Conta) // Imagens foram enviadas, ok!
{
echo '<br/>Foi(am) enviada(s) ' . $Conta . ' foto(s).';
} echo 'Você não enviou fotos!';
}
?>
é isso ai tá gravando na pasta e no bd, mas to limitado a 5 fotos com posso aumentar a quantidade de fotos a ser enviada de uma vez.
Muito obrigado pela ajuda.
>
não estás a inserir nada na base de dados
tens que fazer algo deste género
mysql_query("INSERT INTO tabela (campo, campo)
VALUES (variavel, variavel)");
tem que ser parecido com isto, falta encaixares o ciclo for
<?php
require '../conexao.php';
$Campo1 = $_POST['Campo1'];
$Imagem = $_FILES['Imagem'];
$trimimg= $_FILES["Imagem"]["name"];
function saveUploadedFileToCurrentPHPFolder (){
$origin=$_FILES["Imagem"]['tmp_name']; //patch absoluta do ficheiro na origem
$destination="../pasta/_Imagens/".$_FILES["Imagem"]["name"]; //path relativa do ficheiro, na directoria corrente deste php
move_uploaded_file($origin, $destination); //mover!
return $destination;
}//saveUploadedFileToCurrentPHPFolder
$whereIsTheSavedFile = saveUploadedFileToCurrentPHPFolder('Imagem'); //se nao se movesse o ficheiro antes do fim deste PHP, seria automatica/ apagado
mysql_select_db($database_conexao);
mysql_query("INSERT INTO tabela (Campo1, Imagem)
VALUES ('$Campo1', '$trimimg')");
print "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=pagina.php'>
<script type=\"text/javascript\">
alert(\"Imagem adicionada com sucesso!\");
</script>
";
?>eu faria
$limite = 10; //quantidade de fotos de limite
for($i = 0; $i < $limite; $i++)
{
ou então se o teu código ainda se mantiver, vais buscar a $Quantidade
Faça tipo assim:
$nome = "destino/". $_FILES['imagem']['name'];
mysql_query("INSERT INTO tabela (imagem) VALUES ('$nome')");
Isso deve funcionar, é so alterar algumas coisinhas.
Valeu cara muito obrigado mesmo, funcionou certinho
>
eu faria
$limite = 10; //quantidade de fotos de limite
for($i = 0; $i < $limite; $i++)
{
ou então se o teu código ainda se mantiver, vais buscar a $Quantidade
não estás a inserir nada na base de dados
tens que fazer algo deste género
tem que ser parecido com isto, falta encaixares o ciclo for
}//saveUploadedFileToCurrentPHPFolder$whereIsTheSavedFile = saveUploadedFileToCurrentPHPFolder('Imagem'); //se nao se movesse o ficheiro antes do fim deste PHP, seria automatica/ apagado