Foros del Web » Programando para Internet » PHP »

Los datos no se ingresan a la bd

Estas en el tema de Los datos no se ingresan a la bd en el foro de PHP en Foros del Web. Hola, buenas tengo una duda y espero que me la respondan, tengo un problema, es algo muy simple y es que no se ingresan los ...
  #1 (permalink)  
Antiguo 01/02/2015, 06:31
 
Fecha de Ingreso: noviembre-2012
Mensajes: 21
Antigüedad: 11 años, 5 meses
Puntos: 1
Pregunta Los datos no se ingresan a la bd

Hola, buenas tengo una duda y espero que me la respondan, tengo un problema, es algo muy simple y es que no se ingresan los datos a mi bd. Espero que me puedan ayudar. Trata de que tengo un sistema para que los usuarios suban fotos, lo cuál funciona muy bien, pero el tema, es que quiero que en la galeria diga quien lo subió. Hice esto y no me funciona, Ahi va el codigo

cambiar_foto.php (En este archivo se crea el formulario para subir fotos, hay un formulario que no se puede editar y que tiene el nombre del usuario logueado, a partir de eso mando los datos del formulario al archivo para ingresar los datos a la bd y no lo hacen. Bien aca va.
Código PHP :
Código PHP:
<?php
    session_start
();
    include(
'acceso_db.php'); // incluímos los datos de acceso a la BD
    // comprobamos que se haya iniciado la sesión
    
if(isset($_SESSION['usuario_nombre'])) {   ?>
<!doctype html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Document</title>
</head>
<body>
   <?
$usuario
=($_SESSION['usuario_nombre']);    // string
   
?>
   
   <h4>Bienvenido <?=$usuario?></h4>
<form action="subir.php" method="POST" enctype="multipart/form-data">
   <label for="imagen">Imagen:</label></br>
   <input type="file" name="imagen" id="imagen" /></br>
   <input type="text" value="<?=$usuario?>" name="usuario" disabled /></br>
   <input type="submit" name="subir" value="Subir"/></br>
   </form>
   
   </body>

   </html>
<?php
    
}else {
        echo 
"Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
        <a href='index.php'>Ingresar O Registrarse</a>"
;
    }
?>
Como pueden ver ahi un campo del formulario que muestra el nombre del usuario logueado.

Ahora va el archivo que se encarga de hacer la inserción de los datos en la bd y no lo hace.


Código PHP :

Código PHP:
<?php
//conexion a la base de datos
mysql_connect("mysql.myhosting.com.ar""miuser_gen""micontraseña") or die(mysql_error()) ;
mysql_select_db("mibd") or die(mysql_error()) ;
 
         
 
//comprobamos si ha ocurrido un error.
if ($_FILES["imagen"]["error"] > 0){
   echo 
"ha ocurrido un error";
} else {
   
//ahora vamos a verificar si el tipo de archivo es un tipo de imagen permitido.
   //y que el tamano del archivo no exceda los 100kb
   
$permitidos = array("image/jpg""image/jpeg""image/gif""image/png");
   
$limite_kb 1000000;

   if (
in_array($_FILES['imagen']['type'], $permitidos) && $_FILES['imagen']['size'] <= $limite_kb 1024){
      
//esta es la ruta donde copiaremos la imagen
      //recuerden que deben crear un directorio con este mismo nombre
      //en el mismo lugar donde se encuentra el archivo subir.php
      
$ruta "imagenes/" $_FILES['imagen']['name'];
      
//comprobamos si este archivo existe para no volverlo a copiar.
      //pero si quieren pueden obviar esto si no es necesario.
      //o pueden darle otro nombre para que no sobreescriba el actual.
      
if (!file_exists($ruta)){
         
//aqui movemos el archivo desde la ruta temporal a nuestra ruta
         //usamos la variable $resultado para almacenar el resultado del proceso de mover el archivo
         //almacenara true o false
         
$resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
         if (
$resultado){
            
$nombre $_FILES['imagen']['name'];
            @
mysql_query("INSERT INTO imagenes (imagen,usuario) VALUES ('$nombre', '$usuario')") ;
            
            
            echo 
"el archivo ha sido movido exitosamente";
         } else {
            echo 
"ocurrio un error al mover el archivo.";
         }
      } else {
         echo 
$_FILES['imagen']['name'] . ", este archivo existe";
      }
   } else {
      echo 
"archivo no permitido, es tipo de archivo prohibido o excede el tamano de $limite_kb Kilobytes";
   }


?>
Obviamente cambié los datos de la conxexion a la bd. Bueno en mi punto de vista no está nada mal. Todavía no soy experimentado y puedo equivocarme y estoy seguro de que eso pasa. De contrario andaría a la perfeccion. Espero que me puedan ayudar. Muchas Gracias.
Aclaro que yo se que no se suben los datos del nombre del usuario porque al fijarme en phpmyadmin, imagen, está completo, id tambien, y solo falta usuario. Que puede ser? Gracias.
  #2 (permalink)  
Antiguo 01/02/2015, 07:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Los datos no se ingresan a la bd

Por empezar, elimina los "@" de estas líneas:

Código PHP:
 $resultado = @move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
         ...

         ...
            @
mysql_query("INSERT INTO imagenes (imagen,usuario) VALUES ('$nombre', '$usuario')") ; 
Esos "@" evitan que se muestren los mensajes de error que pueden estar ocurriendo, y es una pésima practica de programación, en especial para gente que está aprendiendo.

Los errores nunca se deben ocultar. Lo que hay que hacer es resolverlos. Y para eso se necesita saber cuáles son los mensajes.

¿Se entiende?

Cita:
Aclaro que yo se que no se suben los datos del nombre del usuario porque al fijarme en phpmyadmin, imagen, está completo, id tambien, y solo falta usuario. Que puede ser? Gracias.
Asumiendo que con eso que mencionas quieres decir que el registro se crea, pero no está el usuairo, la respuesta es simple: Al momento de crear y ejecutar la query, la variable $usuario está vacía... Así de simple.
La pregunta es en este punto, ¿por qué está vacía la variable? ¿ No llego el dato o se perdió en un momento dado?
Eso solo se puede saber analizando todo el proceso y el codigo para verificarlo.
De todos modos yo al menos haría esto:
Código PHP:
$qry "INSERT INTO imagenes (imagen,usuario) VALUES ('$nombre', '$usuario')" ;
echo 
$qry;
$result mysql_query($qry) ;
if(
$result)
 echo 
"el archivo se registro en la base exitosamente";
         } else {
            echo 
"No se pudo registrar el archivo en la base: ".mysql_error(); 
        } 
Con el echo agregado al menos podrás saber si la query se está creando correctamente con todos sus datos o no.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 01/02/2015 a las 07:47
  #3 (permalink)  
Antiguo 01/02/2015, 09:13
 
Fecha de Ingreso: noviembre-2012
Mensajes: 21
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Los datos no se ingresan a la bd

Muchas gracias por tu pronta respuesta. Hice lo que me dijiste y ahora al insertar me aparece esto "INSERT INTO imagenes (imagen,usuario) VALUES ('Koala.jpg', '')el archivo se registro en la base exitosamente", bien, allí voy a mi phpmyadmin y encuentro que la imagen se subió exitosamente pero el campo usuario esta vacío. Sigo viendo porque la variable no contiene los datos y no lo encuentro. :(.
  #4 (permalink)  
Antiguo 01/02/2015, 11:24
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 10 años, 11 meses
Puntos: 4
Respuesta: Los datos no se ingresan a la bd

Vale, el fallo es bien sencillo

Código PHP:
 <h4>Bienvenido <?=$usuario?></h4>
<form action="subir.php" method="POST" enctype="multipart/form-data">
   <label for="imagen">Imagen:</label></br>
   <input type="file" name="imagen" id="imagen" /></br>
   <input type="text" value="<?=$usuario?>" name="usuario" disabled /></br>
   <input type="submit" name="subir" value="Subir"/></br>
   </form>
No estas creando bien las variables!!

Has puesto dos veces esto:

Código PHP:
<?=$usuario?>
Para empezar, separa el = de <?.
Despues, =$usuario no es nada.
Debes imprimir esa variable para que pueda ser tomada, asi:

Código PHP:
<?php echo $usuario ?>
De esa forma el value ya no estará vacio y se inserterá correctamente en la base de datos.

Hazlo y veras como funciona.
  #5 (permalink)  
Antiguo 01/02/2015, 11:46
 
Fecha de Ingreso: noviembre-2012
Mensajes: 21
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Los datos no se ingresan a la bd

Hola, gracias por tu respuesta, pero todo sigue igual, te mando las lienas de codigo que están mas comprometidas con la funcion.

Subir.php (Inserta los datos)

Código PHP:

$resultado 
move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta);
            if (
$resultado){
                
$nombre $_FILES['imagen']['name'];
            
$qry "INSERT INTO imagenes (imagen,usuario) VALUES ('$nombre', '$usuario')" ;
echo 
$qry;
$result mysql_query($qry) ; 
Y aca editphoto.php (Formulario)

Código PHP:
    <?
$usuario
=($_SESSION['usuario_nombre']);    // string
    
?>
    
    <h4>Bienvenido <?php echo $usuario ?></h4>
<form action="subir.php" method="POST" enctype="multipart/form-data">
    <label for="imagen">Imagen:</label></br>
    <input type="file" name="imagen" id="imagen" /></br>
    <input type="text" value="<?php echo $usuario ?>" name="usuario" disabled /></br>
    <input type="submit" name="subir" value="Subir"/></br>
    </form>
    
    </body>

    </html>
  #6 (permalink)  
Antiguo 01/02/2015, 12:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Los datos no se ingresan a la bd

Cita:
Iniciado por migue_coco Ver Mensaje
Has puesto dos veces esto:

Código PHP:
<?=$usuario?>
Para empezar, separa el = de <?.
Despues, =$usuario no es nada.
Eso no tiene nada que ver puesto que esa es la forma abreviada del constructor echo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: Ninguno
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 00:10.