Mysql
 sql >> Base de données >  >> RDS >> Mysql

supprimer le fichier téléchargé d'un tableau d'identifiants lorsqu'ils sont supprimés dans joomla ?

Vous avez quelques problèmes dans votre code :

  1. $uploadedfile n'est jamais déclaré mais il est utilisé pour trouver le chemin du fichier. Je suppose que c'est la même chose que $getdeleted .
  2. Vous avez une boucle foreach autour des éléments de votre tableau qui prendra chaque élément à tour de rôle. Cependant vous modélisez la fonction deleteGreetings prend tout le tableau. Vous devez supprimer cet appel de fonction de votre boucle, sinon il sera appelé pour chaque élément du tableau. Vous ne voulez l'appeler qu'une seule fois.
  3. Ce n'est qu'à la fin de votre contrôleur que vous vérifiez si votre cid param est nul ... à quoi ça sert ? Vous devriez d'abord vérifier cela avant d'essayer d'exécuter l'un des autres codes.

Je ferais quelque chose comme ça :

$arrayIDs = JRequest::getVar ( 'cid', null, 'default', 'array' );
if ($arrayIDs === null) { //Make sure the cid parameter was in the request
  JError::raiseError ( 500, 'cid parameter missing from the request' );
}
$model = & $this->getModel ( 'greetings' );
jimport ( 'joomla.filesystem.file' );
if (is_array ( $arrayIDs ) && count ( $arrayIDs ) > 0) {
  $del = $model->deleteGreetings ( $arrayIDs );
  // check this outside the loop, if it is inside you are checking it for 
  // each element in the array. Here we check once and then go forward.
  if ($del) {
    foreach ( $arrayIDs as $k => $id ) {
      $uploadedfile = $model->getUploadpic ( $id );
      $deletefile = JPATH_COMPONENT . DS . "uploads" . DS . $uploadedfile;
      JFile::delete($deletefile);
      //unlink ( $deletefile );
    }
  }
}