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

jQuery Discussion :

Upload drag and drop jQuery - php


Sujet :

jQuery

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut Upload drag and drop jQuery - php
    Bonjour à tous,

    Je viens vers vous pour un coup de pouce pour finaliser mon travail. Je suis entrain de réaliser un système d'upload Drag and Drop avec du jQuery.
    J'ai fait tout mon traitement jQuery, ajax et php, je n'ai pas d'erreur. Et pourtant quand je glisse une image dans ma zone concernée, je ne vois rien qui s'affiche. Mon image n'est pas enregistrer non plus la base de données. Mon objectif est d’enregistrer mon image dans la base de données et en même temps l'afficher dans ma dropzone.

    J'ai besoin d'aide please!

    Merci par avance!

    Voici mon code dans 3 fichiers différents (index.php, script.js, et upload.php):

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="dropzone" style="width:600px; height:600px; border:3px dotted #000;">
    	<h3 class="droptext">Drag and Drop Images Here</h3>
    </div>
    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
    $(document).ready(function() {
    	$("div#dropzone").on('dragenter', function (e) {
    		e.preventDefault();
    	});
     
    	$("div#dropzone").on('dragover', function (e) {
    		e.preventDefault();
    	});
     
    	$("div#dropzone").on('drop', function (e) {
    		e.preventDefault();
    		var image = e.originalEvent.dataTransfer.files;
    		createFormData(image);
    	});
    });
     
    function createFormData(image) {
    	var formImage = new FormData();
    	formImage.append('userImage', image[0]);
    	uploadFormData(formImage);
    }
     
    function uploadFormData(formData) {
    	$.ajax({
    		url: "upload.php",
    		type: "POST",
    		data: formData,
    		contentType:false,
    		cache: false,
    		processData: false,
    		success: function(data){
    			$('#dropzone').append(data);
    	}});
    }
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    session_start();
    $row = $_SESSION['user_id'];
    $upload_dir = '/images/';
    if(is_array($_FILES)) {
    	if(is_uploaded_file($_FILES['userImage']['tmp_name'])) {
    		$cheminSource = $_FILES['userImage']['tmp_name'];
    		$cheminCible = $upload_dir.$_FILES['userImage']['name'];
                    if(move_uploaded_file($cheminSource, $cheminCible)) {
    			$q = array('mediaName'=>$cheminCible, 'mediaUrl'=>$upload_dir, 'idUser'=>$row['user_id']);
    			$req = $db->prepare('INSERT INTO medias SET media_name = :mediaName, media_url = :mediaUrl, user_id = :idUser');
    			$req->execute($q);
    		}
    	}
    }

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE IF NOT EXISTS `medias` (
      `media_id` int(11) NOT NULL AUTO_INCREMENT,
      `media_name` varchar(255) NOT NULL,
      `media_url` varchar(255) NOT NULL,
      `user_id` int(11) NOT NULL,
      PRIMARY KEY (`media_id`),
      KEY `fk_media_users1_idx` (`user_id`),
      KEY `media_url` (`media_url`),
      KEY `user_id` (`user_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

  2. #2
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 734
    Par défaut
    jour

    remplace le originalEvent par event c'est peut etre la cause quand a un affichage de l'image dans la zone une solution serait de la mettre en background en utilisant createObjectURL sa donnerait ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     var image =e.target.files;
     var affiche =e.target.files[0];
        if (affiche.type.match('image.*')) {
             var mama=window.URL.createObjectURL(affiche)
    	document.getElementById('dropzone').style.backgroundImage='url('+mama+')'
            createFormData(image);
       }

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Re Melka One,

    Merci d'avoir pris le temps de me répondre. Mais je ne comprend pas trop ton code. Dans quelle fonction dois-je le mettre.
    Car en le mettant comme ça, j'ai une erreur suivante: Uncaught ReferenceError: e is not defined.

    Merci!

  4. #4
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 734
    Par défaut
    dans l'evenement ondrop


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $("div#dropzone").on('drop', function (e) {
     e.preventDefault();
     var image =e.target.files;
     var affiche =e.target.files[0];
        if (affiche.type.match('image.*')) {
             var mama=window.URL.createObjectURL(affiche)
    	document.getElementById('dropzone').style.backgroundImage='url('+mama+')'
            createFormData(image);
       }
    	});
    normalement on devrait voir l'image qui s'affiche dans la zone de drop si c'est le cas et que l'image n'est toujour pas telechargé c'est que le probleme vient de la requete

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Re Melka One,

    J'ai une erreur avec ce code:

    Uncaught TypeError: Cannot read property '0' of undefined

    à la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var affiche = e.target.files[0];
    Merci de m’éclairer!

  6. #6
    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 : 54
    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
    C'est parce que le code proposé se base sur un objet Event JavaScript, or dans ta fonction, tu utilises un objet Event jQuery, qui ne possède pas les mêmes propriétés.
    Il faut revenir à l'événement d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ev = e.originalEvent;
    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

  7. #7
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 734
    Par défaut
    je pensait pas que Jquery pouvait interferer sur les evenement

  8. #8
    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 : 54
    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
    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

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Merci beaucoup,

    Mon image s'affiche bien. Par contre elle n'est pas enregistrer en base de données.
    J'ai vérifié ma requête SQL je n'ai fait d'erreur.

  10. #10
    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 : 54
    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
    Tout simplement parce que côté serveur, ce n'est pas un fichier que tu reçois mais un simple paramètre POST.
    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

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Re,

    Comment faire en sorte de recevoir un fichier côté serveur au lieu d'un paramètre POST?

    Merci!

  12. #12
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Re Bovino,

    Je ne comprend pas bien ce que tu veux dire par: Tout simplement parce que côté serveur, ce n'est pas un fichier que tu reçois mais un simple paramètre POST.

    Est-ce que tu peux m'expliquer pourquoi je n'envoie pas de fichier côté? Et comment le faire?

    Merci!

  13. #13
    Membre très actif
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 734
    Par défaut
    je vient de testé new FormData() et sa marche tres bien sa fonctionne de la même manière qu'un formulaire de plus le js me parait correcte donc pour la reception je te conseille de poser la question sur le forum php

  14. #14
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 161
    Par défaut
    Melka,

    Merci pour le conseil. J'ouvrirai un autre topic sur le forum php.

    A+

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

Discussions similaires

  1. Uploader multi-fichier Drag and Drop (Google Docs)
    Par LoicRossi dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 29/06/2011, 15h32
  2. Upload Drag and Drop
    Par omman95 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 24/01/2011, 17h28
  3. [1.x] [Propel] JQuery Drag and Drop Ordre Backend
    Par cacahuete85 dans le forum Symfony
    Réponses: 4
    Dernier message: 21/09/2009, 10h08
  4. Réaliser un drag and drop en php
    Par code man dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/02/2009, 14h39

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