Bonjour,

Voila je rencontre un petit problème avec mon code.

public function setFile1(array $File1) {
                if($this->getError() != '') {
    return;
  }
      $this->File1 = $File1; 
}
public function uploadFile1() {
  if($this->getError() != '') {
    return;
  }
  if ($this->File1['error'] != '') {
    $this->setError('Veuillez choisir votre photo <br/> Erreur chargement 1er fichier: '.$this->File1['error']);
    return;
  }
  $dossier = 'resultat/';
  $fichier = basename($this->File1['name']);
  $taille_maxi = 5000000;
  $taille = filesize($this->File1['tmp_name']);
  //$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG', '.JPEG', '.bmp') ;
  $arr['.gif']  ='image/gif';
  $arr['.jpg']  ='image/jpeg';
  $arr['.jpeg'] ='image/jpeg';
  $arr['.JPG']  ='image/jpeg';
  $arr['.JPEG'] ='image/jpeg';
  $arr['.png'] ='image/png';
  $arr['.bmp'] ='image/bmp';
  $extension = strrchr($this->File1['name'],'.');
  //Si l'extension n'est pas dans le tableau
  if(!isset($arr[$extension]))
  {
    $this->setError('La photo doit être de type:<br/>-png<br/>-gif<br/>-jpg<br/>-jpeg<br/>-bmp');
    return;
  }
  if($taille>$taille_maxi) {
    $this->setError('Le fichier est trop gros...');
    return;
  }
  //On formate le nom du fichier ici...
  $fichier = strtr($fichier,
  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
// Recherche Nom Unique avec un random
$subDir = "fichier/";
@mkdir($dossier.$subDir, 0777, true);
  $ran = rand(1, 99999);
  while (file_exists ($dossier.$subDir.'R_'.$ran.'F_'.$fichier)) {
    $ran = rand(1, 99999);
  }
  if(!move_uploaded_file($this->File1['tmp_name'], $dossier.$subDir.'R_'.$ran.'F_'.$fichier)) {
    $this->setError('Echec de l\'upload !');
    return;
  }
// OK, donc on stocke le 'NOM SERVEUR' (avec dossier)
  $this->File1['NomServeur'] = $dossier.$subDir.'R_'.$ran.'F_'.$fichier;
// Le nom tout court
  $this->File1['NomFichier'] = 'R_'.$ran.'F_'.$fichier;
// Le type de fichier (pour mail)
  $this->File1['ContType'] = $arr[$extension];
}

Ce que je veux

Il y a quelque temps j ai créée ce code pour vérifier que la photo ne dépasse pas une certaine taille et qu elle est tel ou tel format, mais maintenant je voudrais faire en sorte que ce champs ne sois pas obligatoire, mais la je bloque un peu, parce que je n'arrive pas à faire en sorte que le champs sois contrôler mais pas obligatoire.

Est ce que quelqu un pourrait m'aiguiller?

Merci

11 réponses


Bonjour,

Si les champs facultatifs ne sont pas respecter alors vous afficher un message d'information et non une erreur.

fab68200
Auteur

Bonjour,

Pour le moment le champs n'est pas facultatif mais il est obligatoire, et enfaite je n'arrive pas ou plutot ne sais pas comment tourner le code pour rendre le champ facultatif.

transformer le setError en setWarning et sans return

fab68200
Auteur

Bonjour,

Merci je vais essayer.
mais du coup en faisant ça est ce que si le champs est rempli il y aura toujours le contrôle du format et de la taille?

A vous de crée cette nouvelle fonction setwarning.
Le controle sera et vous afficherez un message suivant le cas

fab68200
Auteur

Et si je fais quelque chose de ce type ?
Mais sa ne semble pas fonctionner, comme dit moi je voudrais vraiment que le champs sois facultatif et controler que si il y a qyelque chose dedans:

 public function setFile1(array $File1) {

    if (null === $this->File1) {
      return;
     }
public function uploadFile1() {
                if($this->getError() != '') {
    return;
  }
  if ($this->File1['error'] != '') {
    $this->setError('Veuillez choisir votre 1er photo <br/> Erreur chargement 1er fichier: '.$this->File1['error']);
    return;
  }
  $dossier = 'resultat/';
  $fichier = basename($this->File1['name']);
  $taille_maxi = 5000000;
  $taille = filesize($this->File1['tmp_name']);
  //$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG', '.JPEG', '.bmp') ;
  $arr['.gif']  ='image/gif';
  $arr['.jpg']  ='image/jpeg';
  $arr['.jpeg'] ='image/jpeg';
  $arr['.JPG']  ='image/jpeg';
  $arr['.JPEG'] ='image/jpeg';
  $arr['.png'] ='image/png';
  $arr['.bmp'] ='image/bmp';
  $extension = strrchr($this->File1['name'],'.');
  //Si l'extension n'est pas dans le tableau
  if(!isset($arr[$extension]))
  {
    $this->setError('La 1er photo doit être de type:<br/>-png<br/>-gif<br/>-jpg<br/>-jpeg<br/>-bmp');
    return;
  }
  if($taille>$taille_maxi) {
    $this->setError('Le fichier est trop gros...');
    return;
  }
  //On formate le nom du fichier ici...
  $fichier = strtr($fichier,
  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
// Recherche Nom Unique avec un random
$subDir = "fichier/";
@mkdir($dossier.$subDir, 0777, true);
  $ran = rand(1, 99999);
  while (file_exists ($dossier.$subDir.'R_'.$ran.'F_'.$fichier)) {
    $ran = rand(1, 99999);
  }
  if(!move_uploaded_file($this->File1['tmp_name'], $dossier.$subDir.'R_'.$ran.'F_'.$fichier)) {
    $this->setError('Echec de l\'upload !');
    return;
  }
// OK, donc on stocke le 'NOM SERVEUR' (avec dossier)
  $this->File1['NomServeur'] = $dossier.$subDir.'R_'.$ran.'F_'.$fichier;
// Le nom tout court
  $this->File1['NomFichier'] = 'R_'.$ran.'F_'.$fichier;
// Le type de fichier (pour mail)
  $this->File1['ContType'] = $arr[$extension];
}  
}

oui car vous avez toujours des returns pour les champs optionnels

fab68200
Auteur

Bonsoir,

J ai dejà essayer en les enlevants mais du coup sa me mets sois des pages blanches ou alors j ai plus de controle quand le champs est rempli

Que fais la fonction setError ?

fab68200
Auteur

Elle renvoie vers un message d'erreur:

$error = '',
    $preError = '<b><u>Attention! Votre commande n\'est pas effectué:</b></u><br><br>';
public function setError($Err) {
    $this->error.= $this->preError.$Err;
    $this->preError = '<br>';
  }
fab68200
Auteur

Voulez vous voir mon code au complet?