Foros del Web » Programando para Internet » PHP »

No puedo insertar registros en la base de datos

Estas en el tema de No puedo insertar registros en la base de datos en el foro de PHP en Foros del Web. Hola, Estoy tratando de implementar una aplicacion para que me suba archivos a una carpeta y almacenar su ruta en la BD....., lo nuevo que ...
  #1 (permalink)  
Antiguo 16/03/2008, 19:56
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
No puedo insertar registros en la base de datos

Hola,

Estoy tratando de implementar una aplicacion para que me suba archivos a una carpeta y almacenar su ruta en la BD....., lo nuevo que le he puestom es que en vez de subir un archivo suba dos, y lo hace perfecto, subo los dos archivos e introduzco en la BD todos los datos de los dos archivos y su ruta,

El problema viene cuando solo quiero subir un archivo, se sube bien pero lo que pasa es que no se inserta nada en la BD, creo que porque vienen datos vacios a insertar, los inserto asi:

Código PHP:
$query "INSERT INTO descargas (name, name2, description, ruta, ruta2, tipo, size, categoria)
    VALUES ('$nombre_archivo','$nombre_archivo2','$description' , '"
.$_FILES['fichero']['name']."', '".$_FILES['fichero2']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."','$cat')"
y cuando solo es un archivo las variables vienen vacias claro, en el form no se puso nada de los datos del 2º archivo

$nombre_archivo2'

$_FILES['fichero2']['name']."

He mirado el manual y he provado de todo pero no consigi insertar nada en la BD si esas variables vienen vacias.

Gracias.
  #2 (permalink)  
Antiguo 17/03/2008, 04:55
 
Fecha de Ingreso: marzo-2007
Ubicación: España
Mensajes: 133
Antigüedad: 17 años
Puntos: 0
Re: No puedo insertar registros en la base de datos

hola,
a lo mejor podrías montar la consulta para cuando te suben un archivo, y concatenar la parte si han rellenado esos campos en el form (te medio pongo el codigo porque no sé tus variables)

Código PHP:
$consulta1="INSERT INTO descargas (name, description, ruta, tipo, size, categoria";
$consulta2="VALUES ('$nombre_archivo','$description', '".$_FILES['fichero']['name']."', '".$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."','$cat')";
            
if (isset(
campos del 2 archivo)){
    
$consulta1.=" ,name2, ruta2");
    
$consulta2.=" ,'$nombre_archivo2','".$_FILES['fichero2']['name']."'");
}else{
    
$consulta1.=")"//añadirle los parentesis finales
    
$consulta2.=")";
}

$query=$consulta1.$consulta2;  //unes la consulta 
Es probable que haya algun fallo, pero la idea es esa...
De todas formas, no estoy segura de si tu fallo es ese, pero por probar..
  #3 (permalink)  
Antiguo 17/03/2008, 05:03
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: No puedo insertar registros en la base de datos

Gracias Elisa85

Ya me imaginaba que lo tendria que hacer con IF, lo que pasaba es que lo he de hacer con cuatro campos de subir archivos y sus respectivos nombres, y quise saber si habria una manera mas rapida de hacerlo, Vamos sin tener que usar los condicionales para cuatro INSERT diferentes, pero que le vamos ha hacer, me pondre a programarlos.

Un saludo y gracias por responder, anoche me quede sin respuesta y casi no duermo pensando en la solucion.
  #4 (permalink)  
Antiguo 17/03/2008, 08:45
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: No puedo insertar registros en la base de datos

Hola, estoy tratando de hecer un simple if y no me sale.

tengo el form con dos campos $nombre_archivo y $nombre_archivo2 y lo que quiero hacere es que si el campo $nombre_archivo2 viene vacio haga una cosa y si viene con datos otra, pero no se como hacer cumplir la condicion.

lo que hago es:

Código PHP:

$nombre_archivo2  
$_POST["nombre_archivo2"];  //recojo la variable del form

if($nombre_archivo2 !== NULL) {

       if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
             if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) {

       if(
is_uploaded_file($_FILES['fichero2']['tmp_name'])) {
             if(
move_uploaded_file($_FILES['fichero2']['tmp_name'], $uploadfile2)) {

                     
//antes del query recojo las variables a insertar eb la BD
                   
$query "INSERT INTO........";

           }          
       }
  }

}else{


          if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
             if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) {


                   
//antes del query recojo las variables a insertar eb la BD
                   
$query "INSERT INTO........";

        }
       }                
      }
     } 
pero aunque el valor de $nombre_archivo2 venga vacia del form nunca se me cumple el else,
Sabriais por que?, es problema de los corchetes??, O es que soy demasiado inutil para hecerlo??

Gracias por vuestras respuestas.
  #5 (permalink)  
Antiguo 17/03/2008, 08:48
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: No puedo insertar registros en la base de datos

Prueba con:

Código PHP:
if(!empty($nombre_archivo2)) { 
http://www.php.net/empty

Saludos,
  #6 (permalink)  
Antiguo 17/03/2008, 09:03
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: No puedo insertar registros en la base de datos

Gracias Okram,

pero si le pongo if(!empty($nombre_archivo2)) {

cuando le doy a enviar, parece que entra el ELSE y comienza a cargar el archivo, o eso parece pero no lo carga, no me salen los ECHO que tengo puestos para confirmar la subida de archivos. no me da error de codigo ni de nada pero no sube.

Gracias.
  #7 (permalink)  
Antiguo 17/03/2008, 09:05
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: No puedo insertar registros en la base de datos

Y si pones:

Código PHP:
# $nombre_archivo2  = $_POST["nombre_archivo2"];
$nombre_archivo2  $_FILES["nombre_archivo2"]['name']; 
Saludos,
  #8 (permalink)  
Antiguo 17/03/2008, 09:40
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: No puedo insertar registros en la base de datos

no hice lo que me comentas por que no dije que por cada campo tipo file, tengo otro campo titulo tipo texto

Vamos, que son dos los campos del form que vienen vacios, el del archivo y el del titulo, y estoy haciendo el if comparando si viene vacio o no solo con un campo y como elegi el de tipo txto por eso la estoy recuperando:

Código PHP:
$nombre_archivo2  $_POST["nombre_archivo2"]; 
Pero lo que pasa ahora es que si entra el ELSE pero no se cumple lo que viene dentro

Código PHP:

}else{

if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
    
     
// me verifica haya sido cargado el archivo 
        
$ruta_destino "../cevit/archivos/";
        
$namefinaltrim ($_FILES['fichero']['name']);
        
$namefinalereg_replace (" """$namefinal);
        
$uploadfile$ruta_destino $namefinal;
        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) { // se coloca en su lugar final 
                    
echo "<b>Upload exitoso!. Datos:</b><br>"
            echo 
"Nombre: <i><a href=\"".$uploadfile."\">".$_FILES['fichero']['name']."</a></i><br>"
            echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                        echo 
"<br><hr><br>"
                        echo 
"camino bueno";      
                        
                        
mysql_connect('localhost','xxxx','xxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());                        

    
$nombre_archivo  $_POST["nombre_archivo"]; //estas tres variables siempre vienen con algun valor nunca vacias
 
                 
$description  $_POST["description"];
                 
$cat  $_POST["cat"];

$query "INSERT INTO descargas (name, description, ruta, tipo, size, categoria)
    VALUES ('$nombre_archivo', '$description' , '$namefinal', '"
.$_FILES['fichero']['type']."', '".$_FILES['fichero']['size']."','$cat')";

                
mysql_query($query) or die(mysql_error());
                echo 
"El archivo <b>'".$nombre_archivo."'</b>  ha sido registrado de manera satisfactoria.<br />";
                  echo 
"<br><hr><br>";
                  
                  
                  }
                  }
                  }
                  } 
Gracias.
  #9 (permalink)  
Antiguo 17/03/2008, 11:02
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Re: No puedo insertar registros en la base de datos

ya lo solucione, como de costumbre un problema simple de sintaxis,
un corchete del final del ELSE habia que ponerlo al final del primer IF.

Una verdadera tonteria, la cual no deberia nisiquiera de haber posteado, porque a estas alturas no me puedo pasar un par de horas o mas comiendome la cabeza por un simple corchete.

Gracias por vuestras respuestas.
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 10:00.