Eléphant du PHP |
271 Messages
19 oct. 2008, 11:41
Merci à tous de m'avoir aidé et particulièrement à sylvaing26 à qui j'ai emprunté son code.
Pour ceux à qui ce code pourrait servir, ce dernier comporte des erreurs mais fonctionne. Il sert à télécharger des images en écrivant son "chemin" dans une bd tout en les redimensionnants proportionnellement en gardant le nom du fichier d'origine sans les accents et les espaces. L'image "physique" se trouve stockée dans un dossier
<?php
// je réceptionne le formulaire et indique le répertoire de destination//
if(isset($_FILES['photo'])){ $dest_dossier = 'imag_accueil/';
//paramétres//
unset($erreur);
$extensions_ok = array('jpg', 'jpeg');
$taille_max = 500000;
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type jpeg ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
if(!isset($erreur))
// redimensionnement proportionnelle des images
{
$source = ($_FILES['photo']['tmp_name']) ;
$ImageChoisie = imagecreatefromjpeg($source);
$TailleImageChoisie = getimagesize($source);
if($TailleImageChoisie[0]>$TailleImageChoisie[1])
{
//Etape 1 :
$NouvelleLargeur = 250;
//Etape 2 :
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] );
//Etape 3 :
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
}
else
{
//Etape 1 :
$NouvelleHauteur = 375;
//Etape 2 :
$Reduction = ( ($NouvelleHauteur * 100)/$TailleImageChoisie[1] );
//Etape 3 :
$NouvelleLargeur = ( ($TailleImageChoisie[0] * $Reduction)/100 );
}
//Etape 1 :
$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
//Etape 2 :
imagecopyresampled($NouvelleImage , $ImageChoisie, 0, 0, 0, 0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
$background_color = imagecolorallocate ($NouvelleImage, 255, 255, 255);
imagefill($NouvelleImage,0,0,$background_color);
//////////////////
$miniature = ($_FILES['photo']['tmp_name']);
$destination = $source = ($_FILES['photo']['tmp_name']);
ImageJpeg ($NouvelleImage,$destination, 100);
}
else
{
$miniature = ($_FILES['photo']['tmp_name']);
}
// fin du redimensionnement proportionnelle des images
{
// il est copié du temporaire vers mon répertoire//
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
}
}
{
echo'<br><br><center><a href="../admin/index.php">Insérer de nouvelles photos</a></center>';
}
?>
<?php
require("admin/config.php");
$mysql_link = MYSQL_CONNECT("$localhost","$login","$mot") OR DIE("Unable to connect to database !!");
@mysql_select_db($dbName ,$mysql_link ) or die( "Unable to select database ??");
//je réceptionne le nom du fichier et son chemin//
if(isset($_FILES['photo']['name'])) $FILES=$_POST['url'];
else $_FILES="";
// je l'écris dans le champ chemin-fichier//
$sql = "INSERT INTO imag_accueil(url,chemin_fichier) VALUES('". $imag ."', '". $dest_dossier . $dest_fichier ."')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_query("SELECT * FROM $url");
header("location:admin/index.php") ;
?>
Patience et obstination sont des qualités !