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

AJAX Discussion :

Envoi fichier à MySQL en AJAX


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmarketer
    Inscrit en
    Juin 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2020
    Messages : 23
    Par défaut Envoi fichier à MySQL en AJAX
    Bonjour à tous et toutes,

    Je rencontre un problème pour envoyer des fichiers en AJAX à mysql, j'ai le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function envoyerfichier(){
        var variable = $("#fichier").val();
        $.ajax({
            url: "control/envoyer-fichier.php",
            type:"POST",
            data: "fichier="+variable,
        });
        document.getElementById('formulaire').submit();
    }
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form method="post" action="control/envoyer-fichier.php" id="formulaire" class="formulaire" enctype="multipart/form-data">
    <input type="file" name="fichier" id="fichier">
    <input type="submit" value="envoi" name="envoi" id="envoi">


    Sur control/envoyer-fichier.php je récupère la variable suivante:

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

  2. #2
    Membre averti
    Homme Profil pro
    Webmarketer
    Inscrit en
    Juin 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2020
    Messages : 23
    Par défaut oubli
    j'ai oublié une ligne avec un autre champ et le onclick pour déclencher la fonction:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="message" id="message" onKeyPress="if (event.keyCode == 13) envoyerfichier()" placeholder="  Votre message"/>

    Bref ça marche pas, peut être que je ne récupère pas la bonne variable sur envoyer-fichier.php je ne sais pas.

  3. #3
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    Tu ne peux pas envoyer un fichier via ajax sans l'objet FormData() et les propriétés contentType:false et processData:false.

    Ton code doit être ainsi :
    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
     
    function envoyerfichier(e){
        e.preventDefault();//obligatoire pour empêcher le formulaire d'être soumit avec la méthode classique
        let fd=new FormData();
        fd.append("fichier",$("#fichier").get(0).files)
        $.ajax({
            url: "control/envoyer-fichier.php",
            type:"POST",
            data: fd,//obligatoire
            contentType:false,//obligatoire
            processData:false//obligatoire
         });
    }
    $(document).ready(function(){
       $("#formulaire").submit(envoyerFichier);//attacher l'événement submit au <form id="formulaire">
    });
    Regarde l'exemple d'ajax en bas de page.

  4. #4
    Membre averti
    Homme Profil pro
    Webmarketer
    Inscrit en
    Juin 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2020
    Messages : 23
    Par défaut Merci mais ça ne marche pas
    Ca n'a pas l'air de marcher. Qu'est ce que je récupère en php comme variable: $_FILES['fichier']['tmp_name'] ?

    Autres questions:
    -si j'envoi un formulaire classique ça marche mais après à chaque fois que j'envoi un message il y'a la pièce jointe que j'avais chargé, comment la retirer ?
    -et comment faire apparaitre une popup quand la pièce jointe=le fichier est chargé ? (bon je connais le alert("la pièce jointe a bien été chargée"); mais la déclencher quand le fichier est chargé ça je sais pas faire).

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    Bonjour,

    Si, cela fonctionne, et je viens de tester en corrigeant quelques erreurs +l'ajout du bouton <input type="reset" /> pour vider le formulaire :
    Code html : 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
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="UTF-8" />
    	<!-- jQuery -->
    	<script
                src="https://code.jquery.com/jquery-3.5.1.js"
                integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
                crossorigin="anonymous">
            </script>
    	<script>
                    function envoyerfichier(e){
                            e.preventDefault();//obligatoire pour empêcher le formulaire d'être soumit avec la méthode classique
                            let fd=new FormData();
                            fd.append("fichier",$("#fichier").get(0).files[0])
                            $.ajax({
                                    url: "control/envoyer-fichier.php",
                                    type:"POST",
                                    data: fd,//obligatoire
                                    contentType:false,//obligatoire
                                    processData:false//obligatoire
                            })
                            .done(function(data){//en cas de succès
                                    console.log('done :',data);//ouvre la console du navigateur pour voir cette ligne
                            })
                            .fail(function(erreur){//en cas d'erreur
                                    alert("Erreur ajax :"+erreur);
                            });
                    }
                    $(document).ready(function(){
                       $("#formulaire").submit(envoyerfichier);//attacher l'événement submit au <form id="formulaire">
                    });
            </script>
    </head>
    <body>
    	<form method="post" action="control/envoyer-fichier.php" id="formulaire" class="formulaire" enctype="multipart/form-data">
    		<input type="file" name="fichier" id="fichier">
    		<input type="submit" value="envoi" name="envoi" id="envoi">
    		<input type='reset' value="Vider le formulaire" />
    	</form>
    </body>
    </html>

    Et le fichier envoyer-fichier.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php 
    if(isset($_FILES["fichier"])){
      echo "tmp_name :".$_FILES["fichier"]['tmp_name'];
    }else{
    	echo "aucun fichier!";
    }

  6. #6
    Membre averti
    Homme Profil pro
    Webmarketer
    Inscrit en
    Juin 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2020
    Messages : 23
    Par défaut Miracle !
    Ok ça marche. Un grand merci à toi Toufik, grand maître de l'AJAX !

    Ne reste plus que ma pop up quand le fichier est chargé car j'ai mis une épingle à la place de l'input donc je n'ai pas le nom du fichier chargé qui s'affiche.

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

Discussions similaires

  1. Envoie requete MySQL via Ajax
    Par tony12354 dans le forum AJAX
    Réponses: 1
    Dernier message: 05/12/2015, 22h09
  2. [XL-2010] Problème envoie fichier, liste déroulante
    Par XiaoGouGou dans le forum Excel
    Réponses: 3
    Dernier message: 14/06/2013, 14h57
  3. Problème importation fichier MYSQL
    Par Budy123 dans le forum Langage
    Réponses: 25
    Dernier message: 21/12/2009, 17h01
  4. Problême envoi base mysql
    Par WDKyle dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/05/2009, 13h26
  5. Problème exportation fichier jar + mysql
    Par oliwan dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 07/05/2006, 20h58

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