Foros del Web » Programando para Internet » PHP »

Procedimiento en php no funciona

Estas en el tema de Procedimiento en php no funciona en el foro de PHP en Foros del Web. Hola!!! tengo un procedimiento que en mysql ya me funciona!!! pero a la hora de ponerlo en php no me funciona, es que uno de ...
  #1 (permalink)  
Antiguo 25/08/2011, 15:00
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Procedimiento en php no funciona

Hola!!! tengo un procedimiento que en mysql ya me funciona!!! pero a la hora de ponerlo en php no me funciona, es que uno de los campos que recibe es un archivo subido!!, Era para saber si es posible, que alguien sepa por que no me funciona completamente cual quier ayuda me sirve!!


Código PHP:
Ver original
  1. <?php
  2.  
  3. $Codigo=$_POST['codigo'];
  4.  
  5. $Nombre=$_POST['nombre'];
  6.  
  7. $Version=$_POST['version'];
  8.  
  9. $Area=$_POST['Area'];
  10.  
  11. $destino='archivos';
  12.  
  13. $tamano=$_FILES['file']['size'];
  14.  
  15. if($tamano < 500){
  16.  
  17. copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  18.  
  19. require("Conexion.php");
  20.  
  21. $sql = mysql_query("call `ActualizarDoc`('{$Codigo}','{$Nombre}','{$Version}','{$Area}','{$_FILES['file']['size']}','{$Codigo}')", $Conexion);
  22.  
  23. header("Location:CargarDocumento.php");
  24.  
  25. }
  26.  
  27. else {
  28.  
  29. echo ("El tamaño es superior al permitido");
  30.  
  31. }
  32.  
  33. ?>

el problema que tengo es que la variable del archivo no me la toma, esa la única que no me inserta, Agradezco cualquier ayuda!!!
  #2 (permalink)  
Antiguo 25/08/2011, 15:13
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Procedimiento en php no funciona

Reemplaza lo que te está fallando por esto: $tamano

Código PHP:
Ver original
  1. $sql = "call `ActualizarDoc`('$Codigo','$Nombre','$Version','$Area','$tamano','$Codigo')";
  2. $res = mysql_query($sql, $Conexion);
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 25/08/2011 a las 15:20
  #3 (permalink)  
Antiguo 25/08/2011, 15:36
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

nooo, me inserta todo menos el adjunto(archivo), el espacio del adjunto me queda vació
  #4 (permalink)  
Antiguo 25/08/2011, 15:37
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Procedimiento en php no funciona

Cita:
Iniciado por JeMaGa Ver Mensaje
nooo, me inserta todo menos el adjunto(archivo), el espacio del adjunto me queda vació
Estás intentando insertar en la base de datos un archivo ???
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 25/08/2011, 15:47
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

siiiii, es que ya tengo un consulta que me inserta y si me inserta el archivo, necesito hacer un procedimiento que me permita ingresar el mismo archivo, pero datos actualizados, es decir cada documento tiene nombre, versión, código, la persona encargada de subir archivos sube uno con el código SAC-12I5 con versión 2, y va a ingresar el documento otra ves pero con la versión 3, entonces si el documento existe actualice lo, y si o existe inserte lo. pero con el procedimiento desde php no funciona!!

mira este es mi formulario que tiene los campos

Código HTML:
Ver original
  1.  
  2.  
  3. <title>Cargar Documentos</title>
  4.  
  5.  
  6.  
  7. <center><h2>CARGA DE DOCUMENTO</h2><center>
  8.  
  9. <h4>Aqui usted podra ingresar nuevos documentos, pero estos solo pueden ser subidos cuando ya este aprobado previamente</h4>
  10.  
  11. <form action="InsertarArchivo.php" method="post" enctype="multipart/form-data" name="form1">
  12.  
  13. <center><a href="MenuAdmi.php"><h3> Devlover </h3></a></center>
  14.  
  15. <center><br><table border ='2'>
  16.  
  17. <tr>
  18.  
  19. <td>
  20.  
  21. <center><IMG SRC="imagenes/LOGO.jpg" WIDTH=120 HEIGHT=100></center>
  22.  
  23. <h3><center>DATOS DEL DOCUMENTO</center></h3>
  24.  
  25. </td>
  26.  
  27. <td><br>
  28.  
  29. <center><h4>Codigo del Documento: <input type="text" name="codigo"></h4></center>
  30.  
  31. <center><h4>Nombre del Documento: <input type="text" name="nombre"></h4></center>
  32.  
  33. <center><h4>Version del Documento: <input type="text" name="version"></h4></center>
  34.  
  35. <center><h4>Area Correspondiente: <input type="text" name="Area"></h4></center>
  36.  
  37. <p align="center"><h4>Archivo
  38.    
  39. <input name="archivo" type="file" id="archivo"> </h4>
  40.  
  41. <center><p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p></center><br>
  42.  
  43. </td>
  44.  
  45. </tr>
  46.  
  47. </form>
  48.  
  49. </body>
  50.  
  51. </html>

y este es mi insertar

Código PHP:
Ver original
  1. <?php
  2.  
  3. $Codigo=$_POST['codigo'];
  4.  
  5. $Nombre=$_POST['nombre'];
  6.  
  7. $Version=$_POST['version'];
  8.  
  9. $Area=$_POST['Area'];
  10.  
  11. $destino='archivos';
  12.  
  13. $tamano=$_FILES['file']['size'];
  14.  
  15. if($tamano < 500){
  16.  
  17. copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  18.  
  19. require("Conexion.php");
  20.  
  21. $sql = "call `ActualizarDoc`('$Codigo','$Nombre','$Version','$Area','$tamano','$Codigo')";
  22.  
  23. $res = mysql_query($sql, $Conexion);
  24.  
  25. header("Location:CargarDocumento.php");
  26.  
  27. }
  28.  
  29. else {
  30.  
  31. echo ("El tamaño es superior al permitido");
  32.  
  33. }
  34.  
  35. ?>

Agradezco toda la ayuda
  #6 (permalink)  
Antiguo 25/08/2011, 15:56
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: Procedimiento en php no funciona

Hola

Oiie no entiendo muy bien ,si dices que esta insertando quiere decir que el procedimiento funciona, solo que no guarda el campo archivo , es algo asi ?
  #7 (permalink)  
Antiguo 25/08/2011, 16:01
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

Exactamente, no me inserta ese campo, ese campo me lo pasa vació, por que!!! y si el procedimiento funciona por que lo probé desde mysql y si funciono, pero lo pruebo en php y no me guarda el archivo que subo!!
  #8 (permalink)  
Antiguo 25/08/2011, 16:03
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: Procedimiento en php no funciona

Ok

tenes que recibir el archivo asi:

Código PHP:
Ver original
  1. $nom_archivo = $_FILES['archivo']['name'];
  2. $tipo = $_FILES['archivo']['type'];
  3. $size = $_FILES['archivo']['size'];

Prueba asi vale, antes de insertar prueba que todos los datos esten llegando ... asi vas depurando..
  #9 (permalink)  
Antiguo 25/08/2011, 16:07
 
Fecha de Ingreso: junio-2007
Mensajes: 8
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Procedimiento en php no funciona

Recuerda leer los logs del motor de SQL. Ademas de utilizar alguna funcion para escapara los slashes. Esto me ocurria al guardar documentos PDF como blob en MySQL.
Puede ser usando la funcion
Código PHP:
base64_decode($str); 
Y lo decodificas al descargar.
Como tu solo guardas en base de datos referencia mas no la imagen revisa la carpeta. ARCHIVOS
Dentro de los parametros que pasas al procedimiento no esta el archivo, lo estas copiando en una carpeta.
Código PHP:
copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']); 
El servidor web tiene permisos de escritura sobre la carpeta "archivos"?
Código PHP:
$destino='archivos'
Y puede crear directorios?
Código PHP:
copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']); 

Última edición por nelson60s; 25/08/2011 a las 16:15
  #10 (permalink)  
Antiguo 25/08/2011, 16:26
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

mm me perdi!!! me explicas mejor!!!
  #11 (permalink)  
Antiguo 25/08/2011, 16:29
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: Procedimiento en php no funciona

hola

Verifica si te esta copiando la imagen al directorio, si es asi, no tendria porque fallarte, de lo contrario no te esta llegando los datos ..
  #12 (permalink)  
Antiguo 25/08/2011, 16:40
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

sii, si me copia en el directorio!!
  #13 (permalink)  
Antiguo 25/08/2011, 16:45
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: Procedimiento en php no funciona

Ok vale...

ya probaste como te dije anteriormente de como recibir el archivo? ....



Código PHP:

$sql 
"call `ActualizarDoc`('$Codigo','".$_FILES['archivo']['name']."','$Version','$Area','$tamano','$Codigo')"
  #14 (permalink)  
Antiguo 25/08/2011, 16:50
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

y si me funciona en mysql por que no en php???
  #15 (permalink)  
Antiguo 25/08/2011, 16:57
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 10 meses
Puntos: 76
Respuesta: Procedimiento en php no funciona

La neta que me parece raro, si te esta subiendo el archivo al directorio quiere decir que recibe el nombre del archivo , ya probaste con la linea de codigo que te deje .... deberia funcionar..
  #16 (permalink)  
Antiguo 25/08/2011, 17:47
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 1 mes
Puntos: 89
Respuesta: Procedimiento en php no funciona

Leiste estas lineas:
Cita:
$sql = "call `ActualizarDoc`('$Codigo','$Nombre','$Version','$A rea','$tamano','$Codigo')";

$res = mysql_query($sql, $Conexion);

header("Location:CargarDocumento.php");

}

else {

echo ("El tamaño es superior al permitido");

}
estas poniendo el mysql_query() dentro de una variable, pero nunca la usas...

pone esto y contanos:

Cita:
$sql = "call `ActualizarDoc`('$Codigo','$Nombre','$Version','$A rea','$tamano','$Codigo')";

mysql_query($sql, $Conexion) or die ( mysql_error());

header("Location:CargarDocumento.php");

exit;

}

else {

echo ("El tamaño es superior al permitido");

}
__________________
Mono programando!
twitter.com/eguimariano
  #17 (permalink)  
Antiguo 26/08/2011, 06:42
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Procedimiento en php no funciona

sii ya me cumple con una parte del procedimiento!! mi procedimiento indica que si existe un documento, me lo actualice y si no existe inserte lo, y bueno cuando es nuevo me lo inserta, pero cuando ya existe, no me lo actualiza, me saca este error pero no se como pueda solucionarlo!!

Código PHP:
Ver original
  1. <?php
  2.  
  3. $Codigo=$_POST['codigo'];
  4.  
  5. $Nombre=$_POST['nombre'];
  6.  
  7. $Version=$_POST['version'];
  8.  
  9. $Area=$_POST['Area'];
  10.  
  11. $destino='archivos';
  12.  
  13. $nom_archivo = $_FILES['archivo']['name'];
  14.  
  15. $tipo = $_FILES['archivo']['type'];
  16.  
  17. $size = $_FILES['archivo']['size'];
  18.  
  19. $tamano=$_FILES['file']['size'];
  20.  
  21. if($tamano < 500){
  22.  
  23. copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  24.  
  25. require("Conexion.php");
  26.  
  27. $sql = "call `ActualizarDoc`('$Codigo','$Nombre','$Version','$Area','".$_FILES['archivo']['name']."','$Codigo')";
  28.  
  29. mysql_query($sql, $Conexion);
  30.  
  31. header("Location:CargarDocumento.php");
  32.  
  33. }
  34.  
  35. else {
  36.  
  37. echo ("El tamaño es superior al permitido");
  38.  
  39. }
  40.  
  41. ?>



Warning: copy(archivos/SEG-12M.pdf) [function.copy]: failed to open stream: Permission denied in E:\AppServ\www\InsertarArchivo.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at E:\AppServ\www\InsertarArchivo.php:23) in E:\AppServ\www\InsertarArchivo.php on line 31
  #18 (permalink)  
Antiguo 26/08/2011, 17:09
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 1 mes
Puntos: 89
Respuesta: Procedimiento en php no funciona

Cita:
Iniciado por JeMaGa Ver Mensaje
sii ya me cumple con una parte del procedimiento!! mi procedimiento indica que si existe un documento, me lo actualice y si no existe inserte lo, y bueno cuando es nuevo me lo inserta, pero cuando ya existe, no me lo actualiza, me saca este error pero no se como pueda solucionarlo!!

Código PHP:
Ver original
  1. <?php
  2.  
  3. $Codigo=$_POST['codigo'];
  4.  
  5. $Nombre=$_POST['nombre'];
  6.  
  7. $Version=$_POST['version'];
  8.  
  9. $Area=$_POST['Area'];
  10.  
  11. $destino='archivos';
  12.  
  13. $nom_archivo = $_FILES['archivo']['name'];
  14.  
  15. $tipo = $_FILES['archivo']['type'];
  16.  
  17. $size = $_FILES['archivo']['size'];
  18.  
  19. $tamano=$_FILES['file']['size'];
  20.  
  21. if($tamano < 500){
  22.  
  23. copy($_FILES['archivo']['tmp_name'], $destino.'/'.$_FILES['archivo']['name']);
  24.  
  25. require("Conexion.php");
  26.  
  27. $sql = "call `ActualizarDoc`('$Codigo','$Nombre','$Version','$Area','".$_FILES['archivo']['name']."','$Codigo')";
  28.  
  29. mysql_query($sql, $Conexion);
  30.  
  31. header("Location:CargarDocumento.php");
  32.  
  33. }
  34.  
  35. else {
  36.  
  37. echo ("El tamaño es superior al permitido");
  38.  
  39. }
  40.  
  41. ?>



Warning: copy(archivos/SEG-12M.pdf) [function.copy]: failed to open stream: Permission denied in E:\AppServ\www\InsertarArchivo.php on line 23

Warning: Cannot modify header information - headers already sent by (output started at E:\AppServ\www\InsertarArchivo.php:23) in E:\AppServ\www\InsertarArchivo.php on line 31
Que te parece si renombras el archivo al guardarlo por ejemplo $_FILES['archivo']['name'].date('Y-m-d H:i:s')
__________________
Mono programando!
twitter.com/eguimariano

Última edición por SirDuque; 26/08/2011 a las 17:12 Razón: lei bien xD
  #19 (permalink)  
Antiguo 26/08/2011, 23:40
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Procedimiento en php no funciona

Yo te recomendaría ampliamente hacer dos cosas:

1.- Una tabla que tenga la relación del registro "de texto" y el nombre del archivo al que está relacionado.
2.- Un stored procedure con el que revises el nombre del archivo (sería llave primaria o parte de ella)

Btw, al parecer el error que obtienes es por que no puedes utilizar esa función, (no tienes permisos para copy)
  #20 (permalink)  
Antiguo 30/08/2011, 08:16
 
Fecha de Ingreso: junio-2007
Mensajes: 8
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Procedimiento en php no funciona

Bueno, lo correcto seria:

1. Dejar de pensar en SQL por que el problema es de ficheros.
2. Verificar en la carpeta si ya existe efectivamente el archivo alamcenado.
3. Borrar el archivo anterior
4. Copiar el nuevo.

Es importante saber que permisos se tienen sobre la carpeta donde se estan copiando los archivos.

Etiquetas: mysql, procedimiento, sql, variables
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 04:40.