La communauté ALL HTML c'est 58642 membres à ce jour dont 3 inscrits aujourd'hui et 40 depuis une semaine.
liste des forums liste des discussions Participer à la discussion
Message publié le vendredi 29 juin 2007 à 13 h 58 par elizabeth. les pieds sur terre et la tête dans les étoiles Le code permet donc à l'internaute de charger un fichier .jpg d'une taille maxi de 2048*2048 pixels. Cette image est renommée en fonction du timestamp de façon à être unique et redimentionnée proportionnellement dans la taille que vous voulez, avant d'être copiée dans un dossier que vous définissez également.
Ensuite, une vignette est générée proportionnellement, dans la taille que vous voulez aussi et copiée dans le dossier de votre choix. Elle est renommée du même nom que la grande (le timestamp) avec un "ptt" accolé pour être sûr de ne pas se mélanger si un jour vous mettez tout dans le même dossier.
Le code incrémente ensuite ma base de données, avec les noms de la petite et la grande image.
Voici la hyérarchie du totoriel proposé :
- un dossier "Connections" contenant mon fichier de connexion anpot.php,
- un dossier "admin" avec le fichier contenant code qui suit ci-dessous (upload.php)
- un fichier ajout-confirm.php qui est appelé quand tout est exécuté avec succès un dossier "sources" contenant le dossier "ptt" et "grd".
La base de données est nommée "image" avec les champs id, photoptt, photogrd.
Voilà, c'est un code imparfait et probablement maladroit, néanmoins il fonctionne bien et je serais ravie d'y apporter, grace à votre aide, les améliorations qui vous paraissent nécessaires, et notamment la possibilité de traiter aussi les sources en format gif (je suis preneuse si quelqu'un a une idée, j'ai pas réussi) Merci à ceux qui m'ont aidé, et j'espère à mon tour faire des heureux...
<?php require_once('../Connections/anpot.php'); ?> <?php // //************************ pour l'upload *********************** // à enlever chez free : set_time_limit(0); // pour autoriser la taille d'upload au niveau du php.ini ini_set("post_max_size","52428800"); ini_set("memory_limit","52428800"); ini_set("upload_max_filesize","52428800"); //valeur en octets // Repertoire de stockage de la grande image, chemin par rapport au fichier d'upload (celui-ci) $dossier_grd = "../sources/images/grd"; // Repertoire de stockage de la petite image, chemin par rapport au fichier d'upload (celui-ci) $dossier_ptt = "../sources/images/ptt"; // Poids max autorisé par le serveur $MaxSize = 52428800; // Largeur max de l'image en pixels autorisé à l'upload $Maxwidth = 2048; // Hauteur max de l'image en pixels autorisé à l'upload $Maxheight = 2048; // Type de fichier autorisé : seulement les jpg (si vous savez autoriser les gifs ça m'intéresse) $ValidType = array("image/pjpeg"=>"jpg","image/jpeg"=>"jpg"); // nouveau nom de la grande image, ici en fonction du timestamp pour qu'il soit tjrs unique. $NomImage = time(); //*********************** fin pour l'upload ******************** $up1 = false; $up2 = false; $upload = false; //************************************************************** function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } $editFormAction = $_SERVER['PHP_SELF']; if (isset($_SERVER['QUERY_STRING'])) { $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']); } //************************************************************** photo ************* if (!empty($_POST['fichier'])) { $up1 = false; $up2 = false; // ******************* pour la grande photo ******** // Contrôle des messages d'erreur if(!isset($_FILES['fichier'])) exit("Fichier absent <br><br><a xhref='javascript:history.back()'>[Charger une nouvelle image]</a>"); if($_FILES['fichier']['size'] > $MaxSize) exit("Image trop lourde <br><br><a xhref='javascript:history.back()'>[Charger une nouvelle image]</a>"); $infos_img = getimagesize($_FILES['fichier']['tmp_name']); if(($infos_img[0] >= $Maxwidth) & ($infos_img[1] >= $Maxheight)) exit("Vous avez dépassé la dimension maximum autorisée qui est de $Maxwidth*$Maxheight pixels <br><br><a xhref='javascript:history.back()'>[Charger une nouvelle image]</a>"); $ext = ""; if(array_key_exists($_FILES['fichier']['type'],$ValidType)) $ext = $ValidType[$_FILES['fichier']['type']]; if(empty($ext)) exit("Type de fichier invalide <br><br><a xhref='javascript:history.back()'>[Charger une nouvelle image]</a>"); // Vérification de l'upload if(!move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier_grd."/".$NomImage.".".$ext)) { exit("l'upload a échoué <br><br><a xhref='javascript:history.back()'>[Charger une nouvelle image]</a>"); }else{ // Création de la grande photo *************************************************************** $image_mini=$dossier_grd."/".$NomImage.".".$ext; $fichierSource = $image_mini; } // Définition du format de l'image if ($infos_img[0] > $infos_img[1] ) { // si la largeur est plus grande que la hauteur : Format paysage $largeurDestination = 440; $hauteurDestination = 440 * ($infos_img[1] / $infos_img[0]) ; }elseif ($infos_img[1] > $infos_img[0] ) { // si la hauteur est plus grande que la Largeur : Format portrait $hauteurDestination = 440; $largeurDestination = 440 * ($infos_img[0] / $infos_img[1]) ; }else if ($infos_img[1] == $infos_img[0] ) { // si la largeur est égale à la hauteur : Format carré $largeurDestination = 440 ; $hauteurDestination = 440; } //Crée l'image vide avec les dimensions $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination) or die ("Erreur lors de la création de l'image miniature"); //Prends l'image d'origine $source = ImageCreateFromJpeg($fichierSource); //Redimensionnement de L'image $largeurSource = imagesx($source); $hauteurSource = imagesy($source); //Création, enregistrement de l'image redimentionnée ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource); $miniature = $fichierSource; ImageJpeg ($im, $miniature); ?> <?php $PhotoGrd=$NomImage.".".$ext; $up1=true; //**********************Génération de la petite vignette******************************************* if($up1 == true){ // copie dans repertoire pour les petites photos, et renomme la vignette en ajoutant ptt devant le nom de la grande : $NomImage = 'ptt'.$PhotoGrd; if (copy($dossier_grd."/".$PhotoGrd,$dossier_ptt."/".$NomImage)) { // Création d'une miniature $image_mini=$dossier_ptt."/".$NomImage; $fichierSource = $image_mini; } // Définition du format de l'image if ($infos_img[0] > $infos_img[1] ) { // si la largeur est plus grande que la hauteur : Format paysage $largeurDestination = 85; $hauteurDestination = 85 * ($infos_img[1] / $infos_img[0]) ; }elseif ($infos_img[1] > $infos_img[0] ) { // si la hauteur est plus grande que la Largeur : Format portrait $hauteurDestination = 85; $largeurDestination = 85 * ($infos_img[0] / $infos_img[1]) ; }else if ($infos_img[1] == $infos_img[0] ) { // si la largeur est égale à la hauteur : Format carré $largeurDestination = 85 ; $hauteurDestination = 85; } //Crée l'image vide avec les dimensions $im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination) or die ("Erreur lors de la création de l'image miniature"); //Prends l'image d'origine $source = ImageCreateFromJpeg($fichierSource); //Redimensionnement de L'image $largeurSource = imagesx($source); $hauteurSource = imagesy($source); //Création, enregistrement de l'image miniature ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource); $miniature = $fichierSource; ImageJpeg ($im, $miniature); ?> <?php $PhotoPtt=$NomImage; $up2=true; } else { echo "La copie du fichier $NomImage n'a pas réussi...\n"; } } // ********* enregistrement dans la base de donnée if ($up1 == true AND $up2 == true) { $upload = true; } if ($upload) { $_POST['photoptt'] = $PhotoPtt; $_POST['photogrd'] = $PhotoGrd; $insertSQL = sprintf("INSERT INTO image (id, photoptt, photogrd) VALUES (%s, %s, %s)", GetSQLValueString($_POST['id'], "int"), GetSQLValueString($_POST['photoptt'], "text"), GetSQLValueString($_POST['photogrd'], "text")); mysql_select_db($database_anpot, $anpot); $Result1 = mysql_query($insertSQL, $anpot) or die(mysql_error()); $insertGoTo = "ajout-confirm.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } header(sprintf("Location: %s", $insertGoTo)); } //*************************** ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>upload</title> <link xhref="../../styles.css" rel="stylesheet" type="text/css" /> <style type="text/css"> <!-- .Style2 {color: #000000} .Style3 { font-family: Georgia, "Times New Roman", Times, serif; color: #666666; font-weight: bold; font-size: 18px; } .Style10 { font-family: Georgia, "Times New Roman", Times, serif; color: #666666; } .titre {font-weight: bold} .Style14 {font-family: Georgia, "Times New Roman", Times, serif; color: #666666; font-weight: bold; font-size: 24px; } .Style17 {color: #990000; font-weight: bold; } --> </style> </head> <body> <span class="titre"><span class="Style10"><em>espace administrateur </em></span></span> <div align="center"><span class="sous-titre titre Style2"><br /> <span class="Style3">Ajout d'une photo </span> </span></div> <table width="729" height="441" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td><form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="form1"> <table align="center"> <tr valign="baseline"> <td colspan="2" align="right" nowrap>: : </td> </tr> <tr valign="top"> <td width="306" align="right" nowrap><strong>Photo</strong> (maxi 2048 pixels de long <span class="Style17">ou</span> de large) :</td> <td width="357"><input name="fichier" type="file" class="fields" size="25"></tr> <tr valign="top"> <td colspan="2" align="center" nowrap><br /> <p> </p> <p> <input type="submit" value="Insérer l'enregistrement"> </p></td> </tr> </table> <input type="hidden" name="MM_insert" value="form1"> </form> <p> </p></td> </tr> </table> </body> </html>
Message publié le jeudi 17 janvier 2008 à 09 h 42 par nours312. hé oui
Message publié le vendredi 18 janvier 2008 à 06 h 01 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le vendredi 18 janvier 2008 à 06 h 23 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le lundi 21 janvier 2008 à 09 h 27 par scud4. mysql_select_db($database_connexion_BDD, $connexion_BDD);
$Result1 = mysql_query($insertSQL, $connexion_BDD) or die(mysql_error());
Message publié le mercredi 23 janvier 2008 à 07 h 24 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le mercredi 23 janvier 2008 à 07 h 26 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le vendredi 25 janvier 2008 à 06 h 49 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le vendredi 25 janvier 2008 à 09 h 56 par nours312. hé oui
Message publié le vendredi 25 janvier 2008 à 10 h 07 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le vendredi 25 janvier 2008 à 12 h 52 par catcat.
Message publié le vendredi 25 janvier 2008 à 14 h 27 par catcat.
Message publié le mardi 29 janvier 2008 à 10 h 25 par elizabeth. les pieds sur terre et la tête dans les étoiles
Message publié le jeudi 07 février 2008 à 12 h 20 par Danito.
Message publié le jeudi 07 février 2008 à 20 h 45 par elizabeth. les pieds sur terre et la tête dans les étoiles liste des forums liste des discussions Participer à la discussion
Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.