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 :

Distinction d'un if en fonction d'un input file


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut Distinction d'un if en fonction d'un input file
    Bonjour à tous,


    Voilà j'ai un comportement que je n'avais pas prévu, (Mais logique au final) et que je ne sais pas comment contourner.

    En fait, j'ai un formulaire d'ajout de solution, contenant plusieurs champs.
    Je viens de rajouter la possibilité de joindre un fichier lors de l'ajout.

    J'ai donc rajouté dans mon form un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <p>
    <input type="file" name="SoluceFile" /><br />
    </p>
    Ce formulaire amène sur la page Add_solution_inBdD.php

    L'utilisateur n'étant pas obligé de joindre un fichier à sa solution, j'ai voulu distinguer les deux cas. (Sans et Avec fichier)

    Et pour faire cette distcinction, je pensais que simplement ceci serait correct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_FILES['SoluceFile']))
    Mais en fait, même si je ne joins aucun fichier je rentre quand même dans ce if.
    Savez-vous comment faire autrement ???

    J'espère avoir été clair,
    Merci.

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    chaque item de $_FILE à la structure suivante... ajoute un var_dump pour mieux comprendre ce qu'il se passe.

    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
        [image] => Array
            (
                [name] => Array
                    (
                        [0] => 400.png
                    )
                [type] => Array
                    (
                        [0] => image/png
                    )
                [tmp_name] => Array
                    (
                        [0] => /tmp/php5Wx0aJ
                    )
                [error] => Array
                    (
                        [0] => 0
                    )
                [size] => Array
                    (
                        [0] => 15726
                    )
            )
    :manuel:

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    ... ? Désolé je ne vois pas.

  4. #4
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut

    Tu peux nous montrer ton script de traitement des variables transmises par ton form ?
    Je suppose dans ton fichier Add_solution_inBdD.php"".

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Salut.
    Le code est un peu long... Je vois pas bien quoi te donner pour que cela soit utile.

    Je met le squelette

    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
     
    // Si on a joint un fichier
    if (isset($_FILES['SoluceFile']))
     
    		{
     
    		// Testons si le fichier n'est pas trop gros
    	if ($_FILES['SoluceFile']['size'] <= 10000000  AND $_FILES['SoluceFile']['error']==0)
    			{
    	// Testons si l'extension est autorisée
    				$infosfichier = pathinfo($_FILES['SoluceFile']['name']);
    				$extension_upload = $infosfichier['extension'];
    				$extensions_autorisees = array('xls','csv','txt','doc','docx','pdf');
     
    				if (in_array($extension_upload,$extensions_autorisees))
     
    				{
    		// Code associé
     
    				}
     
    		else 	
    				{
    		// Message d'erreur
    				}
     
    			}
     
    			else 
    			{
    				// Fichier trop volumineux
    			}
     
    		}
     
    // Dans le cas ou il n'y a pas de fichier joint
     
    else
     
    	{
     
    	// Code associé			
     
    	}
    Et en fait le soucis c'est que je rentre pas dans le Else, même si je ne donne aucun fichier dans mon input.

    Je sais pas si cela répond... ? Le code entier est assez long mais si il faut je le met en pièce jointe.

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    bonjour

    crée un fichier test.php
    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
     
    <html>
    <body>
    <?php
    echo '<pre>';
     
    print_r($_POST);
    print_r($_FILES);
    echo '</pre>';
    ?>
    <form action="test.php" method="post"
    enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" />
    <br />
    <input type="submit" name="submit" value="Submit" />
    </form>
     
    </body>
    </html>
    la première fois le tableau est vide, et la 2e fois...

    conclusion: isset puis !empty(...['name']) !

    conclusion 2: t'as pas ajouté le var_dump() alors que ça t'aurai fait gagné 1h.

  7. #7
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    C'est simplement pour comprendre ceci, et je te cite :

    Mais en fait, même si je ne joins aucun fichier je rentre quand même dans ce if.

    Ta condition est définie comme telle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_FILES['SoluceFile']))
    {
    //Traitement et tout ce qu'on veut
    }
    Sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else
    {
    // Code associé 
    }
    C'est dans cette dernière partie que tu dois intervenir pour sortir, justement, du if.

  8. #8
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Cool !

    Tu viens de modifier ton sujet, pas top pour s'y retrouver.

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Aaaaaah pardon je viens de saisir.

    Du coup effectivement, c'est plus clair.
    Je vais le faire sur le nom == null. (Effectivement +1 pour le var_dump, pas encore le reflexe)

    Merci à vous d'avoir pris le temps !

    (Sérieux j'ai changé le sujet ?? Pas fait exprès... )

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2011, 13h34
  2. Appel d'une fonction avec un Input text
    Par Delack dans le forum Langage
    Réponses: 7
    Dernier message: 02/02/2010, 13h49
  3. TeXnicCenter : fonction "Search > Find in files "
    Par bernardfroget dans le forum Editeurs / Outils
    Réponses: 1
    Dernier message: 14/12/2009, 20h06
  4. [Prototype] Plusieurs fonctions ajax dans une file d'attente
    Par majong dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 27/10/2009, 08h55
  5. gérer input file avec fonction javascript
    Par frboyer dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 16/04/2009, 16h17

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