Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Estas en el tema de Cargar o enviar imagenes o adjuntos desde un form a la base de datos en el foro de Sistemas de gestión de contenidos en Foros del Web. Buenas, solo expongo un aporte pa quien le sirva... A veces queremos desde un administrador enviar url de imagenes a la base de datos y ...
  #1 (permalink)  
Antiguo 23/09/2009, 14:27
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Buenas, solo expongo un aporte pa quien le sirva...

A veces queremos desde un administrador enviar url de imagenes a la base de datos y guardar las mismas en el disco duro u ordenador.. Muchos emplean la función PHPMailer.. aca dejo otra alternativa muy entendible, o para emplearla tal cual.. espero sirva:

OBS, moderadores, si ya existe el topico, adjuntarlo o moverlo a donde corresponda.
  #2 (permalink)  
Antiguo 23/09/2009, 14:31
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Primero genero un archivo PHP con el nombre funciones.php

Pueden copiarlo tal cual, y modificarlo de ser necesario, espero esté ordenado:

Código PHP:
<?php
    
function SubirImagen($pFileControlName$pDirectorio$pDirectorioThumbs$pNombre="")
    {
        
//echo $_FILES[$pFileControlName]['type'];
        
if(is_uploaded_file($_FILES[$pFileControlName]['tmp_name']))
        {
               
//defino los tipos de archivo compatibles
            
$tipos = array("image/gif","image/jpg","image/jpeg","image/pjpeg","image/png","image/x-png");
            if(
in_array($_FILES[$pFileControlName]['type'],$tipos))
            {
                
$directorio $pDirectorio;
                
$directorio_thumbs $pDirectorioThumbs;
                
                
//datos del arhivo 
                
if($pNombre=="")
                {
                    
$archivo $_FILES[$pFileControlName]['name'];
                }else{
                    
$archivo $pNombre;
                    
                    switch(
$_FILES[$pFileControlName]['type'])
                    {
                        case 
"image/gif":
                            
$archivo .= ".gif";
                            break;
                            
                        case 
"image/jpg":
                        case 
"image/jpeg":
                        case 
"image/pjpeg":
                            
$archivo .= ".jpg"
                            break;
                            
                        case 
"image/png":
                        case 
"image/x-png"
                            
$archivo .= ".png";
                            break;
                    }    
                }
                
                
$tmp_name $_FILES[$pFileCtrlName]['tmp_name']; 
                
$tipo_archivo $_FILES[$pFileControlName]['type']; 
                
$tamano_archivo $_FILES[$pFileControlName]['size']; 
            
                
//compruebo si las características del archivo son las que deseo 
                
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg") || strpos($tipo_archivo"png")) && ($tamano_archivo 500000))) 
                { 
                    
$mensaje'<script language="javascript" type="text/javascript">alert("No se guardó la imagen por que excede los 500 kb o la extensión no esta permitida");</script>';
                    echo 
$mensaje;
                }
                else
                { 
                    if (
move_uploaded_file($_FILES[$pFileControlName]['tmp_name'], $pDirectorio.$archivo))
                    { 
                        return 
$archivo;
                    }
                } 
            }
        }
        return 
"";
    } 
    
    function 
AgregarPuntos($pNumero)
    {
        
$retorno ""
        
$miles intval(strlen($pNumero)/3);
        for(
$i=0;$i<$miles;$i++)
        {
            if(
$i>0)
            {
                
$retorno substr($pNumero,(strlen($pNumero)-3),3).".".$retorno;
            }else{
                
$retorno substr($pNumero,(strlen($pNumero)-3),3);
            }
            
$pNumero substr($pNumero,0,(strlen($pNumero)-3));
        }
        if(
$pNumero!="")
        {
            
$retorno $pNumero.".".$retorno;
        }
        return 
$retorno;
    }
    
    function 
AcortarTexto($pTexto$pLimite$pCaracter)
    {
        return 
substr($pTexto,0,strrpos(substr($pTexto,0,$pLimite),$pCaracter));
    }
?>
No se estresen, solo copienlo, ya esta preparado
  #3 (permalink)  
Antiguo 23/09/2009, 14:40
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Cargar o enviar imagenes o adjuntos desde un form a la base de datos

creo un archivo con el nombre de conection.php que actuará de conector con la base de datos, generalmente va guardado en la carpeta "inc", es decir, a priori tendremos en esa carpeta dos archivos, 1-las funciones.php, y 2-esta conection.php...

Código PHP:
<?php

$nombreDelHost 
"localhost";/*aca va el nombre del host, generalmente se queda asi*/
$nombreBaseDeDatos "aguila";// el nombre de la base de datos
$nombreUsuario "root";// el nombre de usuario de la base de datos
$password "";// la clave
$conector mysql_pconnect($nombreDelHost$nombreUsuario$password) or trigger_error(mysql_error(),E_USER_ERROR); 
?>

Última edición por loncho_rojas; 24/09/2009 a las 09:49
  #4 (permalink)  
Antiguo 23/09/2009, 15:33
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Creamos el archivo "insertar_noticias.php"

Código PHP:
<?php 

    
if(isset($_POST['txtTitulo']))     
    {
         
/*aca adjunto el archivo funciones
         en este caso lo guarde en la carpeta "inc"*/
         
require_once('../inc/funciones.php');
         include(
'../inc/conection.php');
         
//selecciono la base de datos
         
mysql_select_db($nombreBaseDeDatos$conector);

         
$Titulo=$_POST['txtTitulo'];
         
$Contenido=$_POST['txtContenido'];

         
//selecciono la tabla donde iran a parar los datos de los campos de texto
         
$sql "insert into novedades (Titulo, Contenido) values ('".$Titulo."','".$Contenido."')";
         
mysql_query($sql,$conector) or die(mysql_error($conector)); 
         
$nuevo_id mysql_insert_id($conector);
         
            
//en esta parte defino lo siguiente:
            //$archivo = SubirImagen... es el nombre de la funcion no modificar
            // "fileNovedad" .. es el nombre del campo del formulario el cual cargara el archivo
            // ""../imagenes/novedades/"... es la ubicacion de la carpeta de imagenes donde ira a parar el archivo
            // "../imagenes/novedades/thumbs/" ubicacion de la carpeta de thumbs, creenla si no tienen una
            // ("img".$nuevo_id) ...es para que guarde las imagenes con el numero de ID de la noticia o lo que sea
            // es decir, para que la guarde como img1.jpg, img2.jpg, y asi de acuerdo al ID
         
$archivo SubirImagen("fileNovedad""../imagenes/novedades/""../imagenes/novedades/thumbs/",("img".$nuevo_id)); 
         if(
$archivo!="")
         {
         
//selecciono la tabla donde iran a parar las imagenes
             
$sql "UPDATE novedades SET Imagen = '".$archivo."' WHERE IdNovedad = ".$nuevo_id;
             
mysql_query($sql,$conector) or die(mysql_error($conector)); 
         }
         
     }

    
?>
Código HTML:
<html>
<head>
<script>
//aca creo una funcion de javascript que me valide los campos
function validar_enviar()
	 {
	 	//validar el titulo
		if(document.form1.txtTitulo.value.length==0)
		{
			alert("Ingrese titulo de la noticia")
			document.form1.txtTitulo.focus()
			return false;
		}
		
		//validar el contenido
		if(document.form1.txtContenido.value.length==0)
		{
			alert("Ingrese contenido de la noticia")
			document.form1.txtContenido.focus()
			return false;
		}
														
		document.form1.submit();
	 }	
	 	 
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Insertar noticias y archivo con PHP, por Javier Rojas</title>
<style type="text/css">
<!--
body {
	margin-left: 100px;
	margin-right: 100px;
}
-->
</style>

</head> 

Última edición por loncho_rojas; 23/09/2009 a las 15:48 Razón: erré la escritura de una linea
  #5 (permalink)  
Antiguo 23/09/2009, 15:36
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Código HTML:
<body>
<div id="contenido">

<!--Crearmos el formulario... 
todos estos codigos son seguidos con los de arriba correspondientes al archivo
insertar_noticia.php-->

  <form id="form1" name="form1" method="post" action="" enctype="multipart/form-data" > <!--aqui le decimos al archivo que podra enviar archivos adjuntos-->
    <table width="450" border="0" align="center" class="grilla" cellpadding="2" cellspacing="0">
    <tr>
      <th colspan="2">
        Novedades
      </th>
    </tr>
    <tr>
      <td width="100">T&iacute;tulo:</td>
      <td width="355"><input name="txtTitulo" type="text" id="txtTitulo" value="" size="45" /></td>
    </tr>
    <tr>
      <td>Contenido:</td>
      <td><textarea name="txtContenido" id="txtContenido" cols="42" rows="5"></textarea></td>
    </tr>
    <tr>
      <td>Imagen:</td>
      <td><input name="fileNovedad" type="file" id="fileNovedad" size="45" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><div align="right">
          <input name="btnGuardar" type="button" class="boton" id="btnGuardar" onclick="validar_enviar();" value="Enviar"  />
<!--al enviar se activa la funcion javascript de la cabecera, y si no contiene nada, nos saldra un mensaje-->
      </div></td>
    </tr>
  </table>
  <div align="center"></div>
</form>
<div align="center"></div>
</div>
</body>
</html> 
  #6 (permalink)  
Antiguo 23/09/2009, 15:46
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Seria importante para terminar, crear nuestra base de datos.. lo haré sencillo:

Código:
#
# Estructura de tabla para la tabla `novedades`
#

CREATE TABLE `novedades` (
  `idNovedad` bigint(20) NOT NULL auto_increment,
  `Titulo` varchar(50) NOT NULL default '',
  `Contenido` text NOT NULL,
  `Imagen` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`idNovedad`)
) TYPE=MyISAM AUTO_INCREMENT=13 ;

#
# Volcar la base de datos para la tabla `novedades`
#
En lo que se refiere al funcionamiento, estoy seguro que lo hace optimo, tal vez si surgen errores, serán en las consultas de $sql hay que ver que coincidan exactamente los nombres de los campos creados con el "insert into"

Cuaquier cosa, espero puedan debatirla
Espero les sirva, si por algun motivo tiene errores, sepan disculpar.. agradezco a los amigos que me ayudaron.
  #7 (permalink)  
Antiguo 02/10/2009, 14:04
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Cargar o enviar imagenes o adjuntos desde un form a la base de datos

Muy bien........... esta excelente este aporte..........

gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 17:14.