Ir para conteúdo

POWERED BY:

Arquivado

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

ALINERAPOSO

Upload de imagem na pasta e no BD

Recommended Posts

Boa noite, pessoal!

Alguém poderia me ajudar? Preciso muuuuuuito de uma luz!!!

 

Estou usando um código de UPLOAD DE IMAGEM, cuja a fonte é "http://www.revistaphp.com.br/artigo.php?id=70".

Esse código permite fazer vários uploads de imagens, salvando-as numa mesma tabela do banco de dados e inclusive, numa pasta.

 

PROBLEMA:

Até a 6a imagem, salva tudo perfeitamente, após ela, que seria a 7a em diante, nada mais é salvo.

 

Segue abaixo,

código atual (modificado para salvar mais imagens), para possível verificação.

 

Agradeço desde já, pela ajuda, e aguardo retorno.

Aline R. (aline_r_p@hotmail.com)

 

 

index.php

<HTML>
<HEAD>
<TITLE>Novo Documento</TITLE>
</HEAD>
<style type="text/css">
*{ float:left;/* todos para esquerda e quem chegar ganhar um <br> */
clear:both;/*aqui o br qu e prometir*/
margin:1px;/*uma margin manera*/
}
</style>

<BODY>
<form method="POST" enctype="multipart/form-data" action="manda.php">

vamos ver agora :

<input type="file" name="ball" >
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">

<input type="submit" name="submit" value="upload">
</form>
</BODY>
</HTML>

 

 

manda.php

 

<?php
/***********************************
http://www.jellyandcustard.com/2006/04/05/file-uploads/
inspirado nesse site para esse script
************************************/
function conecta_php() {
$host="host";
$user="user";
$senha= "senha";
$banco="banco";
$conect = mysql_connect($host,$user,$senha)or die("deu erro e mole");
mysql_select_db($banco)or die ("o banco sumiu");

}

$dir="uploads/galerias/";//caminho no caso de um window
// para onde vai as imagem */

/* $caminho_mysql="localhost/upload/imagem/";
caminho para o mysql achar quando vc for chama
comentei $caminho-mysql e no sei o seu caminho ai */

$ball=$_FILES['ball']['name'];
//recebendo a imagem

$caminho1=$dir.$ball;
//caminho com nome da imagem e local para guardar

if(move_uploaded_file($_FILES['ball']['tmp_name'],$caminho1))
//aqui nada especial so movo a tmp_name dando caminho

{
list($largura,$altura,$tipo)=getimagesize($caminho1);
/* baseado no caminho do move_upload($caminho1)
tu sabe que list faz ???/
essa função getimagesize ele tem uma array com as informações de
imagem
ela retorna quatros elementos de uma imagem
0-largura
1-altura
2-tipo ser e uma jpg ou png gif
dentro de tipo o gif e 1,jpg 2 e 3 png
$atributos tem a largura e altura da imagem
entendeu
seu quiser sabe se a imagem e um jpg
e so fazer
*if($tipo=2) {
echo $imagem1 ."is jpg";
exit ();

} */

$imagem = imagecreatefromjpeg($caminho1);

// aqui eu pego a imagem no caminho e jogo na memoria
$Thumbnail = imagecreatetruecolor(75, 75);

// diminuir a imagem preservado as cores e diminiudo a imagem
imagecopyresampled($Thumbnail, $imagem, 0, 0, 0, 0, 75, 75, $largura,$altura);
//sample da imagem com os tamanho 75 x75

imagejpeg($Thumbnail,$dir.'/pequena_'.$ball);
//$dir esta la em cima esqueceu aqui a imagem vai pequena
// criando a imagem
$mini_foto1=$caminho_mysql.'pequena_'.$ball;
/*aqui eu criei uma variavel para o mysql ja que o caminho final e la
gere a imagem e coloco no Diretorio de imagem
e ganhar uma nova imagem algo tipo pequena_image que veio para mim.jpg
*/

}

$image=$_FILES['arquivo'];

//aqui eu recebo a imagem olha o formulario la arquivo []

for($i=0; $i < sizeof($image);$i++)

/*aqui e um for para organizar o bando*/
{

/* o bando vai ser organizado aqui
virando um array manero e claro depois que eu
coloque a minha matriz[] */
$nome=$_FILES ['arquivo']['name'][$i];
$tamanho=$_FILES ['arquivo']['size'][$i];
$tipo=$_FILES ['arquivo']['type'][$i];
$tmpname=$_FILES ['arquivo']['tmp_name'][$i];
$matriz[]=$nome;
/* pq eu precisava desse campo com o array livre
para os campo do mysql*/
$caminho=$dir.$nome;

if($tamanho > 0 && strlen($nome) > 1)

//aqui e natural no e ???
//ver se tem algo pra eu movei baseado no campo
//de repente o cara coloco um imagem no ultimo campo
//eu to ferrado para jogar
{

// endereço completo e o caminho para onde vai as imagem

if(move_uploaded_file($tmpname,$caminho)){

echo 'imagem' . ($i+1) . ' enviada.<br/>';
/* Faz contagem baseada no campo
pq $i+1 pq veja a minha matriz como esta organizada
use o var_dump para melhor referencia */

}
//primeiro if fechado

//segundo if fechado
}

//fecho for
}

conecta_php();
// aqui e funcao conexao do banco

$vamos="Insert into teste (id,foto1,foto2,foto3,foto4,foto5,foto6,foto7,mini_foto1)VALUES
('','$ball','$matriz[0]','$matriz[1]','$matriz[2]','$matriz[3]','$matriz[4]','$matriz[5]','$mini_foto1')";
// como geral gosta de separa
$vai=mysql_query($vamos)or die("deu erro aqui");
/*e la as fotos vão p/ mysql
 como estamos trabalhando ???
eu separei para geral pode ideia pra conseguir altera
qualquer duvida e so dizer eu podia te feito tudo no for

*/
?>

 

BANCO DE DADOS

 

 

CREATE TABLE `teste` (
`id` int(11) NOT NULL auto_increment,
`foto1` varchar(255) NOT NULL,
`foto2` varchar(255) NOT NULL,
`foto3` varchar(255) NOT NULL,
`foto4` varchar(255) NOT NULL,
`foto5` varchar(255) NOT NULL,
`foto6` varchar(255) NOT NULL,
`foto7` varchar(255) NOT NULL,
`mini_foto1` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Aline,

Neste seu script... ele funciona com menos imagens é isso?

E quando vc preenche todas as imagens ele para de salvar é isso mesmo?

 

Se quiser me adiciona no skype que lhe ajudo... pq daki a pouco to de saida.

 

uerlen.santos

Compartilhar este post


Link para o post
Compartilhar em outros sites


Se você quer Upload multiplos, faz assim:



<form method="POST" enctype="multipart/form-data" action="manda.php">

vamos ver agora :

<input type="file" name="ball" >
<input type="file" name="arquivo[]" multiple>
<input type="submit" name="submit" value="upload">


e no php:

$images  = $_FILES['arquivo']; // pega imformações de todas imagens
$nomes  = $images['name']; //pega nome das images
$tmps     = $images['tmp_name']; //pega endereços
$types    = $images['type']; //pega os tipos de arquivos (image/png, image/jpg. etc)
$qtd = count($nomes); //Conta o numero de imagens
$dir  = 'uploads/'; //endereço onde vai salvar os arquivos


for($i = 0; $i < $qtd; $i++){
    move_uploaded_file($tmps[$i], $dir.$nomes[$i]);
}

esse é um simples e bom exemplo de upload multiplo.
você pode melhora-lo, e fazer verificações e tal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Aline,

Neste seu script... ele funciona com menos imagens é isso?

E quando vc preenche todas as imagens ele para de salvar é isso mesmo?

 

Se quiser me adiciona no skype que lhe ajudo... pq daki a pouco to de saida.

 

uerlen.santos

 

 

Boa noite, Uerlen.

* Então, o sistema funciona até com a inserção de 6 imagens. Quando eu vou adicionar a 7a, essa não é salva nem na pasta e nem no banco (as demais são salvas, normalmente).

* Não uso Skype, mas se puder, entre em contato pelo meu e-mail. (aline_r_p@hotmail.com)

 

Grata.

Aline

 

 

Se você quer Upload multiplos, faz assim:

 



<form method="POST" enctype="multipart/form-data" action="manda.php">

vamos ver agora :

<input type="file" name="ball" >
<input type="file" name="arquivo[]" multiple>
<input type="submit" name="submit" value="upload">

 

e no php:

 

$images  = $_FILES['arquivo']; // pega imformações de todas imagens
$nomes  = $images['name']; //pega nome das images
$tmps     = $images['tmp_name']; //pega endereços
$types    = $images['type']; //pega os tipos de arquivos (image/png, image/jpg. etc)
$qtd = count($nomes); //Conta o numero de imagens
$dir  = 'uploads/'; //endereço onde vai salvar os arquivos


for($i = 0; $i < $qtd; $i++){
    move_uploaded_file($tmps[$i], $dir.$nomes[$i]);
}

esse é um simples e bom exemplo de upload multiplo.

você pode melhora-lo, e fazer verificações e tal

 

 

Boa noite, Willian.

 

Agradeço a atenção, mas preciso de uma solução rápida, já que tenho urgência. Ou seja, acertar essa descrita acima... já que na realidade, tenho outros campos para preenchimento nessa tabela.

 

Qualquer coisa ,entrarei em contato contigo.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 





$vamos="Insert into teste (id,foto1,foto2,foto3,foto4,foto5,foto6,foto7,mini_foto1)VALUES
('','$ball','$matriz[0]','$matriz[1]','$matriz[2]','$matriz[3]','$matriz[4]','$matriz[5]','$mini_foto1')";

tabela: ID, FOTO1,FOTO2,FOTO3,FOTO4,FOTO5,FOTO6,FOTO7, MINI_FOTO1

você está salvando

ID (??), $BALL(??), $FOTO1, $FOTO2, $FOTO3, $FOTO4, $FOTO5, $FOTO6, $MINI_FOTO,

 

Que tal mudar para:



INSERT INTO teste (foto1, foto2, foto3, foto4, foto5, foto6, foto7, mini_foto) VALUES($matriz[0], $matriz[1], ,$matriz[2],$matriz[3],$matriz[4],$matriz[5],$matriz[6], $mini_foto1)

o id por ser auto_increment não precisa ser setado.

mas se você soubesse php, você poderia alterar meu script acima para o seu uso.

sem falar que essa tabela está modelada, de forma inapropriada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que o problema seja apenas o

 

vamos ver agora :

<input type="file" name="ball" >
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">
<input type="file" name="arquivo[]">

<input type="submit" name="submit" value="upload">

 

Você só tem 6 espaços no form de envio, logo creio que o script de envio esteja configurado para processar apenas estes 6 arquivos, nada mais. Qualquer coisa além disso será ignorada. Tente utilizar o método MULTIPLE que o William Phantom disse. Coloque apenas um campo assim:

 

<input type="file" name="arquivo[]" multiple>

 

E no script faça como ele mesmo disse:

$images  = $_FILES['arquivo']; // pega imformações de todas imagens
$nomes  = $images['name']; //pega nome das images
$tmps     = $images['tmp_name']; //pega endereços
$types    = $images['type']; //pega os tipos de arquivos (image/png, image/jpg. etc)
$qtd = count($nomes); //Conta o numero de imagens
$dir  = 'uploads/'; //endereço onde vai salvar os arquivos


for($i = 0; $i < $qtd; $i++){
    move_uploaded_file($tmps[$i], $dir.$nomes[$i]);
}

 

Estude mais o envio de arquivos no PHP, senão vai ficar mais difícil pra corrigir. Mesmo tendo pouco tempo, em 1 hora você já consegue dominar bem essa parte de envio de arquivos. Veja aqui no Manual do PHP e também tem este excelente tutorial de upload de arquivos múltiplos e únicos aqui mesmo no iMasters. Clique aqui para ver o tutorial super completo e explicado.

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.