Forum d'entraide PHPFrance

Venez poser vos questions PHP, MySQL, HTML, CSS, Javascript, Gestion de serveurs à la communauté PHPfrance

Vers le contenu

» Masquer les résultats de la recherche

Recherche dynamique PHPfrance

  1. Effectuez une recherche, les résultats s'afficheront dynamiquement ici.

problème insetion d'image avec redimmensionnement

Pour ceux qui débutent en PHP.

problème insetion d'image avec redimmensionnement

Messagepar amonite 07 Fév 2012, 20:30

Bonjour,

J'ai essayé de faire un petit bout de code pour enregistrer des données avec redimmensionnement automatique.

Mais il me fait une erreur dès que je veux inserer l'image.

Le champs dans ma BDD est "photo" en varchar 255

Si quelqu'un voit une erreur que je n'aurais pas vu, je le remercie d'avance.

Bonne journée

Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<?php

if (isset ($_POST['valider']))
{
        $nom = $_POST['nom'];
        $prenom = $_POST['prenom'];
        $age = $_POST['age'];
        $code = $_POST['code'];
        $ville = $_POST['ville'];
        $tel = $_POST['tel'];
        $fax = $_POST['fax'];
        $gsm = $_POST['gsm'];
        $email = $_POST['email'];
        $sexe = $_POST['sexe'];
        $dossier ='../images/';
        $fichier = basename($_FILES['photo']['name']);
        $taille_maxi = 100000;
        $taille = filesize($_FILES['photo']['tmp_name']);
        $extensions = array('.png', '.gif', '.jpg', '.jpeg');
        $extension = strrchr($_FILES['photo']['name'], '.');

        // Si l'un des champs est vide -> erreur
        if (empty ($nom) || empty($prenom) || empty($age) || empty($code) || empty($ville) || empty($email))
                {
                        echo '<body onLoad="alert(\'Veuillez entrer tous les champs.\')">';
                        header("refresh:1; URL = 'admin.php'");
                }
               
                if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
                {
                         echo '<body onLoad="alert(\'Veuillez charger une image de format .png ou .gif ou .jpg(.jpeg).\')">';
                         header("refresh:1; URL = 'produits.php' ");
                }

                        if($taille>$taille_maxi)
                        {
                                 echo '<body onLoad="alert(\'Image trop lourde.\')">';
                                 header("refresh:1; URL = '../produits.php' ");
                        }
               
                        if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
                                {
                                 //On formate le nom du fichier ici...
                                 $fichier = strtr($fichier,
                            'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
                            'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                                       
                                 $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
                                         
                                        if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                                                          {
                                                             echo '<body onLoad="alert(\'Image chargée avec succès.\')">';
                                                                         header("refresh:1; URL = 'produits.php' ");
         
                 
                                                                         $file = "../images/".$_FILES['photo']['name'].""; # L'emplacement de l'image à redimensionner. L'image peut être de type jpeg, gif ou png

                                                                         $x = 130;

                                                                         $y = 110;

                                                                         $size = getimagesize($file);

                                                                if ($size)
                                                                         {
                                                                                if ($size['mime']=='image/jpeg')
                                                                                         {
                                                                                                $img_big = imagecreatefromjpeg($file);
                                                                                                $img_new = imagecreate($x, $y);
                                                                                                        # création de la miniature
                                                                                                $img_mini = imagecreatetruecolor($x, $y)
                                                                                                or   $img_mini = imagecreate($x, $y);

                                                                                                // copie de l'image, avec le redimensionnement.
                                                                                                imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                                                                               
                                                                                                imagejpeg($img_mini,$file );

                                                                                        }
                                                                                       
                                                                       
                                                                                 elseif ($size['mime']=='image/png')
                                                                                        {
                                                                                                $img_big = imagecreatefrompng($file); # On ouvre l'image d'origine
                                                                                                $img_new = imagecreate($x, $y);
                                                                                                # création de la miniature
                                                                                                $img_mini = imagecreatetruecolor($x, $y)
                                                                                                or   $img_mini = imagecreate($x, $y);
                                                                                               
                                                                                                // copie de l'image, avec le redimensionnement.
                                                                                                imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                                                                               
                                                                                                imagepng($img_mini,$file );
                                               
                                                                                        }
                                                                                       
                                                                                elseif ($size['mime']=='image/gif')
                                                                                        {
                                                                                                $img_big = imagecreatefromgif($file); # On ouvre l'image d'origine
                                                                                                $img_new = imagecreate($x, $y);
                                                                                                # création de la miniature
                                                                                                $img_mini = imagecreatetruecolor($x, $y)
                                                                                                or   $img_mini = imagecreate($x, $y);
                                                                                               
                                                                                                // copie de l'image, avec le redimensionnement.
                                                                                                imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$size[0],$size[1]);
                                                                                               
                                                                                                imagegif($img_mini,$file );

                                                                                        }


                                                                 }}}
               
       
        {
                include('../connexion.php');
         $nom = mysql_real_escape_string($nom) ;
         $prenom = mysql_real_escape_string($prenom);
         $age = mysql_real_escape_string($age);
         $code = mysql_real_escape_string($code);
         $ville = mysql_real_escape_string($ville);
         $tel = mysql_real_escape_string($tel);
         $fax = mysql_real_escape_string($fax);
         $gsm = mysql_real_escape_string($gsm);
         $email = mysql_real_escape_string($email);
         $sexe = mysql_real_escape_string($sexe);
         
         
         
                // Insertion dans la bdd
                $query = "insert into PROD(ID,nom,prenom,age,code,ville,tel,fax,gsm,email,sexe,photo) values('','$nom', '$prenom', '$age', '$code', '$ville', '$tel', '$fax', '$gsm', '$email', '$sexe', '../images/".$_FILES['photo']['name']."')";
                mysql_real_escape_string($query);


                if (mysql_query($query))
                {
                         echo '<body onLoad="alert(\'Evenement ajoutée avec succès.\')">';
                         header("refresh:1; URL = 'produits.php' ");
                }
                else
                {
                        echo '<body onLoad="alert(\'Une erreur a été détectée.\')">';
                        header("refresh:1; URL = 'produits.php' ");
                }
                //mysql_close();
        }
}
 
?>

 
amonite
Foetus
 
Messages: 17
Inscription: 29 Nov 2011, 10:33
Localisation: Thionville

Publicité

Re: problème insetion d'image avec redimmensionnement

Messagepar amonite 07 Fév 2012, 20:45

Bonsoir cdw77,

Le fait de la mettre en BLOB m'a mis le lien dans la BDD, mais il n'upload pas l'image dans le repertoire.

Merci de m'aider.

Bonne soirée
amonite
Foetus
 
Messages: 17
Inscription: 29 Nov 2011, 10:33
Localisation: Thionville

Re: problème insetion d'image avec redimmensionnement

Messagepar AB 07 Fév 2012, 21:39

Y'a pas mal de boulot à faire si tu veux avoir un code à peu près fonctionnel :

- Vérifier si tu n'écrase pas un fichier déjà existant.
- Prévoir une alternative en cas du dépassement du post max size (sinon tu auras une page blanche).
- Tester la capacité mémoire de ton script pour savoir si le redimensionnement est possible (sinon tu auras une page blanche).
- Refaire tes messages d'avertissement en supprimant les appels javascript qui ne sont pas idéals dans ce contexte.

Bref pour te guider pas à pas dans cette histoire il faudrait beaucoup de temps... (que je n'ai pas).

Si tu veux apprendre il y a ce tuto qui répond à mes deux premières remarques.
Pour faire du redimensionnement et gérer l'ensemble des remarques ci-dessus il y a cette classe prête à l'emploi.
Quelques exemples de créations de sites sur http://www.abciweb.net
Générateur javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical : Interface graphique
Avatar de l’utilisateur
AB
ViPHP
ViPHP
 
Messages: 5248
Inscription: 27 Déc 2006, 20:01
Localisation: Clermont-Ferrand


Retourner vers PHP débutant

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 16 invités

  • Publicité