suppression fichier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : suppression fichier

par Chile » 31 mars 2006, 15:34

:merci:
les infos sont supprimées dans la base, et le fichier egalement dans son repertoire :)
merci Truc

par Truc » 31 mars 2006, 10:13

j'ai l'impression qu'il n'a plus d'infos a propos de l'image a supprimé , a cette etape du code !?
et bien justement tu supprime le fichier de la base et ensuite tu recherches le nom pas vraiment logique :wink:

Il faut commencer par rechercher puis supprimer.
//recherche du fichier correspondant à l'id
$colname_suppr_fichier = "-1";
if (isset($_GET['id'])) {
  $colname_suppr_fichier = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_pays, $pays);
$query_suppr_fichier = sprintf("SELECT * FROM bpays WHERE id = %s", $colname_suppr_fichier);
$suppr_fichier = mysql_query($query_suppr_fichier, $pays) or die(mysql_error());
$row_suppr_fichier = mysql_fetch_assoc($suppr_fichier);

//suppression du fichier du ftp
$photo = $row_suppr_fichier['photo'];
$sup = "images/".$photo;
unlink($sup); 

//suppression du fichier de la base
if ((isset($_GET['id'])) && ($_GET['id'] != "")) {
  $deleteSQL = sprintf("DELETE FROM bpays WHERE id=%s",
                       GetSQLValueString($_GET['id'], "int"));

  mysql_select_db($database_pays, $pays);
  $Result1 = mysql_query($deleteSQL, $pays) or die(mysql_error());

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

par Chile » 31 mars 2006, 06:41

merci pour vos reponses :)
j'ai placé la ligne en fin de code :
mysql_select_db($database_pays, $pays);
$query_suppr_fichier = sprintf("SELECT * FROM bpays WHERE id = %s", $colname_suppr_fichier);
$suppr_fichier = mysql_query($query_suppr_fichier, $pays) or die(mysql_error());
$row_suppr_fichier = mysql_fetch_assoc($suppr_fichier);
$totalRows_suppr_fichier = mysql_num_rows($suppr_fichier);

 $photo = $row_suppr_fichier['photo']; 
$sup = "images/".$photo; 
unlink($sup);
?>
j'ai plus de message d'erreur, mais le fichier n'est toujours pas supprimé :(

j'ai l'impression qu'il n'a plus d'infos a propos de l'image a supprimé , a cette etape du code !?

j'ai rien compris a ton message Truc :oops:

je pige pas trop le php car je debute, mais j'essaye de comprendre :shock:

par Truc » 30 mars 2006, 23:05

avant d'arriver sur cette page tu as certainement un certain nombre de choix de suppression tu as donc l'id et le nom du fichier.

Lorsque tu passe sur cette page pour supprimer tu as $_GET['id'] passe aussi le nom.

C'est au plus rapide
Sinon tu dois refaire une requete sur l'id pour le nom de l'image

par jpaul » 30 mars 2006, 23:04

Une chose semble sûre, c'est qu'il faut initialiser ta variable après la ligne :
$suppr_fichier = mysql_query($query_suppr_fichier, $pays) or die(mysql_error()); 
Maintenant, c'est vari que en lisant le script, le select arrive après la ligne :
  $deleteSQL = sprintf("DELETE FROM bpays WHERE id=%s",
                       GetSQLValueString($_GET['id'], "int")); 
Mais soit c'est géré par les tests :
if ((isset($_GET['id'])) && ($_GET['id'] != ""))
soit il faut que tu changes la logique de ton script...

par Chile » 30 mars 2006, 22:55

:D oui ! c'est vrai que ma variable va etre vide a cet endroit du code....
par contre je ne vois pas trop ou la placer sachant que la ligne de ma base va etre aussi supprimée...et donc vide :cry:

par jpaul » 30 mars 2006, 22:46

Il me semble que tu initialises une variable à partir de données non initialisées !!!
$photo = $row_suppr_fichier['photo'];
$sup = "images/".$photo;
unlink($sup);
Cette partie de code est en début de script, $row_suppr_fichier est vide et du coup, $sup = "images/". Le message d'erreur est correct tu ne peux pas supprimer le répertoire...
Je pense qu'il faudrait faire ça au moins après la requête sql.

par Cyrano » 30 mars 2006, 22:42

Fais donc afficher ta variable $photo pour vérifier qu'elle a bien une valeur :-k

suppression fichier

par Chile » 30 mars 2006, 22:19

Bonsoir,
J'ai un petit pb de supression fichier via un formulaire. J'ai pourtant suivi les exemples trouvé dans le forum :?

j'ai une page qui me liste des "produits" avec pour chacun une photo.
J'ai pour chacun aussi la poss de supprimer l'enregistrement et la photo, via une page supression avec son id.
L'enregistrement est bien supprimé mais pas la photo :cry: .

et j'ai ce message d'erreur :

Code : Tout sélectionner

Warning: unlink(images/): Is a directory in /home/horizo/www/exemple/suppays.php on line 5
voici le code de ma page suppression :
<?php require_once('../Connections/pays.php'); ?>
<?php
$photo = $row_suppr_fichier['photo'];
$sup = "images/".$photo;
unlink($sup); 

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;
}

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

  mysql_select_db($database_pays, $pays);
  $Result1 = mysql_query($deleteSQL, $pays) or die(mysql_error());

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

$colname_suppr_fichier = "1";
if (isset($_GET['id'])) {
  $colname_suppr_fichier = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_pays, $pays);
$query_suppr_fichier = sprintf("SELECT * FROM bpays WHERE id = %s", $colname_suppr_fichier);
$suppr_fichier = mysql_query($query_suppr_fichier, $pays) or die(mysql_error());
$row_suppr_fichier = mysql_fetch_assoc($suppr_fichier);
$totalRows_suppr_fichier = mysql_num_rows($suppr_fichier);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>

<body>

<div align="center"></div>
</body>
</html>
<?php
mysql_free_result($suppr_fichier);
?>
merci pour votre aide :wink: