Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

I.K.

Atualizar+Upload e apagar arquivo antigo

Recommended Posts

Então, procurei mto sobre unlink e depois de algum tempo eu meio que desisti e resolvi pedir ajuda.

 

Minha situação é essa, tenho um form para atualizar uma imagem d uma tabela. Tanto o upload do novo arquivo qto o update na tabela funcionam, a única coisa q eu não consegui fazer foi apagar o arquivo antigo.

 

Alguem pode me indicar o caminho pelo menos de onde estou errando?

 

segue meu code (usando dreamweaver):

 

CODE
<?php require_once('../Connections/conexao.php');

 

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $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;

}

 

$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {

$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);

}

 

 

//envia novo avatar

$avatar_temp2 = $row_avatar['avatar'];

copy($avatar,"../upload/dj/".$avatar_name);

$avatar = $_POST['avatar'];

 

 

 

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {

 

$updateSQL = sprintf("UPDATE djs SET avatar = '$avatar_name' WHERE id=%s",

//GetSQLValueString($_POST['avatar'], "text"),

GetSQLValueString($_POST['id'], "int"));

 

mysql_select_db($database_conexao, $conexao);

$Result1 = mysql_query($updateSQL, $conexao) or die(mysql_error());

 

$updateGoTo = "ok_avatar.php?avatar=$avatar_temp2";

if (isset($_SERVER['QUERY_STRING'])) {

$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";

$updateGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $updateGoTo));

$do = unlink("../upload/dj/$avatar_temp2");

if($do=="1"){

echo "The file was deleted successfully.";

} else { echo "There was an error trying to delete the file."; }

 

}

 

$colname_avatar = "-1";

if (isset($_GET['id'])) {

$colname_avatar = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);

}

mysql_select_db($database_conexao, $conexao);

$query_avatar = sprintf("SELECT id, avatar FROM djs WHERE id = %s", $colname_avatar);

$avatar = mysql_query($query_avatar, $conexao) or die(mysql_error());

$row_avatar = mysql_fetch_assoc($avatar);

$totalRows_avatar = mysql_num_rows($avatar);

$avatar_temp2 = $row_avatar['avatar'];

$id_temp = $_GET['id'];

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Untitled Document</title>

<link href="estilo1.css" rel="stylesheet" type="text/css" />

</head>

 

<body>

<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1">

<table align="center">

<tr valign="baseline">

<td nowrap align="right">Avatar:</td>

<td><input name="avatar" type="file" size="32"></td>

</tr>

<tr valign="baseline">

<td nowrap align="right"> </td>

<td><input type="submit" value="Atualiza avatar"></td>

</tr>

</table>

<input type="hidden" name="MM_update" value="form1">

<input type="hidden" name="id" value="<?php echo $row_avatar['id']; ?>">

<input type="hidden" name="id2" value="<?php echo $avatar_temp2; ?>" />

</form>

<p><?php echo $avatar_temp2; ?></p>

</body>

</html>

<?php

mysql_free_result($avatar);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, para deletar o arquivo do diretório é com unlink mesmo.

 

esta linha

$do = unlink("../upload/dj/$avatar_temp2");

 

se ela não estiver sendo chamada em outro lugar para deletar deveria ser assim

unlink("../upload/dj/$avatar_temp2");

 

porém confira se o caminho gravado no banco de dados é realmente este

 

 

../upload/dj/$avatar_temp2

 

e se a página que faz a atualização deve descer um diretório ../

talvez seu problema seja caminho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

if(unlink("../upload/dj/" . $avatar_temp2)) {
   echo "The file was deleted successfully.";
} else {
   echo "There was an error trying to delete the file.";
}

 

ABRAX!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.