IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

tester input type file est vide ou non


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Par défaut tester input type file est vide ou non
    salut mon probleme est comment savoir si input type file est vide sioui j'vais effectuer une modification sans upload sinon modification avec upload voici condition simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    if(isset($_POST['modifier'])){
     
    if(isset($_FILES) && empty($fichier)) {
    	print("modification sans upload");
    //requette Modification
    }
     
    elseif(isset($_FILES) && !empty($fichier)) {
    	print("modification sans upload");
    //requette Modification
     
    }
     
     
    }
    le probleme ce qu'il n'entre pas dans deuxiem condition si le input type file est remplie

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    $_FILES[<nom>]['error']
    UPLOAD_ERR_NO_FILE

    Valeur : 4. Aucun fichier n'a été téléchargé.
    et/ou
    Si aucun fichier n'est sélectionné dans le formulaire, PHP retournera 0 dans $_FILES[<nom>]['size'] et rien du tout dans $_FILES[<nom>]['tmp_name'].
    (dixit la documentation)

    --

    isset($_FILES) sera toujours (fichier ou non) vrai, ici. De même pour isset($_FILES[<nom>]). Et, on ne sait pas ce que représente $fichier.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 298
    Par défaut
    Citation Envoyé par julp Voir le message
    $_FILES[<nom>]['error']

    et/ou

    (dixit la documentation)

    --

    isset($_FILES) sera toujours (fichier ou non) vrai, ici. De même pour isset($_FILES[<nom>]). Et, on ne sait pas ce que représente $fichier.
    $fichier=$_FILES['fichier'];

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    if(isset($_POST['modifier'])){
     
    	if(isset($_FILES) && empty($_FILES['fichier'])) {
     
    		print("modification sans upload");
     
    	}
    	elseif(isset($_FILES) && !empty($_FILES['fichier'])) {
     
    		print("modification avec upload");
    	}
     
     
    }
    il rentre pas au premire condition quand input est vide

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est parfaitement normal, comme je l'ai dit. Relisez ce que j'ai écris (il y a l'explication par rapport à ce résultat ainsi que la solution - les en fait) ...

    if ($_FILES['fichier']['error'] == UPLOAD_ERR_NO_FILE) {
    # et/ou, suivant comment est contrôlé $_FILES['fichier']['error']
    # if ($_FILES['fichier']['size'] == 0 && $_FILES['fichier']['tmp_name'] === '') {
    // = pas de fichier envoyé
    }

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 25
    Par défaut
    Bonjour,

    J'ai le même problème. J'ai mis en place une partie admin avec un formulaire où je peux ajouter - modifier - supprimer des produits sur mon site.

    Le problème porte sur la partie modifier. Si je ne modifie pas l'image déjà présente, ça me prend le champ vide et du coup je me retrouve avec mon champ vide dans la base de données

    Dans mon code, j'ai rajouté une condition, je disais que si le champ n'était pas vide alors je faisais l'insertion des données sinon je reprenais la valeur de mon champ dans la base.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    $link=mysql_connect("localhost","","");
    mysql_select_db("lcb");
    mysql_query("SET NAMES 'UTF8'");
     
    $nom = $_REQUEST["nom"];
    $adresse = $_REQUEST["adresse"];
    $cp_ville = $_REQUEST["ville"];
    $descriptif = $_REQUEST["descriptif"];
    // logo
    $dossier = '../images/partenariats/';
    $fichier = basename($_FILES['logo']['name']);
    $taille_maxi = 100000;
    $taille = filesize($_FILES['logo']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['logo']['name'], '.'); 
     
    if ( !empty($_FILES['logo']) )
    {
    	if(!in_array($extension, $extensions)) 
        		$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc... <br/>';
    	if($taille>$taille_maxi)
        		 $erreur = 'Le fichier est trop gros... <br/>';
    	if(!isset($erreur))
    	{
        		$fichier = strtr($fichier, 
              	   'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              	   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         		$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         		if(move_uploaded_file($_FILES['logo']['tmp_name'], $dossier.$fichier))
              		echo 'Upload effectué avec succès ! <br/><br/>';
         		else 
            		echo 'Echec de l\'upload ! <br/>';
    	}
    	else
         		echo $erreur;
    	$logo = $dossier.$_FILES['logo']['name'];
    }
    else
    {
            $result=mysql_query("SELECT logo FROM infra_part where nom='$nom'");
    	while($row = mysql_fetch_array($result))
    		$logo = $row["logo"];
    }	
     
    $query = "Update infra_partenariats set logo = '$logo', nom = '$nom', adresse = '$adresse', ville = '$cp_ville', descriptif = '$descriptif' where nom = '$nom'";
    mysql_query($query) or die ("Exécution de la requête impossible.");
     
    mysql_close($link); 	
    echo "Partenaire modifié dans la base";
    Merci de vos réponses !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/01/2015, 09h18
  2. Tester si une QSpinBox est vide ou non
    Par info_sara dans le forum Débuter
    Réponses: 2
    Dernier message: 10/06/2012, 19h04
  3. input type=file : recuperer non pas un fichier mais le dossier courant
    Par caromat dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 05/05/2010, 20h15
  4. Réponses: 3
    Dernier message: 02/02/2010, 23h54
  5. Réponses: 23
    Dernier message: 21/07/2009, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo