Ir para conteúdo

POWERED BY:

Arquivado

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

Hamilcar

script para upload com insert no banco de dados

Recommended Posts

Olá,

 

Primeiramente, parabéns ao hcar pelo código. Funciona muito bem.

 

Entretanto estou tentando fazer umas modificações para que seja possível usar um formulário em Flash, como tem neste tutorial.

 

Tanto este código, como o código do tutorial funcionam, mas separadamente. O que eu queria agora era usar o formulário do flash com este código PHP, que tem muito mais funções.

 

Como o PHP do tutorial, que funciona perfeitamente, tem apenas isto:

<?php$dir = "./imagens/";$file = $_FILES["Filedata"];echo move_uploaded_file($file["tmp_name"], $dir . "/" . $file["name"]);?>
Eu pensei que bastava fazer uma pequena mudança no arquivo uploadImage.php.

Tirando isso:

$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
Mudando para:

 

$arquivo = isset($_FILES["Filedata"]) ? $_FILES["Filedata"] : FALSE;
Mas não deu. Simplesmente não faz nada, apesar do SWF dizer que o arquivo foi enviado.

 

O autor deste código ou outra pessoa sabe dizer o que é preciso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Muito bom msm o script, tudo funcionando direitinho.

Agora, como eu faço para excluir uma imagem no banco de dados?

Quen puder me ajudar, agradeço desde já.

Vlw.

 

Olá galera, vou postar un scripts que criei baseado em algun scripts postados inclusive aqui no site, estes scripts fazem o upload de imagem, redimencionando as mesmas e gravando informações no banco de dados, o usuário pode escolher entre mandar as informações com uma imagem relacionada a estas informações, ou pode simplismente não enviar nenhuma imagem tendo como padrão uma outra imagem pré-definida, ou pode simplesmente listar as imagens que estão no servidor escolhendo o nome de uma dessas imagens já salvas no servidor.

 

functionsUpload.php

<?php
	function verifica_image($img)
	{
		// Verifica se o mime-type do arquivo é de imagem
		if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $img["type"]))
		{
			return (TRUE);
		}
		return (FALSE);
	}// fim verifica_image
	
	function verifica_extensao_image($img)
	{
		// Pega extensão do arquivo
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $img["name"], $ext);
		return ($ext[1]);
	}//fim verifica_extensao_imag
	
	function verifica_dimensao_image($img, $max_x, $max_y)
	{
		$dimensaoImage = getimagesize($img["tmp_name"]);
		$dimensao = '';
		// Verifica largura
		if($dimensaoImage[0] > $dimensaoImage[1])
		{
			if($dimensaoImage[0] > $max_x)
			{
				$dimensao = 'largura';
			}
		}
		else
		{
			if($dimensaoImage[0] < $dimensaoImage[1])
			{
				if($dimensaoImage[1] > $max_x)
				{
					$dimensao = 'altura';
				}
			}
			else
			{
				if($dimensaoImage[0] == $dimensaoImage[1])
				{
					if($dimensaoImage[0] > $max_x)
					{
						$dimensao = 'largura';
					}
				}
			}
		}
		return ($dimensao);		
	}//fim verifica_dimensao_image
	
	function reduz_imagem($img, $max_x, $max_y, $nome_foto) 
	{
		//pega o tamanho da imagem ($original_x, $original_y)
		list($width, $height) = getimagesize($img);
		$original_x = $width;
		$original_y = $height;
		// se a largura for maior que altura
		if($original_x > $original_y) {
   			$porcentagem = (100 * $max_x) / $original_x;	  
		} 
		else {
   			$porcentagem = (100 * $max_y) / $original_y;
		}
		$tamanho_x = $original_x * ($porcentagem / 100);
		$tamanho_y = $original_y * ($porcentagem / 100);
		$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
		$image   = imagecreatefromjpeg($img);
		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
		return imagejpeg($image_p, $nome_foto, 100);
	}//fim reduz_imagem
?>

 

uploadImage.php

<?
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
$max_image_x = 128;
$max_image_y = 80;
$diretorio = 'imagens/';  //diretório onde esão as imagens
if($arquivo)
{
	$tamanho = getimagesize($arquivo["tmp_name"]);
	ini_set ("max_execution_time", 3600); // uma hora
	require_once "functionsUpload.php";
	$err = FALSE;
	if(is_uploaded_file($arquivo['tmp_name']))
	{
		if(verifica_image($arquivo))
		{
			$tamanho = getimagesize($arquivo["tmp_name"]);
			$dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y);
			if($dimensiona != '')
			{
				if($dimensiona == 'altura')
				{
						$auxImage = $max_image_x;
						$max_image_x = $max_image_y;
						$max_image_y = $auxImage;
				}
			}
			else
			{
				$max_image_x = $tamanho[0];
				$max_image_y = $tamanho[1];
			}
			
			$nome_foto  = ('imagem_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto
			$endFoto = $diretorio . $nome_foto;
			if(reduz_imagem($arquivo['tmp_name'], $max_image_x, $max_image_y, $endFoto))
			{
				$err = TRUE;
			}  
		}
	}
}
?>

 

listaFotos.php

<table border="1" align="center"> 
<?php
require_once "functionsUpload.php";
$dir = 'imagens'; //diretório onde estão as imagens
$handle=opendir($dir);
$i=0;
$j = 0;
while ($file = readdir($handle)) {
if (eregi("jpg$",$file) || eregi("gif$",$file) || eregi("png$",$file)){
if($i == 0 || $j == 5)
{
	$j = 0;
	echo('<tr>');
}
?>
<td align="center" valign="top">
<img src=<?php echo($dir . '/' . $file) ?> width=128 height=96>
<br><font size=2><b><?php echo($file) ?></b>
</td>
<?php
if($j == 4)
{
	echo('</tr>');	
}
$j=$j+1;
$i=$i+1;
};
};
closedir($handle);
?> 

</table>

 

 

index.php

<?php
$hostname = "localhost";
$database = "testeupload";
$username = "root";
$password = "";
$con = @mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); 

header("Content-type: text/html; charset=iso-8859-1"); // corrigir acentuação

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
	case "text":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;	
	case "long":
	case "int":
	  $theValue = ($theValue != "") ? intval($theValue) : "NULL";
	  break;
	case "double":
	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
	  break;
	case "date":
	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
	  break;
	case "defined":
	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
	  break;
  }
  return $theValue;
}

if(isset($_POST["insert"]) && ($_POST["insert"] == "form1")) {
if($_FILES['foto'] == '')
{
	if(isset($_POST['foto']) && $_POST['foto'] != '')
	{
		$nome_foto = $_POST['foto'];
	}
	else
	{
		$nome_foto = 'fotoDefault.jpg';
	}
	$err = TRUE;
}
else
{
	require_once "uploadImage.php";
}
if($err)
{

$insertSQL = sprintf("INSERT INTO usuario (nome, email, foto) VALUES (%s, %s, '$nome_foto')",
					   GetSQLValueString($_POST['nome'], "text"),
					   GetSQLValueString($_POST['email'], "text"));

  mysql_select_db($database, $con);
  $Result1 = mysql_query($insertSQL, $con) or die(mysql_error());
  if($Result1 > 0)
  {
 	 echo('<script> alert("Cadastro efetuado com sucesso!");  </script>');
  }
}
  $insertGoTo = "index.php";
  if (isset($_SERVER['QUERY_STRING'])) {
	$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
	$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
	  
  echo('<meta http-equiv="refresh" content="0;URL=' . $insertGoTo  . '">');
}
?>
<html>
<head>
<title>Upload</title>

<script>
<!--
function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
	if (val) { nm=val.name; if ((val=val.value)!="") {
	  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
		if (p<1 || p==(val.length-1)) errors+='- '+nm+' e-mail não é válido.\n';
	  } else if (test!='R') { num = parseFloat(val);
		if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
		if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
		  min=test.substring(8,p); max=test.substring(p+1);
		  if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
	} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' Campo obrigatório.\n'; }
  } if (errors) alert('OCORRÊNCIAS DE ERROS:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//-->
</script>

</head>
<body>

<?php
if((!isset($_GET['formulario'])) && (!isset($_GET['foto'])))
{
?>
<table width="450" border="0" align="center">
  <tr>
	<td align="center"><a href="index.php?formulario=1&img=1" title="Sem foto específica" target="_self">Inserir dados sem foto</a></td>
	<td align="center"><a href="index.php?formulario=1&img=2" title="Com foto específica" target="_self">Inserir dados com foto</a></td>
	<td align="center"><a href="listaFotos.php" title="Visualizar fotos do servidor" target="_blank">Ver fotos do servidor</a></td>
  </tr>
  <tr>
	<td colspan="3" align="justify"><br><br>

	<font face="Verdana, Arial, Helvetica, sans-serif" color="#996600">Nos links acima escolha inserir dados sem foto se queira inserir uma informação que não tenha foto específica, podendo para isto colocar uma foto que já esteja no servidor.<br><br>

	Para escolher uma foto que já esteja no servidor clique em ver fotos do servidor, copie o nome da foto escolhida, depois clique em inserir dados sem foto, então preencha os campos do formulário, colocando o nome da foto escolhida no campo foto.<br><br>

	Para inserir dados com uma foto específica, escolha inserir dados com foto, depois preencha o formulário completamente escolhendo no campo foto, qual foto queira e que está em seu disco.<br>

	Qualquer problema ou sugestão comunique-nos (Email).</font><br>
	
	</td>
  </tr>
</table>

<?php
}
else
{
if(isset($_GET['formulario']) && isset($_GET['img']))
{
if($_GET['img'] == 1)
{
?>
<form action="index.php" method="post" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue">
<? 
}
else
{
if($_GET['img'] == 2)
{
?>
<form action="index.php" method="post" enctype="multipart/form-data" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue">
<?
}
}
?>
  Nome: <input name="nome" type="text" maxlength="30"><br>
  Email: <input name="email" type="text" maxlength="30"><br>
<?php
if($_GET['img'] == 1)
{
?>
  Foto: <input name="foto" type="text" maxlength="30"><br>
<?php 
}
else
{
if($_GET['img'] == 2)
{
?>
 Foto: <input type="file" name="foto" maxlength="15"><br>
<?php
}
}
?>
  <input type="submit" name="Submit" value="Enviar">
  <input type="hidden" name="insert" value="form1">
</form>
<?php
}
}
?>
</body>
</html>

 

 

Os scripts 'functionsphp' e 'uploadImage.php' saõ responsáveis pelos testes relativos a imagem fazendo upload e redimencionado as mesmas.

O script 'listaFotos.php' mostra as fotos de um diretório no servidor.

O script 'index.php' monta o formulário de acordo com a escolha do usuário, se ele vai enviar uma imagem ou não.

Para testar o script crie um banco de dado mysql com nome 'testeupload':

 

CREATE DATABASE `testeupload`;

Insira uma tabela com nome usuario :

 

CREATE TABLE `usuario` (
  `id` tinyint(8) NOT NULL auto_increment,
  `nome` varchar(30) NOT NULL default '',
  `email` varchar(30) NOT NULL default '',
  `foto` varchar(15) default NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

 

Configure a conexão do banco de dados no arquivo index.php:

 

$hostname = "localhost";
$database = "testeupload";
$username = "root";
$password = "";

Configure o diretório das imagens no uploadImage.php:

 

$diretorio = 'imagens/';

Configure o diretório das imagens no listaFotos.php:

 

$dir = 'imagens';

Não esqueça de dar permissão de escrita no diretório das imagens.

 

Bom acredito que vão conseguir usar, caso queiram melhorar os scripts fiquem a vontade, modifiquem e usem a vontade, críticas e sugestões são muito bem vindas.O script index.'php' faz a montagem do formulário e inclusão das informações no bd, o formulário é bem básico, pois foi criado só para demonstração.

Por favor,

como eu faço para excluir uma imagem no banco de dados?

e como podeira fazer para ampliar a imagem no ListaFotos.php?

O resto ta funcionaod direitinho.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem pessoal , sobrou um pouco de tempo por aqui e então voltei aqui para completar o script e colocar a função de envio para multiplas imagens, bom , não vou colocar os arquivos aqui para copiarem, mas farei melhor, colocarei no ar para que vejam o script funcionando, e colocarei também um link para baixarem os arquivos, as explicações estarão nos próprio scripts, adaptem para uso como quiserem, os arquivos não foram testados suficiententemente, portanto testar seria bom para que não tenham surpresas, erros, bugs, avisem aqui no fórum para que seja corrigido, ou então postem a correção, abraços a todos:

 

aqui o script em funcionamento

 

Aqui os arquivos para baixarem

 

 

olá tira lá aquele banner não faz sentido estar lá não consegui testar nada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal !

 

Bom o Script. Gostaria de saber como faço as modificações para que as imagens sejam inclusas no banco de dados e não em um diretório. Estou ciente que inserindo imagens no BD torna-se o BD um pouco mais lento, mas é isto que preciso. Se alguém puder me ajudar, ficarei muito grato !

 

Seria um BD onde eu vou inderir 5 fotos e comentário para cada foto, como fazer o upload e o download das imagens ? Se puderem me mostrar um script...

 

Agradecido desde já pela atenção;

 

Zangoliers

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal deixe eu perguntar uma coisa: esse script faz a criação de thumb né?

Mas esse thumb é criado proporcional? ou é criado já com tamanhos fixos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce nem olhou o codigo?

 

Proporcional

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana o código...

Precisava que ao invés de listar todas as imgs da pasta, fosse exibida uma determinada img. Como especificar? Atraves do path que esta no salvo no banco, alguem pode me ajudar?

Grato.

 

...

//PASTA DAS IMAGENS

$sel=mysql_query(SELECT arquivo FROM usuario WHERE arquivo = '$arquivo');

$dir = $sel;

$abrir = opendir($dir);

$img = $abrir;

//$arquivos = array();

//LOCALIZA APENAS AS IMAGENS QUE INICIAM COM p

foreach (glob($dir."$img*") as $file) {

if (($file != '.') && ($file != '..')) {

//FORMATO DAS IMAGENS

if ((!is_dir($file)) && (eregi('(jpeg|jpg|bmp)$', $file))) {

$arquivos[] = $file;

...

 

Assim nao deu certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bza amigo...no meu deram essas msgs aqui:

 

Warning: opendir(imagens) [function.opendir]: failed to open dir: No such file or directory in /home/gvtemco/public_html/listaFotos.php on line 5

 

Warning: readdir(): supplied argument is not a valid Directory resource in /home/gvtemco/public_html/listaFotos.php on line 8

 

Warning: closedir(): supplied argument is not a valid Directory resource in /home/gvtemco/public_html/listaFotos.php on line 29

 

Como resolvo? obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bza amigo...no meu deram essas msgs aqui:

 

Warning: opendir(imagens) [function.opendir]: failed to open dir: No such file or directory in /home/gvtemco/public_html/listaFotos.php on line 5

 

Warning: readdir(): supplied argument is not a valid Directory resource in /home/gvtemco/public_html/listaFotos.php on line 8

 

Warning: closedir(): supplied argument is not a valid Directory resource in /home/gvtemco/public_html/listaFotos.php on line 29

 

Como resolvo? obrigado

Parece que você não configurou o listaFotos.php ou não criou o diretório imagens.

 

Configure o diretório das imagens no listaFotos.php:

$dir = 'imagens';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como fazer uma paginação na pagina que lista as fotos, tipo vamo supor que na pasta tenha mais de 50 fotos, e eu precisasse separar de tipo, 20 por pagina? como fazer uma paginação, visto que o PHP varre a pasta toda.. muito bom mesmo este script, eu adicionei no meu teste um link para imagem grande com lightbox jquery, ficou da hora, mais preciso de paginaçã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.