script vignette qui ne marche pas

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

script vignette qui ne marche pas

Message le Lun Mai 14, 2007 15:36

bonjour,
j'ai un script qui marche pour l'upload photos (dossier et BDD), mais la partie vignette du script est inopérante. :cry:
J'ai beau tourner et retourner le code, je ne vois pas la solution, mais vu mon petit niveau en php, rien d'étonnant :( .

Pouvez vous m'aider à y voir plus clair ??
voici la partie vignette qui bug : message upload de la vignette échoué

Code: Tout sélectionner
<?
session_start();
include ('../_connexion.php');

?>

<?php

function vignette($file = photo, $maxWidth = 60, $maxHeight = 60){
   
   // Vérification des erreurs dans les paramètres de la fonction
   //============================================================
   if(!file_exists($file)){
      // Si le fichier passé en paramètre n'existe pas
      return 'Le fichier '.$file.' n\'a pas été trouvé sur le serveur.';
   }
   elseif(empty($file)){
      // Si le fichier n'a pas été indiqué
      return 'Nom du fichier non renseigné.';
   }
   elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){
      // Si la largeur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
      return 'Valeur de la largeur incorrecte.';
   }
   elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){
      // Si la hauteur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
      return 'Valeur de la hauteur incorrecte.';
   }
   //============================================================
   
   $fichier = realpath($file); // Chemin canonique absolu de l'image
   $dir = dirname($file).'http://allhambra.free.fr/Peter%20span%20design/Art/photo/art_table/'; // Chemin du dossier contenant l'image
   $infoImg = getimagesize($fichier); // Récupération des infos de l'image
   $imgWidth = $infoImg[0]; // Largeur de l'image
   $imgHeight = $infoImg[1]; // Hauteur de l'image
   
   // Initialisation des variables selon l'extension de l'image
   switch($infoImg[2]){
      case 2:
         $img = imagecreatefromjpeg($fichier); // Création d'une nouvelle image jpeg à partir du fichier
         $extImg = '.jpg'; // Extension de l'image
      break;
      case 3:
         $img = imagecreatefrompng($fichier); // Création d'une nouvelle image png à partir du fichier
         $extImg = '.png';
   }
   
   // Initialisation des dimensions de la vignette si elles sont supérieures à l'original
   if($maxWidth > $imgWidth){ $maxWidth = $imgWidth; }
   if($maxHeight > $imgHeight){ $maxHeight = $imgHeight; }
   
   $whFact = $maxWidth/$maxHeight; // Facteur largeur/hauteur des dimensions max de la vignette
   $imgWhFact = $imgWidth/$imgHeight; // Facteur largeur/hauteur de l'original
   
   // Fixe les dimensions de la vignette
   if($whFact < $imgWhFact){
      // Si largeur déterminante
      $thumbWidth  = $maxWidth;
      $thumbHeight = $thumbWidth / $imgWhFact;
   } else {
      // Si hauteur déterminante
      $thumbHeight = $maxHeight;
      $thumbWidth  = $thumbHeight * $imgWhFact;
   }
   
   $imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); // Création de la vignette
   
   imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight); // Insère l'image de base redimensionnée
   
   $fileName = basename($file, $extImg); // Nom du fichier sans son extension
   $imgThumbName = $dir.$fileName.'-min'.$extImg; // Chemin complet du fichier de la vignette
   
   //Création du fichier de la vignette
   $fp = fopen($imgThumbName, "w");
   fclose($fp);
   
   // Renvoi la vignette créée
   switch($infoImg[2]){
      case 2:
         imagejpeg($imgThumb, $imgThumbName, 50); // Renvoi d'une image jpeg avec une qualité de 50
         break;
      case 3:
         imagepng($imgThumb, $imgThumbName);
   }
   
   return $imgThumbName;

}
?>
<?
session_start();

            $DESTINATION_FOLDER = "vignette";
            $MAX_SIZE = 1000000;
            $AUTH_EXT = array(".jpg", ".gif");
            
            if(!empty($_FILES["file"]["name"]))
               {
               $nomFichier = $_FILES["file"]["name"] ;
               $nomTemporaire = $_FILES["file"]["tmp_name"] ;
               $typeFichier = $_FILES["file"]["type"] ;
               $poidsFichier = $_FILES["file"]["size"] ;
               $codeErreur = $_FILES["file"]["error"] ;
               $extension = strrchr($nomFichier, ".");
               $nomFichier1 = "article-" . $compteur . $extension;
               if($poidsFichier != 0)
                  {
                  if($poidsFichier < $MAX_SIZE)
                     {
                     if(isExtAuthorized($extension))
                        {
                        $uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier1);
                        if($uploadOk) {
                        $query="UPDATE 1two_ecommerce_prod SET vignette='vignette/" . "$nomFichier1' WHERE compteur='$compteur'";
                        $resswitch = @mysql_query($query,$db);
                        
                        echo "<span class='texte'>L'upload de la vignette a réussi !<br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                        }
                        else { echo("<span class='texte'>L'upload de la vignette a échoué !<br><br></span>"); }
                        }
                     else
                        {
                        echo "<span class='texte'><font color='FF0000'>Les fichiers avec l'extension " . $extension . " ne peuvent pas être uploadés !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                        }
                     }
                  else
                     {
                     $tailleKo = $MAX_SIZE / 1000000;
                     echo "<span class='texte'><font color='FF0000'>Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : " . $tailleKo . " Ko.</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                     }      
                  }
               else
                  {
                  echo "<span class='texte'><font color='FF0000'>Le fichier choisi est invalide !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                  }
               }
            else
               {
               echo "<span class='texte'><font color='FF0000'>Vous n'avez pas choisi de fichier !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
               }

                  
?>

yonni
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 127
Inscription: Ven Fév 04, 2005 16:45

Message le Lun Mai 14, 2007 16:08

En regardant vite fait, moi y a ce bout de code qui m'interpelle :

Code: Tout sélectionner
//Création du fichier de la vignette
$fp = fopen($imgThumbName, "w");
fclose($fp);


Tu devrais essayer de l'enlever, le fichier image étant créé avec imagejpeg ou imagepng..

++


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Lun Mai 14, 2007 16:13

ben, même en otan cette portion, j'ai le même résultat !
Snif !


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 2830
Inscription: Lun Déc 27, 2004 16:29

Message le Lun Mai 14, 2007 17:26

problème de chemin surement.


sim100
WRInaute accro
WRInaute accro
 
Messages: 1283
Inscription: Dim Fév 02, 2003 18:45

oui

Message le Mar Mai 15, 2007 5:06

Problème de chemin et peur être aussi de droit sur ton dossier photo


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Mar Mai 15, 2007 8:08

ça serait du à :
Code: Tout sélectionner
$fichier = realpath($file); // Chemin canonique absolu de l'image

que j'ai laissé tel quel ne sachant pas ce qu'est un chemin canonique?
Pour les droits d'écriture, le dossier est chmodé normalement.
Je vais vérifier, merci les gars ! :lol:


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Mar Mai 15, 2007 17:17

un error_reporting serait bienvenu

rog


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Mer Mai 16, 2007 8:48

le message d'erreur est le suivant :

L'upload a réussi (des photos)!

Revenir à l'administration. L'upload de la vignette a échoué !
car avant la partie vignette du script, j'ai la partie photos qui elle marche :

Code: Tout sélectionner
<?
            $DESTINATION_FOLDER = "photo";
            $MAX_SIZE = 1000000;
            $AUTH_EXT = array(".jpg", ".gif");
            function isExtAuthorized($ext){
               global $AUTH_EXT;
               if(in_array($ext, $AUTH_EXT)){ return true; }
               else{ return false; } }
            if(!empty($_FILES["file"]["name"]))
               {
               $nomFichier = $_FILES["file"]["name"] ;
               $nomTemporaire = $_FILES["file"]["tmp_name"] ;
               $typeFichier = $_FILES["file"]["type"] ;
               $poidsFichier = $_FILES["file"]["size"] ;
               $codeErreur = $_FILES["file"]["error"] ;
               $extension = strrchr($nomFichier, ".");
               $nomFichier1 = "article-" . $compteur . $extension;
               if($poidsFichier != 0)
                  {
                  if($poidsFichier < $MAX_SIZE)
                     {
                     if(isExtAuthorized($extension))
                        {
                        $uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier1);
                        if($uploadOk) {
                        $query="UPDATE 1two_ecommerce_prod SET photo='photo/" . "$nomFichier1' WHERE compteur='$compteur'";
                        $resswitch = @mysql_query($query,$db);
                        
                        echo "<span class='texte'>L'upload a réussi !<br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                        }
                        else { echo("<span class='texte'>L'upload a échoué !<br><br></span>"); }
                        }
                     else
                        {
                        echo "<span class='texte'><font color='FF0000'>Les fichiers avec l'extension " . $extension . " ne peuvent pas être uploadés !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                        }
                     }
                  else
                     {
                     $tailleKo = $MAX_SIZE / 1000;
                     echo "<span class='texte'><font color='FF0000'>Vous ne pouvez pas uploader de fichiers dont la taille est supérieure à : " . $tailleKo . " Ko.</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                     }      
                  }
               else
                  {
                  echo "<span class='texte'><font color='FF0000'>Le fichier choisi est invalide !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
                  }
               }
            else
               {
               echo "<span class='texte'><font color='FF0000'>Vous n'avez pas choisi de fichier !</font><br><br> <a href='index.php?menu=items' class='lien2'>Revenir à l'administration</a>.</span>";
               }
               
?>


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5192
Inscription: Mer Nov 23, 2005 10:38

Message le Mer Mai 16, 2007 8:51

En fait je pense que ce que te demandais rog, ce n'était pas tant le message d'erreur que toi tu affiches que l'extrait des log apache qui concerne ton upload.


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Mer Mai 16, 2007 8:58

pour les droits d'écriture, je suis a 700, mais mais mon serveur ftp refuse de mettre plus peut être parce que je suis chez free?


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 2830
Inscription: Lun Déc 27, 2004 16:29

Message le Mer Mai 16, 2007 8:58

pourquoi ne pas faire la miniature juste apres l'upload de l'image, dans la mm portion de script...


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Mer Mai 16, 2007 8:59

euh... oui, mais comment je trouve ces logs??? :?:


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Mer Mai 16, 2007 9:02

pourquoi ne pas faire la miniature juste apres l'upload de l'image, dans la mm portion de script...

Mais c'est exactement ce que je veux faire !
Dans l'absolu je veux uploader ma photo, créer la miniature correspondante et incrémenter tout ca dans ma BDD


bproductiv
WRInaute accro
WRInaute accro
 
Messages: 2830
Inscription: Lun Déc 27, 2004 16:29

Message le Mer Mai 16, 2007 9:07

plus propre, plus rapide, moins prise de tête et plus complet, moi j'utilise ca :
http://www.phpclasses.org/browse/package/2181.html
Un must!


catseyes
Nouveau WRInaute
 
Messages: 34
Inscription: Sam Avr 07, 2007 14:06

Message le Mer Mai 16, 2007 9:27

plus propre, plus rapide, moins prise de tête et plus complet, moi j'utilise ca :
http://www.phpclasses.org/browse/package/2181.html
Un must!


Merci infiniment, cela faisait 15 jours que je bloquais là dessus.
Ca à l'air plus simple en effet, il ne me reste plus qu'a tester tout ça.

Merci encore, je vais enfin pouvoir avancer.
Note pour plus tard, dur dur les début en PHP, mais je vaincrai :lol:


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

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