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 fichier et insertion mysql


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut Upload fichier et insertion mysql
    Bonjour,
    Je suis débutant en jquery et j'essaie de réaliser une admin.
    A l'aide d'un formulaire je renseigne ma base de données et je souhaite également uploader des fichier c'est là ou les problèmes commencent.

    L'insertion des données de mon formulaire se font bien sauf les données relatives à l'upload du fichier ce n'est pas un problème du nom de champ car quand je passe celui en champ text standard l'insertion dans la base de données mysql se fait.

    Je vous joins mon code se sera plus explicite.
    Pour info ce formulaire est dans un tab jquery

    Le php avec le formulaire en question

    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
    <form id="formSingles" action="newSinglesTest.php" method="post" enctype="multipart/form-data">
    <table>					
     <tr>
      <th>Selectionnez Votre Artiste:</th>
      <td><select name="artists" id="artists">
      <option></option>
    <?
    $query01="SELECT * FROM artists ORDER BY art_name";
    $result01=mysql_query($query01);
    while($val01=mysql_fetch_array($result01)) {?>
      <option id="id_art" value="<?echo $val01['art_id'];?>"><?echo $val01['art_name'];?></option>
    <?
    }
    ?>
     
      </select></td>
     </tr>
     <tr>
      <th>Entrez Votre Single:</th>
      <td><input type="text" name="single" value="" /></td>
      </tr>
      <tr>
       <th>Pochette Single</th>
       <td><input type="file" name="single_cover" size="50" /></td>
      </tr>
      <tr>
       <th>Année de Sortie</th>
       <td><input type="text" name="single_release_date" /></td>
      </tr>
      <tr>
       <th></th>
       <td><input class="submitButton" type="submit" value="Valider" /></td>
      </tr>
    </table>
    </form>
    Le php pour l'insertion mysql et upload

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php include_once("connexion.php"); ?>
    <?php
    mysql_select_db($database, $base);
     
    $todayis = date("Y/m/d"); 
     
     
     
    if(!empty($_POST['single'])){
    $query_single = "INSERT INTO singles(single_id, single_name, single_art, single_cover, single_release_date, single_date_added, single_status) VALUES ('NULL', '".$_POST['single']."', '".$_POST['artists']."', '".$_FILES['single_cover']."', '".$_POST['single_release_date']."', '$todayis', '1' )";
     
    $single = mysql_query($query_single, $base);
    $id = mysql_insert_id();
    // Si il y a un fichier à mettre en ligne, on l'upload
        if(!empty($_FILES["single_cover"])) 
        {
            // Creation d'un nouveau nom de fichier sous la forme "cover_XXX.jpg"
            $fichier = "cover_single_".$id.".jpg";
            echo $fichier;
     
    	 // on recupere largeur/hauteur de l'image
    	 list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES["single_cover"]["tmp_name"]);
             // on calcule le ratio pour savoir si elle est en portrait ou paysage
    	 $ratio = $largeur / $hauteur;
     
    	 // $monExtension = strtolower(strrchr($_FILES["album_cover"]["name"], '.'));
     
    	 $uploaddir = "/home/nats/admin_radio/radio/covers/";
    	 $uploaddir2 = "/home/nats/admin_radio/radio/covers/resized/";
     
    	 $uploadfile=$uploaddir.$fichier;
    	 $uploadfile2=$uploaddir2.$fichier;
     
             $src_img = imagecreatefromjpeg($_FILES["single_cover"]["tmp_name"]); 
     
    	 // Exemple de resize en 50 de large maxi
    	 $new_w = 50; 
    	 $new_h = 50/$ratio; 	
    	 $dst_img = imagecreatetruecolor($new_w, $new_h);
     
    	 imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));	
    	 imagejpeg($dst_img,$uploadfile2,90);
     
            //Copy the file to some permanent location
    	if (move_uploaded_file($_FILES["single_cover"]["tmp_name"], $uploadfile)) 
            {
              echo "Cover Uploadee et Resizee";
    		$query01="UPDATE singles SET single_cover = '$fichier' WHERE single_id = '$id'";
    		$result01=mysql_query($query01, $base);
     
            }
            else
            {
              echo "Cover Non Uploadee";
            }
        }    
     
     
     
    if($single == true){
     
        $query_single = sprintf("SELECT * FROM singles WHERE single_id = $id");
    	$single = mysql_query($query_single, $base) or die(mysql_error());
    	$row_single = mysql_fetch_assoc($single);
    	$result = array();
     
    	do {  
            $result[] = $row_single;
        } while ($row_single = mysql_fetch_object($single));
    		echo '{"single":'.json_encode($result).'}';
    }
    }
    else{
        echo json_encode("Veuillez Entrer Un Single");
    }
     
    ?>
    Pour finir le js

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    $(document).ready(function(){
    	addSingle.init();
    });
     
    var addSingle = {
    	$submitSingle : null,
    	$formSingles : null,
    	$singleResponse : null,
    	$modifySingleLink : null,
    	$deleteSingleLink : null,
    	$modifySingleBloc : null,
    	$formSingleModify : null,
    	$modifySingleConfirmation : null,
    	$formSingleDelete : null,
    	$deleteSingleConfirmation : null,
     
    	init : function(){
    		$("#tabs").tabs();
    		this.initSingleManager();
    	},
     
    	initSingleManager : function(){
    		this.$formSingles = $("form#formSingles");
    		this.$submitSingle = this.$formSingles.find("input.submitButton");
    		this.$singleResponse = $("#singleResponse");
    		this.$modifySingleLink = $("#modifySingle");
    		this.$deleteSingleLink = $("#deleteSingle");
    		this.$modifySingleBloc = $("#modifySingleBloc");
    		this.$deleteSingleBloc = $("#deleteSingleBloc");
    		this.$formSingleModify = $("form#formSingleModify");
    		this.$formSingleDelete = $("form#formSingleDelete");
    		this.$modifySingleConfirmation = this.$singleResponse.find(".modifySingleConfirmation");
    		this.$deleteSingleConfirmation = this.$singleResponse.find(".deleteSingleConfirmation");
     
    		this.$submitSingle.click(function(event){
    			event.preventDefault();
    			addSingle.$singleResponse.hide();
    			addSingle.$modifySingleConfirmation.hide();
    			addSingle.$formSingleDelete.hide();
    			addSingle.$deleteSingleConfirmation.hide();
    			ajaxRequest(addSingle.$formSingles, "addSingle.handleSinglesResponse(response)");
    		});
     
    		this.$modifySingleLink.click(function(event){
    			event.preventDefault();
    			addSingle.$modifySingleConfirmation.hide();
    			addSingle.$deleteSingleBloc.hide();
    			addSingle.$formSingleModify.show();
    			addSingle.$modifySingleBloc.show();
    		});
     
    		this.$deleteSingleLink.click(function(event){
    			event.preventDefault();
    			addSingle.$modifySingleBloc.hide();
    			addSingle.$deleteSingleBloc.show();
    			addSingle.$formSingleDelete.show();
    		});
     
    		this.$deleteSingleBloc.find(".submitButton").click(function(event){
    			event.preventDefault();
    			addSingle.$modifySingleBloc.hide();
    			ajaxRequest(addSingle.$formSingleDelete, "addSingle.handleSinglesDeleteResponse(response)");
    		});
     
    		this.$modifySingleBloc.find(".submitButton").click(function(event){
    			event.preventDefault();
    			ajaxRequest(addSingle.$formSingleModify, "addSingle.handleSinglesModifyResponse(response)");
    		});
     
    		this.$modifySingleBloc.find(".cancelButton").click(function(event){
    			event.preventDefault();
    			addSingle.$modifySingleBloc.hide();
    		});
     
    		this.$deleteSingleBloc.find(".cancelButton").click(function(event){
    			event.preventDefault();
    			addSingle.$deleteSingleBloc.hide();
    		});
     
    	},
     
    	handleSinglesResponse : function(json){
    		var datas = json.single[0];
    		this.$singleResponse.find(".insertedSingleName, .deletedSingleName").text(datas.single_name);
    		this.$singleResponse.find(".insertedSingleCover, .deletedSingleCover").data(datas.single_cover);
    		this.$singleResponse.find(".insertedSingleId, .deletedSingleId").text(datas.single_id);
    		this.$singleResponse.find(".singleModifyField").val(datas.single_name);
    		this.$singleResponse.find(".singleIdField").val(datas.single_id);
    		$("#introSingle").show();
    		this.$singleResponse.show();
    	},
     
    	handleSinglesModifyResponse : function(json){
    		var datas = json.single[0];
    		this.$singleResponse.find(".modifiedSingleName, .deletedSingleName").text(datas.single_name);
    		this.$singleResponse.find(".modifiedSingleId").text(datas.single_id);
    		this.$formSingleModify.hide();
    		this.$modifySingleConfirmation.show();
    	},
     
    	handleSinglesDeleteResponse : function(json){
    		this.$formSingleDelete.hide();
    		this.$deleteSingleConfirmation.show();
    		$("#introSingle").hide();
    	}
    }
     
    function ajaxRequest(formObj, callback){
    	$.ajax({
    	   type: "POST",
    	   url: formObj.attr('action'),
    	   data: formObj.serialize(),
    	   dataType : "json",
    	   success: function(response){
    	     eval(callback);
    	   }
    	 });
    }
    Ce que je ne comprends c'est que même quand je mets des <echo> tout bête dans mon php mon script se fige et il ne se passe rien tout comme quand je teste avec des try et catch pour voir ou ça bloque.

    Pour finir je voulais également faire afficher veuillez entrer un single(cf le php d'insertion) si je valide mon formulaire à vide et il ne passe rien ce qui reprend mon problème au niveau des echo.

    J'espère avoir été assez clair, veuillez m'excuser je suis débutant et vous remercie d'avance.

    Je suis à votre disposition pour toutes autres infos.

    Cordialement,

    Nkordiko

  2. #2
    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
    Mille fois traité

    Il n'est pas possible de récupérer et donc d'envoyer le contenu d'un champ file via AJAX.
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Par défaut
    Autant pour moi.
    Merci pour l'info

Discussions similaires

  1. [MySQL] upload fichier + création répertoire + MySQL
    Par olivier1209 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/05/2011, 14h19
  2. [MySQL] Fromulaire pour upload fichier + insertion dans la base de données MySQL
    Par WPH2009 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2009, 21h09
  3. insertion de fichier texte dans mysql
    Par houssamux dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/03/2008, 13h42
  4. insertion un fichier texte dans mysql
    Par houssamux dans le forum Requêtes
    Réponses: 9
    Dernier message: 27/03/2008, 13h31
  5. download et upload des fichier avec JSP & mysql
    Par MSM_007 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/07/2006, 15h20

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