Foros del Web » Programando para Internet » PHP »

Upload PDF a directorio del servidor y guardar ruta en base de datos.

Estas en el tema de Upload PDF a directorio del servidor y guardar ruta en base de datos. en el foro de PHP en Foros del Web. Estoy realizando una intranet y me gustaria que el administrador una vez seleccionado un usuario de la base de datos, subira un documento en pdf ...
  #1 (permalink)  
Antiguo 01/03/2012, 04:11
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 0
Upload PDF a directorio del servidor y guardar ruta en base de datos.

Estoy realizando una intranet y me gustaria que el administrador una vez seleccionado un usuario de la base de datos, subira un documento en pdf (que en este caso seria su nomina) a el directorio nominas/ del servidor y se guardara en la base de datos la ruta del archivo, para mas adelante poder hacer una funcion en el perfil d elos usuarios, que dependiendo del usuario que sean les muestre su respectiva nomina.

Hasta ahora lo que tengo hecho es la tabla nominas:

Código:
CREATE TABLE IF NOT EXISTS `nominas` (
  `id_nomina` int(10) NOT NULL AUTO_INCREMENT,
  `usuario` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
  `nombre_nomina` varchar(15) COLLATE utf8_spanish_ci NOT NULL,
  `url` varchar(20) COLLATE utf8_spanish_ci NOT NULL,
  PRIMARY KEY (`id_nomina`),
  KEY `id_usuario` (`usuario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=1 ;
El formulario para la pagina del administrador para subir el archivo, en la que mediante un <select> puede seleccionar el nombre de usuario de la tabla "usuarios" :

Código PHP:
    <div id="pagina">
        <?php 
        $query 
"SELECT usuarios.usuario FROM usuarios"
        
$result mysql_query($query) or die(mysql_error()); 
        
$rowmysql_fetch_assoc($result); 
        
$totalRows mysql_num_rows($result); 
        
?> 

      <form action="upload.php" method="post" enctype="multipart/form-data"> 
    <select name="usuario"> 
    <?php do { ?> 
    <option value="<?php echo $row['usuario']?>"><?php echo $row['usuario']?> 
     </option> 
     <?php 
        
} while ($row mysql_fetch_assoc($result)); 
          
$rows mysql_num_rows($result); 
          if(
$rows 0) { 
              
mysql_data_seek($result0); 
              
$rowmysql_fetch_assoc($$result); 
          } 
        
?> 
     </select>
        <b>Enviar un nuevo archivo: </b> 
        <br> 
        <input name="archivo" type="file" id="archivo"> 
        <br> 
        <input type="submit" value="Enviar" name="boton" id="boton"> 
        </form> 
   
</div>

Y por ultimo el php para realizar el upload:


Código PHP:
<?php
        $temp
=$_FILES['archivo']['tmp_name']; 
                   
$usuario $_POST['usuario'];  
                
$directorio "/opt/lampp/htdocs/Intranet/nominas"
                
$nombre_nomina $_FILES['archivo']['name'];  
                
$url=$directorio "/" $nombre_nomina
                if (
move_uploaded_file($temp,$url)) 
                {                      
                
$sql2 "INSERT INTO nominas (usuario, nombre_nomina, url) VALUES ('$usuario', '$nombre_nomina', '$url')";
                echo 
"El archivo se ha subido correctamente";    
                }     
                            
?>

La subida la hace correctamente, lo que no me guarda es nada en la tabla "nominas" de la base de datos. Es posible que haya mucho errores, soy nueva en esto del php y mysql y aun estoy muy verde.
  #2 (permalink)  
Antiguo 01/03/2012, 04:30
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

Hola,

veo que creas la consulta después de subir el archivo, pero no la ejecutas.

Añada mysql_query después de la consulta.

Código PHP:
$sql2 "INSERT INTO nominas (usuario, nombre_nomina, url) VALUES ('$usuario', '$nombre_nomina', '$url')"
if(
mysql_query($sql2)) {
  echo 
"registro guardado";
} else {
  echo 
"error al guardar el registro";

__________________
----
http://www.mascodigo.com
  #3 (permalink)  
Antiguo 01/03/2012, 04:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

Correcto y funcionando! Gracias nx00, se me había olvidado por completo introducir la linea de ejecución.
  #4 (permalink)  
Antiguo 01/03/2012, 05:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

Ahora mi duda es la siguiente, como decía, dependiendo del usuario quiero que se muestre un pdf u otro.
Y este es el codigo que he creado para su visualización (con la intención de incrustar el visualizador en un <div> de la pagina web) pero no consigo ver nada, ese espacio (con las dimensión marcadas en el <embed> aparece vacio. El explorador que utilizo es Chrome.

Código PHP:
<div id="pagina">
    <?php
    
    $busqueda 
mysql_query("SELECT nominas.url FROM nominas WHERE nominas.usuario= '".$_SESSION['k_username']."'"
                or die (
'Error al seleccionar la Base de Datos: '.mysql_error());
                 
$pdf $busqueda['url']; 
                echo 
'<embed src="'.$pdf.'" width="500" height="600"></embed>';
                
?>
        
    </div>
  #5 (permalink)  
Antiguo 01/03/2012, 06:06
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

¿Puede ser problema de los permisos?
Ya que he comprobado que si por ejemplo pongo en el src cualquier dirección de internet con pdf me lo muestra.
En cambio si pongo directamente src="file:///opt/lampp/htdocs/Intranet/nominas/HTML.pdf" no me lo muestra.
  #6 (permalink)  
Antiguo 01/03/2012, 06:28
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

He descubierto que si pongo src="nominas/HTML.pdf" si que es capaz de mostrarlo.
Por lo que he cambiado el $directorio = "nominas"; del archivo upload.php que he creado al principio para que en la base de datos me guarde en el campo de url únicamente > nominas/nombre_del_archivo.pdf

Así que esta claro que algo hago mal en el siguiente select, pero no consigo solucionarlo

Código PHP:
<?php
    
    $busqueda 
= ("SELECT nominas.url FROM nominas WHERE nominas.usuario= '".$_SESSION['k_username']."'"
                or die (
'Error al seleccionar la Base de Datos: '.mysql_error());
                 
$pdf $busqueda['url'];
                echo 
'<embed src="'.$pdf.'" width="500" height="600"></embed>';
                
?>
  #7 (permalink)  
Antiguo 01/03/2012, 06:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 39
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

Solucionado :)

Código PHP:
    <?php
    
    $busqueda 
mysql_query("SELECT nominas.url FROM nominas WHERE nominas.usuario= '".$_SESSION['k_username']."'"
                or die (
'Error al seleccionar la Base de Datos: '.mysql_error());
                 
$pdf mysql_fetch_array($busqueda);
                echo 
'<embed src="'.$pdf[0].'" width="500" height="600"></embed>';
                
?>
  #8 (permalink)  
Antiguo 11/12/2013, 03:49
 
Fecha de Ingreso: diciembre-2013
Ubicación: Mazatlan, Sinaloa, Mexico
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

realmente te funciono el codigo de arriba disculpa ? en especifico la parte del move_uploaded_file me marca error
  #9 (permalink)  
Antiguo 31/12/2013, 22:21
 
Fecha de Ingreso: diciembre-2013
Ubicación: Mazatlan, Sinaloa, Mexico
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Upload PDF a directorio del servidor y guardar ruta en base de datos.

muchas gracias por el post todo me funciono : D

Etiquetas: directorio, formulario, mysql, pdf, servidor, sql, tabla, upload, usuarios
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 21:25.