Foros del Web » Programando para Internet » PHP »

la imagen no llega a mi base de datos

Estas en el tema de la imagen no llega a mi base de datos en el foro de PHP en Foros del Web. Hola: Tengo un problema, creo que con el php. Quiero que el usuario pueda subir una imagen al servidor y que la ruta se almacena ...
  #1 (permalink)  
Antiguo 04/01/2012, 14:27
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
la imagen no llega a mi base de datos

Hola:

Tengo un problema, creo que con el php. Quiero que el usuario pueda subir una imagen al servidor y que la ruta se almacena en una base de datos. No hay problema con subir la imagen, pero después no llega la ruta a la bd. La tabla de la base se llama "fotos", y los campos "id" y "nombre_nuevo_con_carpeta". ¿Podéis ayudarme?.
Código PHP:
Código PHP:
<?php
include("conexion.php");
function 
formRegistro(){
?>

 <?php
 
}
// verificamos si se han enviado ya las variables necesarias.
{
   
$usuario $_POST['usuario'];
   
$contrasenna $_POST['contrasenna'];
   
$repcontrasenna $_POST['repcontrasenna'];
   
$email $_POST['email'];
   
$nombreamo $_POST['nombreamo'];
   
$raza $_POST['raza'];
   
$telefono $_POST['telefono'];
   
$edad $_POST['edad'];
   
$sexo $_POST['sexo'];
   
$provincia $_POST['provincia'];
   
$capa $_POST['capa'];
   
$pais $_POST['pais'];
   
$pedigri $_POST['pedigri'];
   
$ciudad $_POST['ciudad'];
   
$zona $_POST['zona'];
   
$especie $_POST['especie'];
   
$imagen $_POST['imagen'];

  
   

   
   
// Hay campos en blanco
  
   
if($usuario=="" || $contrasenna=="" || $repcontrasenna=="" || $email=="" || $nombreamo=="" || $raza=="" || $telefono=="" || $edad=="" || $sexo=="" || $provincia=="") {
      echo 
"un campo está vacio.";
      
formRegistro();
   }else{
      
// ¿Coinciden las contraseñas?
      
if($contrasenna!=$repcontrasenna) {
         echo 
"Las contraseñas no coinciden";
         
formRegistro();
      }else{
        


$usuario trim($_POST['usuario']);
$contrasenna $_POST['contrasenna']; 
$email $_POST['email']; 
 
$sql_chk mysql_query("SELECT usuario, email FROM usuarios WHERE usuario='$usuario' OR email='$email'",$link) or die(mysql_error()); 
if(
mysql_num_rows($sql_chk)>0){
echo 
"El nombre de usuario o la cuenta de correo estan ya en uso";
formRegistro();
} else { 



 


 
 

          
mysql_query("INSERT INTO usuarios (usuario, contrasenna, ciudad, email, nombreamo, telefono, pais, zona, provincia) VALUES ('$usuario','$contrasenna','$ciudad','$email','$nombreamo','$telefono','$pais','$zona','$provincia')",$link);
           
        
$id mysql_insert_id();


            
           
mysql_query("INSERT INTO animal (idusuario, usuario, raza, edad, sexo, especie, capa, pedigri, nombreamo) VALUES ($id,'$usuario','$raza','$edad','$sexo','$especie','$capa','$pedigri','$nombreamo')",$link);
           
            {        
$id mysql_insert_id();

           
           
//extensiones de archivos disponibles
$archivos_disp_ar = array('jpg''jpeg''gif''png''tif''tiff''bmp');
//carpeta donde vamos a guardar la imagen
$carpeta 'imagen/';
//recibimos el campo de imagen
$imagen $_FILES['imagen']['tmp_name'];
//guardamos el nombre original de la imagen en una variable
$nombrebre_orig $_FILES['imagen']['name'];
//el proximo codigo es para ver que extension es la imagen
$array_nombre explode('.',$nombrebre_orig);
$cuenta_arr_nombre count($array_nombre);
$extension strtolower($array_nombre[--$cuenta_arr_nombre]);

//validamos la extension
if(!in_array($extension$archivos_disp_ar)) $error "Este tipo de archivo no es permitido";

if(empty(
$error)){

//creamos nuevo nombre para que tenga nombre unico
$nombre_nuevo time().'_'.rand(0,100).'.'.$extension;
//nombre nuevo con la carpeta
$nombre_nuevo_con_carpeta $carpeta.$nombre_nuevo;
//por fin movemos el archivo a la carpeta de imagenes
$mover_archivos move_uploaded_file($imagen $nombre_nuevo_con_carpeta);
//de damos permisos 777
chmod($nombre_nuevo_con_carpeta,0777);

//recojo los datos
$sql mysql_query("INSERT INTO fotos (idusuario,imagen)VALUES('$id','$nombre_ nuevo_con_carpeta')");

//este codigo es para informarle al usuario que el archivo se ha cargado exitosamente
$respuesta ='Su archivo se ha enviado exitosamente';}

            
    
            
            echo 
'El usuario '.$usuario.' ha sido registrado de manera satisfactoria.<br />';
            echo 
'Ahora puede entrar ingresando su usuario y su password<br />';
         
      } 
            
?>
            
            //Un formulario de login, que aparecera despues de el registro fue exitoso
            
            <FORM ACTION="comprobar.php" METHOD="post">
              Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
              Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=10><br />
              <INPUT TYPE="submit" VALUE="Ingresar">
            </FORM>
            <?php
            
         
}
      }
   }

?>
  #2 (permalink)  
Antiguo 04/01/2012, 16:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: la imagen no llega a mi base de datos

¿Ya te diste cuenta que hay un espacio en dicha variable cuando haces el INSERT?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/01/2012, 07:42
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: la imagen no llega a mi base de datos

Modifiqué lo que me dijiste, no me di cuenta de eso error, porque a mí me aparece en dos lineas, y estaba partido justo por ahí, pensé que era porque el código era muy largo. Aún así, no me funciona, no me lo ingresa en la base de datos. ¿Influye que el campo "nombre_nuevo_con_carpeta" es varchar en vez de blob?, ya no sé. De todas formas, incluiré también el html, por si tuviera ahí el fallo, aunque yo creo que está en el php.
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>USUARIOS NUEVOS</title>
<
link href="file:///C|/Users/ESTHER/Desktop/animalmeeting/estilos.css" rel="stylesheet" type="text/css" />
<
link href="file:///C|/Users/ESTHER/Desktop/animalmeeting/registro2.css" rel="stylesheet" type="text/css" />



</
head>

<
body class="fondoregistro">
<
form action="registrandose.php" method="post" enctype="multipart/form-data" name="formulario" id="formulario">
  <
table width="1024" height="768" border="0">
    <
tr>
      <
td width="304" height="768"><table width="100%" height="768" border="0">
        <
tr>
          <
td height="350" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td width="84%" height="124">
          <
label for="imagen"></label>
            <
input name="imagen" type="file" class="subirfoto" onChange="muestra();" id="imagen" size="12" />
            <
input type="hidden" name="MAX_FILE_SIZE" value="100000">
            </
td>
          <
td width="16%"><input name="button" type="submit" class="botonenvio" id="button" value="Enviar" /></td>
        </
tr>
        <
tr>
          <
td height="148" colspan="2">&nbsp;</td>
        </
tr>
      </
table></td>
      <
td width="335"><table width="100%" height="768" border="0">
        <
tr>
          <
td height="103">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="60"><label for="pais"></label>
            <
input name="pais" type="text" class="pais" id="pais" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="21">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="52"><label for="provincia"></label>
            <
input name="provincia" type="text" class="provincia" id="provincia" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="15">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="57"><label for="ciudad"></label>
            <
input name="ciudad" type="text" class="ciudad" id="ciudad" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="5">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="45"><label for="zona"></label>
            <
input name="zona" type="text" class="zona" id="zona" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="21">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="50"><label for="especie"></label>
            <
input name="especie" type="text" class="especie" id="especie" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="15">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="57"><label for="raza"></label>
            <
input name="raza" type="text" class="raza" id="raza" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="5">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="45"><label for="edad"></label>
            <
input name="edad" type="text" class="edad" id="edad" maxlength="3" /></td>
        </
tr>
        <
tr>
          <
td height="15">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="61"><label for="sexo"></label>
            <
select name="sexo" class="sexo" id="sexo">
<
option>hembra</option>
<
option>macho</option>
            </
select></td>
        </
tr>
        <
tr>
          <
td height="46">&nbsp;</td>
        </
tr>
      </
table></td>
      <
td width="371"><table width="100%" height="768" border="0">
        <
tr>
          <
td height="103" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td width="43%" height="60"><input name="pedigri" type="radio" class="si" id="radio" value="si" checked="checked" />
            <
label for=""></label></td>
          <
td width="57%"><input name="pedigri" type="radio" class="no" id="radio2" value="no" />
            <
label for="radio2"></label></td>
        </
tr>
        <
tr>
          <
td height="21" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="52" colspan="2"><label for="capa"></label>
            <
input name="capa" type="text" class="capa" id="capa" maxlength="20" /></td>
        </
tr>
        <
tr>
          <
td height="15" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="57" colspan="2"><label for="nombreamo"></label>
            <
input name="nombreamo" type="text" class="nombreamo" id="nombreamo" maxlength="30" /></td>
        </
tr>
        <
tr>
          <
td height="5" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="45" colspan="2"><label for="telefono"></label>
            <
input name="telefono" type="text" class="telefono" id="telefono" maxlength="15" /></td>
        </
tr>
        <
tr>
          <
td height="21" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="50" colspan="2"><label for="email"></label>
            <
input name="email" type="text" class="email" id="email" maxlength="35" /></td>
        </
tr>
        <
tr>
          <
td height="15" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="57" colspan="2"><label for="usuario"></label>
            <
input name="usuario" type="text" class="usuario" id="usuario" maxlength="40" /></td>
        </
tr>
        <
tr>
          <
td height="5" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="45" colspan="2"><label for="contrasenna"></label>
            <
input name="contrasenna" type="password" class="contrasena" id="contrasenna" maxlength="25" /></td>
        </
tr>
        <
tr>
          <
td height="15" colspan="2">&nbsp;</td>
        </
tr>
        <
tr>
          <
td height="61" colspan="2"><label for="repcontrasenna"></label>
            <
input name="repcontrasenna" type="password" class="repcontrasenna" id="repcontrasenna" maxlength="25" /></td>
        </
tr>
        <
tr>
          <
td height="46" colspan="2">&nbsp;</td>
        </
tr>
      </
table></td>
    </
tr>
  </
table>
</
form>
</
body>
</
html
  #4 (permalink)  
Antiguo 05/01/2012, 08:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: la imagen no llega a mi base de datos

De hecho es correcto que uses VARCHAR pues lo que vas a almacenar es la ruta, y es texto no datos binarios.

Sin embargo ¿por qué no estás depurando tu consulta al insertar?

¿De verdad lo inserta vacío?

Es como muy raro, si no fuera valida la ruta de dicha variable todas las funciones que la usan darían error.

Antes de hacer el INSERT intenta imprimir dicha variable con var_dump()
Código PHP:
var_dump($nombre_nuevo_con_carpeta); 
¿Que muestra?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/01/2012, 09:30
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 12 años, 7 meses
Puntos: 50
Respuesta: la imagen no llega a mi base de datos

Hola..

Aquí:
Código PHP:
Ver original
  1. mysql_query("INSERT INTO animal (idusuario, usuario, raza, edad, sexo, especie, capa, pedigri, nombreamo) VALUES ($id,'$usuario','$raza','$edad','$sexo','$especie','$capa','$pedigri','$nombreamo')",$link);
No existe $id..no es necesario, ya que supongo ese id es de tipo int y AUTOINCREMENT
Además al vuelo veo muchos errores(puedo estar equivocado):
.
1.-usas insert id en un sólo post varias veces
2. Haces varios insert a distintas tablas estás mezclando registros de usuarios con las mascotas
3.- en una tercera tabla subes las fotos..si va a ser una foto por mascota no necesitas separar las tablas, si serán múltiples fotos no veo que esté bién hacer todo en un sólo formulario..ya que el last id será sólo 1, no es secuencial hasta dónde sé.
4.- Dónde está el botón en tu formulario?
5.- De dónde viene esto?
Código PHP:
Ver original
  1. {        $id = mysql_insert_id();

Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #6 (permalink)  
Antiguo 05/01/2012, 10:09
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: la imagen no llega a mi base de datos

Al introducir var_dump me dice: string(24) "imagen/1325778797_14.jpg", aunque lo introduce, por lo menos las 2 primeras tablas, pero no la de fotos, o sea, igual que antes. No introduce vacio, es que es como si no existiera esa parte y ni introduce el id. Antes de poner el código que hay entre insert into animal e insert into fotos, por lo menos introducía vacío, ahora ni eso.
Lo de $id = mysql_insert_id(); sí que es necesario, es la cláve foránea. Introduzco el primer insert y luego rescato la id para poder introducir los otros datos, tanto de la tabla animal como de fotos, si lo quito, sólo introduciría los de la tabla usuarios, estoy segura de que ese no es el problema. El punto 3, no lo entiendo bien, pero te comento lo que quiero: este un registro para nuevos usuarios, en principio sólo podrán introducir una foto, pero cuando ya estén registrados, podrán introducir más, de ahí viene que estén separadas. Por cierto, se supone que el nombre que tenga el animal será el nombre de usuario (no me preguntes por qué, la decisión no ha sido mía), el nombre del amo es en la primera tabla.
Como ya os digo, antes de introducir el código entre los insert, daba por lo menos vacío, ahora no registra nada, no es vacío, no sé por qué.
  #7 (permalink)  
Antiguo 05/01/2012, 10:16
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: la imagen no llega a mi base de datos

Por cierto, me acabo de dar cuenta de que en el momento en que le doy a enviar, justo antes de que aparezca la pantalla de registrándose.php,me sale un error, aunque no sé si influye, porque de todas formas, la foto se introduce en la carpeta del servidor. El error dice:
Detalles de error de página web

Mensaje: Se esperaba un objeto
Línea: 24
Carácter: 1
Código: 0
  #8 (permalink)  
Antiguo 05/01/2012, 17:09
 
Fecha de Ingreso: octubre-2011
Mensajes: 160
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: la imagen no llega a mi base de datos

¿Nadie sabe dónde puede estar el fallo?
  #9 (permalink)  
Antiguo 05/01/2012, 17:13
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: la imagen no llega a mi base de datos

Depura la consulta...
Código PHP:
Ver original
  1. mysql_query("INSERT INTO fotos (idusuario,imagen)VALUES('$id','$nombre_ nuevo_con_carpeta')") or die(mysql_error());
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: imagenes, servidor, bases-de-datos
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 12:56.