| 12
 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
 
 |  
<?php
	// fonction permettant de transférer la photo envoyée depuis le navigateur du client sur le serveur
	// nous devons vérifier que le fichier est bien sur le serveur et qu'il ne dépasse pas la taille max.
	//session_start(); Notice: A session had already been started - ignoring session_start()	
 
		// création des variables permettant d'envoyer la photo sur le serveur
		$estEnvoye = false; // booléen nous permettra de savoir si le fichier a été envoyé ou pas
		$photo_blob = '';
		$photo_taille = 0; // on initialise la taille de la photo
		$photo_type = '';
		$photo_nom = '';
		$taille_max = 250000; // taille maximale de la photo
 
		// nous effectuons un test sur l'envoi du fichier avec la variable superglobale $_FILES
		// Attention : $_FILES[][] est un tableau et non une fonction 
		// si la photo est téléchargée elle se trouvera dans le répertoire temporaire C:\xampp\tmp 
		$estEnvoye = is_uploaded_file($_FILES['photo']['tmp_name']); // on réaffecte la valeur de la variable booléene
		if(isset($_POST['desc']) && !empty($_POST['desc']) && isset($_FILES['photo']['name']) && !empty($_FILES['photo']['name']) && isset($_SESSION['id'])) {
			$id = $_SESSION['id']; // id du producteur stocké en base
			$photo_desc = $_POST['photo_desc'];
 
			if(!$estEnvoye) {
				// on affiche un message				
				$reponse = 'Problème de transfert de la photo';
				echo $reponse;				
			} else {
				// la photo a bien été reçue, on réaffecte la valeur de la taille de la photo
				$photo_taille = $_FILES['photo']['size'];
				// on vérifie la taille de la photo
				if($photo_taille > $taille_max) {
					echo 'La photo est trop volumineuse !';
				} 		
				// on affecte le type de la photo, et le nom de cette dernière 
				$photo_type = $_FILES['photo']['type'];	
				$photo_nom = $_FILES['photo']['name'];
 
				// on inclus le script de connexion à la base de données
				include_once 'includes/inc_connexion.php'; 
				$conn=opendb_conn(); // on se connecte à la Base de données	
				// on utilise la fonction file_get_contents() permet de passer le contenu du fichier
				// directement dans une variable
				$photo_blob = file_get_contents ($_FILES['photo']['tmp_name']);
				$photo_blob = addslashes($photo_blob); // on échappe le contenu binaire du fichier
 
				/** partie traitant l'insertion des photos dans la table des photos */				
				// création de la requête 
				$req = 
					"insert into photos(photo_id,photo_nom,photo_taille,photo_type,photo_desc,photo_blob,idproducteur) 
						values('',:photo_nom,:photo_taille,:photo_type,:photo_desc,:photo_blob,:idproducteur)";
				// on prépare le traitement de la requête
				$stm=$conn->prepare($req);
				// Tentative d'insertion en base d'une photo en utilisant le mode transactionnel
				// bloc try ... catch()
				try {
					$conn->beginTransaction();
					// on associe les marqueurs nommés avec les variables crées plus haut
					$stm->bindParam(':photo_nom', $photo_nom, PDO::PARAM_STR);
					$stm->bindParam(':photo_taille', $photo_taille, PDO::PARAM_STR);
					$stm->bindParam(':photo_type', $photo_type, PDO::PARAM_STR);
					$stm->bindParam(':photo_desc', $photo_desc, PDO::PARAM_STR);
					$stm->bindParam(':photo_blob', $photo_blob, PDO::PARAM_STR);
					$stm->bindParam(':idproducteur', $id, PDO::PARAM_INT);
					// exécution de la requête
					$stm->execute();			
					// on commit
					$conn->commit();
					$reponse = 'ok'; // pour le test de l'appel Ajax avec JSON															
				} catch(PDOException $e) {
					// on rollback si cela se passe mal
					$conn->rollback();
					// on affiche un message d'erreur
					print '</br>';
					print "Erreur lors de l'insertion en base !: " . $e->getMessage() . "</br>";
				} // fin bloc try ... catch()
 
			} // fin if() ... else
		} else {    
			$reponse = 'Tous les champs ne sont pas parvenus';
		} // fin if() ... else
		$array['reponse'] = $reponse;
		echo json_encode($array); // retourne le représentation JSON d'une valeur
 
		print '<pre>';	
		print_r($_FILES);
		print_r($_POST); // pour le débogage
		print '</pre>';
?> | 
Partager