Foros del Web » Programando para Internet » PHP »

Insertar imagen en una base de datos

Estas en el tema de Insertar imagen en una base de datos en el foro de PHP en Foros del Web. Hola a todos. Saludos. Miren el siguiente código: Código PHP: <?php //Convierte fecha de mysql a normal function  cambiaf_a_normal  ( $fecha ){      ereg (  "([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})" ,  $fecha ,  $mifecha ...
  #1 (permalink)  
Antiguo 15/09/2008, 08:22
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Insertar imagen en una base de datos

Hola a todos.
Saludos.
Miren el siguiente código:
Código PHP:
<?php
//Convierte fecha de mysql a normal
function cambiaf_a_normal ($fecha){
    
ereg"([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."/".$mifecha[2]."/".$mifecha[1]; 
    return 
$lafecha
}
//Convierte la fecha de normal a mysql
function cambiaf_a_mysql ($fecha){
    
ereg"([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})"$fecha$mifecha); 
    
$lafecha=$mifecha[3]."-".$mifecha[2]."-".$mifecha[1]; 
    return 
$lafecha
}
?>
<?php
// incluimos el archivo de conexion
$db_link mysql_connect('xxx''xxx''xxx');
if(!
$db_link){
    die(
'No se pudo conectar: ' mysql_error());
}
$db_selected mysql_select_db('sistemanoticias'$db_link);
if(!
$db_selected){
    die(
'No se selecciono la BD: ' mysql_error());
}
//definición de variables
$enviar $HTTP_POST_VARS['enviar'];
$notTitulo $HTTP_POST_VARS['notTitulo'];
$notTexto $HTTP_POST_VARS['notTexto'];
$notCategoriaID $HTTP_POST_VARS['notCategoriaID'];
$fechanot $HTTP_POST_VARS['fechanot'];
$imagen $HTTP_POST_VARS['imagen'];
$nombreimagen $HTTP_POST_VARS['nombreimagen'];
// recibimos el formulario
if(isset($HTTP_POST_VARS['enviar']) && $HTTP_POST_VARS['enviar'] == 'Enviar'){
    
// comprobamos que el formulario no envie campos vacios
    
if(!empty($HTTP_POST_VARS['notTitulo']) && $HTTP_POST_VARS['notTexto'] &&
    
$HTTP_POST_VARS['notCategoriaID'] && $HTTP_POST_VARS['fechanot'] && $HTTP_POST_VARS['imagen']
    && 
$HTTP_POST_VARS['nombreimagen']){
        
// creamos las variables y les asignamos los valores a insertar
        
$notTitulo $HTTP_POST_VARS['notTitulo'];
        
$notTexto $HTTP_POST_VARS['notTexto'];
        
$notCategoriaID $HTTP_POST_VARS['notCategoriaID'];
        
$fechanot $HTTP_POST_VARS['fechanot'];
        
$imagen $HTTP_POST_VARS['imagen'];
        
$nombreimagen $HTTP_POST_VARS['nombreimagen'];
        
$imagen addslashes(fread(fopen($imagen"r"), filesize($imagen)));
        
// hacemos el INSERT en la BD*/
        
$sqlInsertNot mysql_query("INSERT INTO sn_noticias
                                     (notTitulo, notTexto, notCategoriaID, fechanot, imagen, nombreimagen)
                                     VALUES ('$notTitulo', '$notTexto', '$notCategoriaID', '$imagen', '$nombreimagen', '"
.cambiaf_a_mysql($fechanot)."')",
                                     
$db_link) or die(mysql_error());
        
// enviamos un mensaje de exito
        
echo "Los datos fueron gurdados correctamente";        
    }else{
        
// si el formulario envia algun campo vacio
        // enviamos un mensaje de error
        
echo "Debe llenar todos los campos del formulario";        
    }
}
?>
<!-- el formulario -->
<form name="noticia" enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
    <p>
    Título de la Noticia<br />
    <input type="text" name="notTitulo" size="50" />
    </p>
    <p>
    Texto de la Noticia<br />
    <textarea name="notTexto" rows="10" cols="50"></textarea>
    </p>
    <p>
    Fecha de la Noticia<br/>
   <input type="text" name="fechanot" value="<?php echo cambiaf_a_normal($fechanot);?>" />
    </p>
    <p>
    Nombre de la Imagen<br/>
   <input type="text" name="nombreimagen" maxlength="100" />
    </p>
    <p>
    Imagen<br/>
   <input type="file" name="imagen" size="40"/>
    </p>
    <p>
    Categoría<br />
    <select name="notCategoriaID">
        <option value="">Escoger de la Lista</option>
    <?php
    
// asignamos una categoria a la noticia
    // mediante un select
    
$sqlQueryCat mysql_query("SELECT * FROM sn_categorias"$db_link)
                                or die(
mysql_error);
    
// creamos un bucle while
    // que nos muestre todas las categorias
    // que tenemos guardadas en la BD
    
while($rowCat mysql_fetch_array($sqlQueryCat)){
        echo 
"<option value='$rowCat[cat_ID]'>$rowCat[catCategoria] - $rowCat[cat_ID]</option>";
    }
    
?>
    </select>
    </p>
    <p>
    <input type="submit" name="enviar" value="Enviar" />
    </p>
</form>
Estoy tratando de insertar una imagen en la base de datos -antes de agregar las líneas de código para insertar la imagen es que ha dejado de funcionar- y me devuelve el siguiente mensaje:
Debe llenar todos los campos del formulario.
No se a que se debe esto pues lleno todos los campos del formulario y nada, reitero esto antes funcionaba, no se que pasará aquí. Es la primera vez que intento insertar una imegen una base de datos. El campo para la imagen lo he definido de tipo longblob.
Muchas Gracias.
  #2 (permalink)  
Antiguo 15/09/2008, 10:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Insertar imagen en una base de datos

Las variables que provienen de un campo tipo "file" se almacenan en: $_FILES['nombrecampo'] y no en $_POST.

Busca en el manual de PHP como subir datos al servidor.

Otra cosa, no uses $HTTP_POST_VARS. Los servidores mas recientes no la soportan, usa $_POST, $_GET, etc en su lugar.
  #3 (permalink)  
Antiguo 15/09/2008, 10:15
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Insertar imagen en una base de datos

Claro, no es mi mismo, además debes agregarle algo más a la etiqueta form, algo como encytype, busca en internet: "Uploading PHP" vas a encontrar bastante informaición al respecto.
  #4 (permalink)  
Antiguo 15/09/2008, 10:16
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Insertar imagen en una base de datos

Las variables que provienen de un campo tipo "file" se almacenan en: $_FILES['nombrecampo'] y no en $_POST.

Busca en el manual de PHP como subir datos al servidor.

Otra cosa, no uses $HTTP_POST_VARS. Los servidores mas recientes no la soportan, usa $_POST, $_GET, etc en su lugar.

EDIT: :S El foro esta lento. Y postee esto 2 veces sin querer. Borren este mensaje.
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




La zona horaria es GMT -6. Ahora son las 22:39.