Foros del Web » Programando para Internet » PHP »

problema con unlink

Estas en el tema de problema con unlink en el foro de PHP en Foros del Web. Hola podrian ayudarme con un problema de unlink sucede que no elimina el archivo que el usuario quiere eliminar para lograrlo pongo una conexion con ...
  #1 (permalink)  
Antiguo 22/04/2013, 14:43
Avatar de uchi_pon  
Fecha de Ingreso: septiembre-2011
Mensajes: 180
Antigüedad: 12 años, 6 meses
Puntos: 1
Pregunta problema con unlink

Hola podrian ayudarme con un problema de unlink sucede que no elimina el archivo que el usuario quiere eliminar para lograrlo pongo una conexion con la base de datos donde tengo guardado el nombre de una imagen que esta guardada en el servidor entonces despues con el unlink pongo la ruta donde esta guardada y al final de la ruta la variable que jala su valor de la base de datos de esa forma el usuario puede eliminar la imagen y tambien toda su informacion correspondiente todo funciona bien exepto que no elimina ninguna imagen solo la informacion relacionada a la imagen y como el resultado de esto se ve en el front de la pagina y se elimina el nombre de la imagen que esta guardado en la BD parece que si ubiera eliminado la imagen pero en realidad sigue en el servidor y no quisiera que eso pasara este es mi code:
Código:
<?php require_once('../Connections/conectalucard.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

if ((isset($_GET['recordID'])) && ($_GET['recordID'] != "")) {
  $deleteSQL = sprintf("DELETE FROM tblproducto WHERE idProducto=%s",
                       GetSQLValueString($_GET['recordID'], "int"));

  mysql_select_db($database_conectalucard, $conectalucard);
  $Result1 = mysql_query($deleteSQL, $conectalucard) or die(mysql_error());
  
  
$varProducto_Datosproducto = "0";
if (isset($_GET["recordID"])) {
  $varProducto_Datosproducto = $_GET["recordID"];
}
mysql_select_db($database_conectalucard, $conectalucard);
$query_Datosproducto = sprintf("SELECT * FROM tblproducto WHERE tblproducto.idProducto = %s", GetSQLValueString($varProducto_Datosproducto, "int"));
$Datosproducto = mysql_query($query_Datosproducto, $conectalucard) or die(mysql_error());
$row_Datosproducto = mysql_fetch_assoc($Datosproducto);
$totalRows_Datosproducto = mysql_num_rows($Datosproducto);

  
  unlink("documentos/productos/".$row_Datosproducto['strImagen']);

  $deleteGoTo = "productos_lista.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
    $deleteGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $deleteGoTo));
  echo $row_Recordset1['strImagen'];
}


?>
ya probe quitar la variable de el unlik y ponerle una ruta de un archivo en especifico y de esa forma si funciona, tambien eh tratado de provar si la variable realmente contiene el valor que necesito, pero como esta pagina terminando de completar sus funciones redirecciona a otra, no hay momento en el que pudiera ver lo que tiene la variable con un echo.
  #2 (permalink)  
Antiguo 22/04/2013, 17:04
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 1 mes
Puntos: 81
Respuesta: problema con unlink

Intenta crear la variable completa para enviarsela a unlink.

Código PHP:
Ver original
  1. $strDel = "documentos/productos/".$row_Datosproducto['strImagen'];
  2. unlink($strDel);
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 22/04/2013, 17:26
Avatar de uchi_pon  
Fecha de Ingreso: septiembre-2011
Mensajes: 180
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: problema con unlink

Hola, muchas gracias por tu tip, aunque sigo con el problema, pero se me ha ocurrido algo con lo que dijiste, ¿no sera que el problema es cuestion de tiempo? la primera orden que la pagina ejecuta es eliminar todo registro de la tabla donde el id de el producto sea igual a el enviado por parametro, y despues de eso busca el strImagen que sea igual al enviado por parametro para acompletar la ruta de el unlink, pero como para ese tiempo esa informacion acaba de ser borrada de la tabla ya no encuentra nada y la ruta de el unlik queda sin acompletarse, ¿no sera eso lo que pasa? aun asi no se bien como modificar el codigo de forma que primero borre la imagen de el servidor y despues borre el resto de la informacion relacionada con la imagen.
  #4 (permalink)  
Antiguo 22/04/2013, 17:40
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 1 mes
Puntos: 81
Respuesta: problema con unlink

Entonces mueve tu codigo...

Esto:
Código PHP:
Ver original
  1. mysql_select_db($database_conectalucard, $conectalucard);
  2. $query_Datosproducto = sprintf("SELECT * FROM tblproducto WHERE tblproducto.idProducto = %s", GetSQLValueString($varProducto_Datosproducto, "int"));
  3. $Datosproducto = mysql_query($query_Datosproducto, $conectalucard) or die(mysql_error());
  4. $row_Datosproducto = mysql_fetch_assoc($Datosproducto);
  5. $totalRows_Datosproducto = mysql_num_rows($Datosproducto);
  6.  
  7.  
  8.   unlink("documentos/productos/".$row_Datosproducto['strImagen']);
Dejalo antes de esto:
Código PHP:
Ver original
  1. if ((isset($_GET['recordID'])) && ($_GET['recordID'] != "")) {
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!

Etiquetas: mysql, select, sql, unlink
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 11:37.