Problème champs obligatoire

msi79
Messages postés
501
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
7 juin 2022
- 2 mai 2014 à 14:06
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
- 2 mai 2014 à 16:22
Bonjour,
j'ai un formulaire contenant 2 champs :
un champ textarea et le deuxième de type file.

le probleme est que tant que le champs de type file n'est pas renseigné, on n'arrive pas à poster le formulaire je reçois le message :

Aucune données

voici mon code:
<?php
if(isset($_POST['valider'])){
      $message = mysql_real_escape_string($_POST['message']);
	  $id = $_SESSION["pseudo"];
	  // On définit notre répertoire cible
  $dstRep = 'fichiers/';
 
  // On créé un tableau contenant les extensions autorisées
  $extOk = array('jpg', 'png', 'bmp', 'gif','jpeg','doc','csv','xlsx','rtf');
 
  // On vérifie qu'il est accessible en écriture
  if(!is_writable($dstRep))
    die('Impossible d\'écrire dans le répertoire cible.');
 
  // On vérifie d'abord que des données ont bien été envoyées
  if(!isset($_FILES['fichier']))
    die('Aucune données');
 
  // Vérification du code d'erreur
  switch($_FILES['fichier']['error'])
  {
     case 1: // UPLOAD_ERR_INI_SIZE
	 
        die("Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !");
        break;
      case 2: // UPLOAD_ERR_FORM_SIZE
        die("Le fichier dépasse la limite autorisée dans le formulaire HTML !");
        break;
      case 3: // UPLOAD_ERR_PARTIAL
        die("L'envoi du fichier a été interrompu pendant le transfert !");
        break;
      case 4: // UPLOAD_ERR_NO_FILE
        die("Le fichier que vous avez envoyé a une taille nulle !");
        break;
  }
 
  // On lit l'extension du fichier
  $fileExt = substr($_FILES['fichier']['name'],-4,4);
 
  // On vérifie que l'extension est dans le tableau
  // des extensions autorisées
 //if(!in_array($fileExt,$extOk))
    //die("Type de fichier non autorisé.");
 
  // On vérifie si le fichier existe déjà dans le répertoire cible
  if(file_exists($dstRep.$_FILES['fichier']['name']))
  {
    // On utilise une boucle pour incrémenter notre préfixe
    $i = 0;
    while(file_exists($dstRep.$i.'_'.$_FILES['fichier']['name']) ) $i++;
 
    // Arrivé ici, on a trouvé un nom disponible avec un préfixe numérique
    $cible = $dstRep.$i.'_'.$_FILES['fichier']['name'];
  }
  else
  {
    // Le fichier n'existe pas dans le répertoire cible,
    // Nous pouvons donc utiliser le nom original
    $cible = $dstRep.$_FILES['fichier']['name'];
  }
 
  // On finit par déplacer le fichier dans le répertoire cible
  
  if(move_uploaded_file($_FILES['fichier']['tmp_name'],$cible)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
           if(!empty($message)){
		   
	  $q = mysql_query("INSERT INTO tb_cmt(id_cmt,message,cible,date,pseudo) VALUES ('','$message','{$cible}',NOW(),'".$id."')")  or die("probl?me");
}}}
?>

3 réponses

nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
Modifié par nagashima le 2/05/2014 à 14:32
saut


if(!isset($_FILES['fichier']))
die('Aucune données');


faut pas chercher plus loin, tu vérifie si le fichier est donné et sinon 'die'.

naga
0
msi79
Messages postés
501
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
7 juin 2022
1
2 mai 2014 à 15:33
oui j'ai comment en faisant :

//if(!isset($_FILES['fichier']))
//die('Aucune données');

mais il se trouve que malgré ça tant que je ne chage pas une image il n 'y a pas d'insertion quand je clique sur le bouton submit
0
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
2 mai 2014 à 15:49
oui car tu continue de verifier le fichier un peu partout dans ton code, il vaut mieux que tu fasse :

  if(!isset($_FILES['fichier']))
  {
		  $q = mysql_query("INSERT INTO tb_cmt(id_cmt,message,cible,date,pseudo) VALUES ('','$message','',NOW(),'".$id."')")  or die("probl?me");
  }
  else
  {
... //le reste



naga
0
msi79
Messages postés
501
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
7 juin 2022
1
2 mai 2014 à 16:16
si je me trompe pas ça
if(!isset($_FILES['fichier']))
{
$q = mysql_query("INSERT INTO tb_cmt(id_cmt,message,cible,date,pseudo) VALUES ('','$message','',NOW(),'".$id."')") or die("probl?me");
}
veut dire que si le fichier n'est pas definit qu'il inserer . or moi je veut que le fichier soit definit ou pas qu'il y ai insersion
0
nagaD.scar
Messages postés
4269
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
16
2 mai 2014 à 16:22
plus ca va et moins je comprends ce que tu dis ... là je comprends pas du tout ta phrase =/

si tu veux insérer dans tous les cas, c'est bien ce que je t'ai donné, avec le else qui insérera avec le fichier s'il est donné
0