Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2010, 23h23   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 82
Points : 11
Points : 11
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 :
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 :
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 :
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
nkordiko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 08h07   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 23h38   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 82
Points : 11
Points : 11
Autant pour moi.
Merci pour l'info
nkordiko est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h57.


 
 
 
 
Partenaires

Hébergement Web