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 :

Type text interactif


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut Type text interactif
    Bonjour,

    Voilà j'ai créer un bouton ey un input type text. Le bouton au click premet d'ouvrir un eboite de dialogue pour rechercher un fichier sur mon ordinateur. Le input qiant à lui va simplement référer le fichier quià été sélectionné.

    Bref, jusque là, cela marche, le seul problème c'est que je suis obligé de recharger ma page web pour que le nouveau fichier sélectionné puisse être prise en compte.

    D'ou ma question yy aurait t'il un moyen de contourner cela, pour que mon champ text se met à jour intéractivement dès que j'ai sélectionné mon fichier ?

    Voilà mon code

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type=button value="ouvrir un fichier" onclick="getFile();">
    <input id='file' type="text" value=""/>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function getFile()
    {
      fileInput.click();
      var fileName = fileInput.value;
      return fileName ;
     
    }
    document.getElementById('file').value=getFile();

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    A défaut j'ai trouvé cela :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div id="divHidden" style="visibility: hidden; width: 0px; height: 0px">
    <input type=file id="fileInput">
    </div>
    <form name="frm" style="display:'none'">
    <input type="file" name="fic">
    <input type="reset" name="rst">

    Cela marche très bien, seul petit point noir, c'est que le input me renvoie tout le chemin d'accès vers le fichier alors que j'aurais préféré seulement le fichier.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 587
    Par défaut
    Tu pourrais simplement réagir au onchange de l'input file -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Ok, mais je sais pas du tout comment on fait cela .

    Mais bon sinon j'ai trouvé que avec cela
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="file" name="fic">
    <input type="reset" name="rst">

    Cela marche, il me suffit de récupérer ensuite le "text" qui y a dedans en php à l'aide de cela

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['fichier']['name']

    Cela semblle marcher, dans la discussions que j'ai trouvé sur internet, mais chez moi ça marche pas d'autant plus que la doc php sur le $_FILES m'aide pas plus je comprend pas.

    N.B: maintenant si pour l'iinstant je n'y arrive pas, je préfère opté pour la méthode php, pour la simple et bonne raison que je souhaite récupérer le "text" vers le fichier source pour y appliquer des traitement en php.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut Nom de fichier avec $_FILES
    Bonjour,

    J'ai testé le code basique qui suit qui consiste à récupérer le "text" qu'il y a dans mon input type 'files' et à y prendre que le nom du fichier, ce qui nous donne ceci

    Partie HTML
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name="frm" method="post" action="postfile.php" enctype="multipart/form-data">
    <input type="file" name="fichier" ><br>
    <input type="submit" value="Envoyer">
    </form>

    Partie PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (!empty($_POST['fichier']['name'])){
             $tableau = explode ('/',$_FILES['fichier']['name']); // découpe le nom aux '/'
             echo $tableau[count($tableau)-1]; // affiche le dernier;
    } 
    else{
    echo "C'est vide";
    }
    ?>
    Hors malheureusement cela ne marche pas, le champs contenant le chemin du fichiers reste concidérer comme vide alors que celui-ci est plein.

    Quelqu'un peut m'aider, svp

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as mis $_POST['fichier'] au lieu de $_FILES['fichier']Mais sinon je ne comprends pas ou tu veux en venir : $_FILES['fichier']['name'] contient le nom du fichier seulement ; le chemin local entier n'est pas transmis.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par sabotage
    le chemin local entier n'est pas transmis.
    Et ceci parce que ça n'a aucune utilité une fois sur le serveur...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tu as mis $_POST['fichier'] au lieu de $_FILES['fichier']Mais sinon je ne comprends pas ou tu veux en venir : $_FILES['fichier']['name'] contient le nom du fichier seulement ; le chemin local entier n'est pas transmis.
    Désolé j'avais mal recopié mon code , mais j'avais bien mis mon $_FILES; toujours est t'il, cela ne marche toujous pas, car je souhaite savoir via php si mon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="file" name="fichier" >
    Est vide ou pas, et si il n'est pas vide je récupère le chemin du fichier pour le traiter, ce qui nous donne cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (!empty($_FILES['fichier']['name'])){
             $tableau = explode ('/',$_FILES['fichier']['name']); // découpe le nom aux '/'
             echo $tableau[count($tableau)-1]; // affiche le dernier;
    } 
    else{
    echo "C'est vide";
    }
    Hors quoi que je fasse même quand mon input est "plein", cela m'affiche vide;

    Donc pourquoi ça beug ?
    ou
    Comment puis je enfin récupérer le chemin d'accès de mon input pour pouvoir le traiter

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    je récupère le chemin du fichier pour le traiter
    Comme on te l'a dit, il n'y a pas de chemin du fichier, uniquement son nom.

    si tu obtiens "C'est vide" il est probable que tu as une erreur d'upload que tu trouveras dans $_FILES['fichier']['error']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Bon je laisse tomber, même en faisant cela:

    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
     
    <form method="post">
    <input type="file" name="toto">
    <input type="submit" value="Envoyer">
    </form> 
     
    <?php 
    if (!empty($_FILES['toto']['name'])){
           	echo  "ok";
    } 
    else{
    $erreur=$_FILES['toto']['error'];
    echo $erreur;
    echo "c'est vide";
    }
    ?>
    Cela ne marche pas, aucun erreur envoyé, juste le c'est vide ecris quoi que je fasse;

    Bref j'abandonne

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il faut quand même préciser l'attribut enctype pour la balise <form> si tu veux transmettre un fichier.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut
    Bonjour,

    Hum, c'est dommage d'abandonner !
    Juste une petite remarque, pour jouer avec les fichiers lors de l'envoi d'un formulaire, j'utilise
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    enctype="multipart/form-data"
    dans mes formulaires ( à placer dans la balise <form> )

    Je ne sais pas si cela aidera à régler ton soucis mais bon...

    Bonne journée !

    Edit : Grillé ! :-)

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Ok merci, j'ai oublié de précisé, j'abandonne php mais pas javascript lol.

    D'ailleurs, j'ai enfin réussi à faire ce que je souhaitais mais tout ça en javascript, voilà le code d'ailleurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <input type="file" name="toto" id="toto" onChange="recup();">
    function recup(){
    if (document.getElementById('toto').value != null){
     
     var tb=document.getElementById('toto').value;
     alert(tb);
    }
    else {
        alert("pas ok");
    }
    }
    Tout bête finalement et j'ai ainsi enfin recupérer le nom du fichier qui est chargé

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Heu... d'accord, mais ça va te servir à quoi au juste ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    Ben cela va me permettre de récupérer le nom du fichier, de le transformer pour qu'il devienne une variable php, pour le mettre ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Ouverture du fichier en lecture seule
    $contenu_fichier = file_get_contents('mesures.txt');
     
    //Si on a réussi à ouvrir le fichier
     
    if ($contenu_fichier)
    {
    //instruction de récupération des données dans le fichier txt
     
    }
    Ainsi je remplace le mesures.txt par ma variable php ci-dessus.

  16. #16
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Quoi ?

    Tu crois que file_get_contents() va être capable d'aller lire un fichier sur un poste client ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 141
    Par défaut
    OUi puisque ce n'est pas un client ici, il s'agit d'un code qui sera traité en interne sur une machine, donc pas de client tout est en localhost en quelque sorte

  18. #18
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 587
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 587
    Par défaut
    Bon, mais ça le navigateur ne peut pas le deviner, ou plutôt, il ne sait pas que le site web et le disque dur travaillent pour la même personne.

    Pour lui, il y a bel et bien client/serveur, et donc il ne transmettra pas d'information inutile au fonctionnement client/serveur. Pas de chemin de fichier, seulement le nom.

    Pour faire ce genre de choses, il va falloir se tourner vers des applets ou quelque chose de ce genre. Le web n'est pas fait pour ça.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Problème champs de type texte.
    Par Le-Cortex dans le forum Access
    Réponses: 7
    Dernier message: 06/01/2005, 14h42
  2. [Doublons] Unicité sur un champ de type TEXT
    Par PyRoFlo dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/09/2004, 09h56
  3. [access] champs type text sur un pc blob sur un autre
    Par Harry dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/07/2004, 09h30
  4. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15
  5. [UPDATE] Mise à jour d'un type text
    Par nico1492 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/01/2004, 13h26

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