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 :

Récupération des champs file multiples et dynamiques


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Points : 151
    Points
    151
    Par défaut Récupération des champs file multiples et dynamiques
    bonjour a tous,

    Voici mon probleme,

    J'ai un formulaire qui me permet d'uploader une photo et un script Js qui me permet d'ajouter des inputs pour uploader d'autres photos.

    voici le formulaire et le script :
    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
    <html>
    <head>
    <title>Document sans nom</title>
    <script language="javascript">
    <!--
    function create_champ(i) 
    {
    var i2 = i + 1;
     
    document.getElementById('input_'+i).innerHTML = '<div id="champs_'+i+'">Fichier '+i+' :<input type="file" name="photo_'+i+'"></div></span>';
    document.getElementById('input_'+i).innerHTML += (i <= 10000) ? '<span id="input_'+i2+'"><input class="input2" type="button" onClick="javascript:create_champ('+i2+')" value="Insérer un autre champ"></span>' : '';
    }
    -->
    </script>
    </head>
    <body>
    <form method='POST' action='upload.php' name="upload">
      <div id="champs_1">
        <div align="left"> Photo n°1 :
          <input name="photo_1" type="file"/>
        </div>
      </div>
      <div align="left"> <span id="input_2">
        <input name="button" type="button" class="input2" onClick="javascript:create_champ(2)" value="Ins&eacute;rer un autre champ">
        </span></div>
    </form>
    </body>
    </html>
    Mon probleme, dans la page upload.php, je ne sais pas comment recuperer les différents input car l'utilisateur peut uploader 3, 4 ou meme 100 photos (donc 3 , 4 ou 100 input)

    est ce que quelqu'un pourrait-il m'aider??

    merci d'avance

    Cordialement

  2. #2
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    J'ai 2 solutions :
    La première, tu testes l'existence des variables $_POST['photo_i'] et tu détermines ton i maximum comme ça, c'est assez moyen à mon avis.
    La seconde, tu modifies un peu ton script pour donner le nom photo[] à ton input, et ensuite tu peux lire tous les éléments dans la variables $_POST['photo']

    Il est important dans ton cas de différencier le name et l'id de tes éléments de formulaire.

    Code non testé :
    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
    <html>
    <head>
    <title>Document sans nom</title>
    <script language="javascript">
    <!--
    function create_champ(i) 
    {
    var i2 = i + 1;
     
    document.getElementById('input_'+i).innerHTML = '<div id="champs_'+i+'">Fichier '+i+' :<input type="file" name="photo[]"></div></span>';
    document.getElementById('input_'+i).innerHTML += (i <= 10000) ? '<span id="input_'+i2+'"><input class="input2" type="button" onClick="javascript:create_champ('+i2+')" value="Insérer un autre champ"></span>' : '';
    }
    -->
    </script>
    </head>
    <body>
    <form method='POST' action='upload.php' name="upload">
      <div id="champs_1">
        <div align="left"> Photo n°1 :
          <input name="photo_1" type="file"/>
        </div>
      </div>
      <div align="left"> <span id="input_2">
        <input name="button" type="button" class="input2" onClick="javascript:create_champ(2)" value="Ins&eacute;rer un autre champ">
        </span></div>
    </form>
    </body>
    </html>

  3. #3
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Rajoute déjà un bouton submit en fin de formulaire et ensuite tu récupère dans ta variable $_POST tes valeurs comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $photo1= $_POST['photo_1'];
    $photo2= $_POST['photo_2']; etc ...
    IL y a d'autres méthode pour faire à peut près la même chose, ici ou

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par riete Voir le message
    Rajoute déjà un bouton submit en fin de formulaire et ensuite tu récupère dans ta variable $_POST tes valeur comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $photo1= $_POST['photo_1'];
    $photo2= $_POST['photo_2']; etc ...

    Je ne peux pas faire comme ca je ne connais pas a l'avance le nombre de photo

  5. #5
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par leclone Voir le message
    Je ne peux pas faire comme ca je ne connais pas a l'avance le nombre de photo
    Regarde bien les 2 liens que je t'ai proposés, lls traitent de ce sujet (il me semble).
    Sinon tu peux simple faire:Ce qui te donnera le nombre d'images qui sont a uploader.

  6. #6
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Sinon tu peux simple faire:
    count($_POST);

    Sauf si $_POST contient d'autres éléments. Mieux vaut utiliser la syntaxe avec des tableaux que j'ai décrite plus haut.

  7. #7
    Invité
    Invité(e)

Discussions similaires

  1. [MySQL] foreach - récupération DES champs [files]
    Par Delvauxo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/12/2011, 14h02
  2. Récupération des champs dynamique js en php
    Par sfarouk dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/03/2011, 17h48
  3. [MySQL] Récupération données champ sélection multiple
    Par Manuxy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2006, 11h30
  4. [Tableaux] récupération des champs par $_POST
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 11/05/2006, 17h22
  5. Récupération des champs d'un form dans un autre
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 22/06/2004, 10h31

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