Image toute noire en upload

Eléphant du PHP | 216 Messages

19 oct. 2010, 07:29

Bonjour,

j'utilise la librairie GD afin d'uploder mes images sur le serveur.
Lorsque je travaille en local avec EasyPhp, ça fonctionne parfaitement.

Par contre en essayant chez mon hébergeur, j'obtiens des images noires...

Savez-vous d'où cela peut-il venir ?

Merci d'avance pour votre aide.

ViPHP
ViPHP | 5462 Messages

19 oct. 2010, 09:40

t'as vérifier les erreurs sur ton image ? enleve le header pour ca

Eléphant du PHP | 216 Messages

19 oct. 2010, 11:29

C'est quoi le header ?

ViPHP
ViPHP | 5462 Messages

19 oct. 2010, 11:40

C'est quoi le header ?
c'est pas toi qu'a fait le fichier php ?

Eléphant du PHP | 216 Messages

19 oct. 2010, 12:49

Ben si...

Tu parles de ça

	
<!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" xml:lang="fr" >
   <head>
       <title>test</title>
	   <meta name="description" content="test"/>
	   <meta name="keywords" content="test"/>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <META NAME="revisit-after" CONTENT="7 day">
	   <META NAME="Robots" CONTENT="all">
       <META NAME="language" CONTENT="FR">
	   <link rel="stylesheet" media="screen" type="text/css" title="Design sombre" href="styles\styles.css" />

	
   </head>
   
   <!--commentaire-->


ViPHP
xTG
ViPHP | 7331 Messages

19 oct. 2010, 13:01

Montres nous le code qui utilise GD je pense que cela sera plus simple à la vue de tes lacunes techniques. :)

Eléphant du PHP | 216 Messages

19 oct. 2010, 14:44

Montres nous le code qui utilise GD je pense que cela sera plus simple à la vue de tes lacunes techniques. :)
heu c'est bien pour ça que je suis sur le forum :wink:

Voici le code



 if(isset($_FILES['up_photo']))
      {
 
	   
      unset($erreur);
   
      $extensions_ok = array('png', 'PNG', 'jpg', 'jpeg', 'JPEG', 'JPG');
   
	  
	  // on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels). 
	  // En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels, 
	  // soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).  
	  
	  $ratio = 50; // pour les miniatures 
	  $Wmax = 300;   // largeur maximale voulue (pour la photo d'origine)
	  $Hmax = 300;   // hauteur maximale voulue ( pour la photo d'origine)

	  // Création des dossiers
	
	  if (!file_exists($dest_dossier)) 
	  {
		mkdir ($dest_dossier, 0777); 
	  }
	  
	  if (!file_exists($dest_dossier_mini)) 
	  {
		mkdir ($dest_dossier_mini, 0777); 
	  }
	  
	  // on compte d'abord le nombre d'image dans le répertoire
	  
	  $num_images = count_files($dest_dossier);
	  
	if ($num_images < 10)
	{
	  
	  
	   // on teste si le champ permettant de soumettre un fichier est vide ou non
		if (empty($_FILES['up_photo']['tmp_name'])) 
		{
			// si oui, on affiche un petit message d'erreur
			$erreur[] = $txt0103;
		}
		else
		{
		

			// on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier 
			//(je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations) 
	  
			$tableau = @getimagesize($_FILES['up_photo']['tmp_name']);
		    $W_Src = $tableau[0];  // largeur
			$H_Src = $tableau[1];  // hauteur
	    
			if ($tableau == FALSE) 
			{ 
				// si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur 
				unlink($_FILES['up_photo']['tmp_name']); 
				$erreur[] = $txt0104; 
		     }
			 else
			 {
  
				// vérifications de l'extention
  
				if( !in_array( substr(strrchr($_FILES['up_photo']['name'], '.'), 1), $extensions_ok ) )
 
				{
					$erreur[] = $txt0105;
				}
  
					elseif( file_exists($_FILES['up_photo']['tmp_name'])
  
					and filesize($_FILES['up_photo']['tmp_name']) > $max_size)
  
				{
					$erreur[] = $txt0106;
				}
	  
				// on détremine la taille de la photo
	  
				$up_taille = $_FILES['up_photo']['size'];
				
				$dest_fichier = basename($_FILES['up_photo']['name']);// cela donne le même résultat que la commande ==> $_FILES['up_photo']['name'];

				// $extension = strrchr(strtolower($dest_fichier), '.');
				
				// 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-9]+)/i', '_', $dest_fichier);
				
				// on vérifie si le fichier n'est pas déjà présent : 
	  
				$chemin_fic = $dest_dossier . $dest_fichier;
				
				// Vérification de l'existence du fichier dans le répertoire et si besoin renommage du fichier
            
				// $chemin_fic = Rename_fich($chemin_fic,$dest_fichier);
		  
			
				/*if (file_exists($chemin_fic)) 
				{
					$dest_fichier = 'DUP'.$dest_fichier;
					echo 'dest_fichier = '.$dest_fichier;
				}*/
				// si l'image n'est ni un jpeg, ni un png, on supprime  le fichier uploadé et on affiche le message d'erreur
				 
				if (!($tableau[2] == 2 || $tableau[2] == 3)) 
				{ 
					 unlink($_FILES['up_photo']['tmp_name']); 
					 $erreur[] = $txt0107;
				} 
				
			}
		}
	}
	else
	{
		$erreur[] = $txt0108;
	}
 
      // copie du fichier
  
      if(!isset($erreur))
 
      {
 
      // copie du fichier
	
			if (move_uploaded_file($_FILES['up_photo']['tmp_name'], $dest_dossier . $dest_fichier)) // à ce moment on met le fichier sur le serveur
			{
				
				// A- LARGEUR ET HAUTEUR maxi fixes
				if ($Wmax != 0 && $Hmax != 0) {
				$ratiox = $W_Src / $Wmax;  // ratio en largeur
				$ratioy = $H_Src / $Hmax;  // ratio en hauteur
				$ratiobis = max($ratiox,$ratioy);  // le plus grand
				$W = $W_Src/$ratiobis;
				$H = $H_Src/$ratiobis;   
				$condition = ($W_Src>$W) || ($H_Src>$H);  // 1 si vrai (true)
				}     
				
				// Creation de l'image miniature 
				$jpeg = false;
				$png = false;
				
				 // si notre image est de type jpeg 
				if ($tableau[2] == 2) 
				{ 
					$jpeg = true;
					// on crée une image à partir de notre grande image à l'aide de la librairie GD 
					$src = imagecreatefromjpeg($dest_dossier.'/'.$dest_fichier); 
					
					// $Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src);
					// $Ress_Dst = ImageCreateTrueColor($W,$H);
					// on teste si notre image est de type paysage ou portrait 
					if ($tableau[0] > $tableau[1]) 
					{ 
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
						
						if ($condition == 1) {
						// $im_gd = imagecreatetruecolor(round(($ratiobis/$tableau[1])*$tableau[0]), $ratiobis); 
						// imagecopyresampled($im_gd, $src, 0, 0, 0, 0, round(($ratiobis/$tableau[1])*$tableau[0]), $ratiobis, $tableau[0], $tableau[1]);}
						$im_gd = imagecreatetruecolor($W,$H);
						// ImageCopyResampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src); 
						ImageCopyResampled($im_gd, $src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src);}
					} 
					else 
					{ 
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
						
						if ($condition == 1) {
						$im_gd = imagecreatetruecolor($W,$H);
						// imagecopyresampled($im_gd, $src, 0, 0, 0, 0, $ratiobis, round($tableau[1]*($ratiobis/$tableau[0])), $tableau[0], $tableau[1]);}
						ImageCopyResampled($im_gd, $src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src);}
					} 
					// on copie notre fichier généré dans le répertoire des miniatures 
					imagejpeg ($im, $dest_dossier_mini.'/'.$dest_fichier);
					if ($condition == 1) {
					imagejpeg ($im_gd, $dest_dossier.'/'.$dest_fichier);}
				} 
				
				if ($tableau[2] == 3) 
				{ 
					$png = false;
					$src = imagecreatefrompng($dir.'/'.$file_upload); 
					if ($tableau[0] > $tableau[1]) 
					{ 
						$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 
					} 
					else 
					{ 
						$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1])); 
						imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]); 
					} 
					imagepng ($im, $dir_mini.'/'.$file_upload); 
				} 
				
				


				// on se connecte à MySQL 
					include ('connect.php');
					
										
					// on détermine d'abord l'id_log 
					
					$sqla = sprintf("SELECT id_log FROM flatforswap_logement WHERE id_adh='".$_SESSION['id_adh']."'");
					$reqa = mysql_query($sqla) or die('Erreur SQL : <br />'.$sqla);
					$dataa = mysql_fetch_assoc($reqa);
					$id_log = $dataa['id_log'];
					
					// on peut maintenant insérer les données da ns la table photo
					
					$date = date("Y-m-d"); 
															
					$sqlb = sprintf("insert into flatforswap_photo(id_log,up_nom,up_titre,up_taille,up_date) values(%s, %s, %s, %s, %s)", quote_smart($id_log), quote_smart($dest_fichier), quote_smart($_POST["up_titre"]), quote_smart($up_taille), quote_smart($date));
					$reqb = mysql_query($sqlb) or die('Erreur SQL : <br />'.$sqlb);
					
					// on peut renommer le fichier
					
					if($jpeg){
					$ext = '.jpeg';}
					else{
					$ext = '.png';}
					
										
					rename($dest_dossier.'/'.$dest_fichier, $dest_dossier.'/'.mysql_insert_id().$ext); 
					rename($dest_dossier_mini.'/'.$dest_fichier, $dest_dossier_mini.'/'.mysql_insert_id().$ext); 
					
					$sqlc = sprintf("update flatforswap_photo set up_nom=%s where id_pho=%s", quote_smart(mysql_insert_id().$ext), quote_smart(mysql_insert_id()));
					$reqc = mysql_query($sqlc) or die('Erreur SQL : <br />'.$sqlc);
					
					
			}
		
 
      }

      }



ViPHP
ViPHP | 5462 Messages

19 oct. 2010, 14:52

tu la chopper ou ce script ?

Eléphant du PHP | 216 Messages

19 oct. 2010, 16:42

heu, atttends là c'est un intérrogatoire ou quoi :wink:

Pourquoi veux-tu savoir ou je l'ai choppé ?

Je dois t'avouer que je ne sais plus trop... Ca fait déjà un bout de temps que je travaille avec en local et ça fonctionne parfaitement en local.

C'est maintenant que je me rends compte qu'il ne fonctionne pas chez mon hébergeur...

ViPHP
ViPHP | 5462 Messages

19 oct. 2010, 16:44

heu, atttends là c'est un intérrogatoire ou quoi :wink:

Pourquoi veux-tu savoir ou je l'ai choppé ?

Je dois t'avouer que je ne sais plus trop... Ca fait déjà un bout de temps que je travaille avec en local et ça fonctionne parfaitement en local.

C'est maintenant que je me rends compte qu'il ne fonctionne pas chez mon hébergeur...
parce que ca fais plein de fois que je vois se genre de code, et que je voudrais envoyer un mail a l'auteur parce que c'est immonde, et que y'a plein de personne comme toi qui on des soucis avec :wink:

Eléphant du PHP | 216 Messages

19 oct. 2010, 17:10

tu as mieux à proposer, je suis tout ouïe...

Il me semble que dans developpez.com

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 oct. 2010, 21:42

salut,

j'ai testé (et un peu corrigé) ton code.
Je n'ai pas testé la partie MySQL.
Les images png et jpg sont bien récupérées et retaillées.

il y avait des erreurs au niveau des nom de fichier (pas de cohérence entre le code png et jpg).

Comme l'indique stealth35, il y a beaucoup de chose à faire pour éviter les soucis (par exemple tester le type mime plutôt que l'extension pour être "certain" qu'il s'agisse d'une image et pas d'un fichier php qui à été renommé (ou quoi que soit d'autre).

plus d'info => http://www.phpfrance.com/tutoriaux/inde ... e-fichiers

@+
<!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" xml:lang="fr" >
   <head>
       <title>test</title>
           <meta name="description" content="test"/>
           <meta name="keywords" content="test"/>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
           <META NAME="revisit-after" CONTENT="7 day">
           <META NAME="Robots" CONTENT="all">
       <META NAME="language" CONTENT="FR">
           <link rel="stylesheet" media="screen" type="text/css" title="Design sombre" href="styles\styles.css" />

       
   </head> 
   <!--commentaire-->
<body>
<form method="POST" action="" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="up_photo">Photo :</label><input type="file" name="up_photo" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</fieldset>
</form> 
</body>
</html
<?php
/* Ajout des 3 lignes ci dessous que l'on avait pas*/
$dest_dossier ='imagestest';
$dest_fichier = 'final';
$dest_dossier_mini = 'imagesmini';
$max_size='1000000000';// A corriger, j'ai mis un chiffre exubérent pour en pas être emmerd*
 if(isset($_FILES['up_photo'])){
      unset($erreur);
      $extensions_ok = array('png', 'PNG', 'jpg', 'jpeg', 'JPEG', 'JPG');
          // on défini une variable $ratio qui vaudra 150 dans notre cas (150 pixels).
          // En fait, pour nos miniatures, nous allons respecter le ratio de l'image originale, mais nous allons forcer sa taille à 150 pixels,
          // soit en hauteur soit en largeur (tout dépend de l'orientation de notre image : paysage ou portrait).  
         
          $ratio = 50; // pour les miniatures
          $Wmax = 300;   // largeur maximale voulue (pour la photo d'origine)
          $Hmax = 300;   // hauteur maximale voulue ( pour la photo d'origine)

          // Création des dossiers
       
          if (!file_exists($dest_dossier)){
                mkdir ($dest_dossier, 0777);
          }
          if (!file_exists($dest_dossier_mini)){
                mkdir ($dest_dossier_mini, 0777);
          }
          // on compte d'abord le nombre d'image dans le répertoire
          $num_images = count_files($dest_dossier);// Pas testé car je n'ai pas la fonction
		  //$num_images=5; <= pour le test
        if ($num_images < 10){
           // on teste si le champ permettant de soumettre un fichier est vide ou non
                if (empty($_FILES['up_photo']['tmp_name'])){
                        // si oui, on affiche un petit message d'erreur
                        $erreur[] = $txt0103;
                }
                else{
                        // on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier
                        //(je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations)
                        $tableau = @getimagesize($_FILES['up_photo']['tmp_name']);
                        $W_Src = $tableau[0];  // largeur
                        $H_Src = $tableau[1];  // hauteur
                        if ($tableau == FALSE){
                                // si le fichier uploadé n'est pas une image, on efface le fichier uploadé et on affiche un petit message d'erreur
                                unlink($_FILES['up_photo']['tmp_name']);
                                $erreur[] = $txt0104;
                     }
                     else{
                                // vérifications de l'extention
                                if( !in_array( substr(strrchr($_FILES['up_photo']['name'], '.'), 1), $extensions_ok ) ){
                                        $erreur[] = $txt0105;
                                }
                                elseif( file_exists($_FILES['up_photo']['tmp_name'])
                                        and filesize($_FILES['up_photo']['tmp_name']) > $max_size){
                                        $erreur[] = $txt0106;
                                }
                                // on détremine la taille de la photo
                                $up_taille = $_FILES['up_photo']['size'];
                                $dest_fichier = basename($_FILES['up_photo']['name']);// cela donne le même résultat que la commande ==> $_FILES['up_photo']['name'];
                                // $extension = strrchr(strtolower($dest_fichier), '.');
                                // 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-9]+)/i', '_', $dest_fichier);
                                // on vérifie si le fichier n'est pas déjà présent :
                                $chemin_fic = $dest_dossier . $dest_fichier;
                                // Vérification de l'existence du fichier dans le répertoire et si besoin renommage du fichier
                                // $chemin_fic = Rename_fich($chemin_fic,$dest_fichier);
                                /*if (file_exists($chemin_fic))
                                {
                                        $dest_fichier = 'DUP'.$dest_fichier;
                                        echo 'dest_fichier = '.$dest_fichier;
                                }*/
                                // si l'image n'est ni un jpeg, ni un png, on supprime  le fichier uploadé et on affiche le message d'erreur 
                                if (!($tableau[2] == 2 || $tableau[2] == 3)){
                                         unlink($_FILES['up_photo']['tmp_name']);
                                         $erreur[] = $txt0107;
                                }
                        }
                }
        }
        else{
                $erreur[] = $txt0108;
        }
      // copie du fichier
      if(!isset($erreur)){
      // copie du fichier
        if (move_uploaded_file($_FILES['up_photo']['tmp_name'], $dest_dossier .'/'. $dest_fichier)) {
         // à ce moment on met le fichier sur le serveur                      
            // A- LARGEUR ET HAUTEUR maxi fixes
            if ($Wmax != 0 && $Hmax != 0) {
            $ratiox = $W_Src / $Wmax;  // ratio en largeur
            $ratioy = $H_Src / $Hmax;  // ratio en hauteur
            $ratiobis = max($ratiox,$ratioy);  // le plus grand
            $W = $W_Src/$ratiobis;
            $H = $H_Src/$ratiobis;  
            $condition = ($W_Src>$W) || ($H_Src>$H);  // 1 si vrai (true)
            }
            // Creation de l'image miniature
            $jpeg = false;
            $png = false;
             // si notre image est de type jpeg
            if ($tableau[2] == 2){
                    $jpeg = true;
                    // on crée une image à partir de notre grande image à l'aide de la librairie GD
                    $src = imagecreatefromjpeg($dest_dossier.'/'.$dest_fichier);
                    // $Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src);
                    // $Ress_Dst = ImageCreateTrueColor($W,$H);
                    // on teste si notre image est de type paysage ou portrait
                    if ($tableau[0] > $tableau[1]){
                            $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
                            imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
                            if ($condition == 1) {
                            // $im_gd = imagecreatetruecolor(round(($ratiobis/$tableau[1])*$tableau[0]), $ratiobis);
                            // imagecopyresampled($im_gd, $src, 0, 0, 0, 0, round(($ratiobis/$tableau[1])*$tableau[0]), $ratiobis, $tableau[0], $tableau[1]);}
                            $im_gd = imagecreatetruecolor($W,$H);
                            // ImageCopyResampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src);
                            ImageCopyResampled($im_gd, $src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src);}
                    }
                    else{
                            $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
                            imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);

                            if ($condition == 1) {
                            $im_gd = imagecreatetruecolor($W,$H);
                            // imagecopyresampled($im_gd, $src, 0, 0, 0, 0, $ratiobis, round($tableau[1]*($ratiobis/$tableau[0])), $tableau[0], $tableau[1]);}
                            ImageCopyResampled($im_gd, $src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src);}
                    }
                    // on copie notre fichier généré dans le répertoire des miniatures
                    imagejpeg ($im, $dest_dossier_mini.'/'.$dest_fichier);
                    if ($condition == 1) {
                    imagejpeg ($im_gd, $dest_dossier.'/'.$dest_fichier);}
            }
            if ($tableau[2] == 3){
                    $png = false;
                    $src = imagecreatefrompng($dest_dossier.'/'.$dest_fichier);
                    if ($tableau[0] > $tableau[1]){
                            $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
                            imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
                    }
                    else{
                            $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
                            imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
                    }
                    imagepng ($im, $dest_dossier_mini.'/'.$dest_fichier);
            }
            // on se connecte à MySQL
            /**************** Partie non testée *************/
            include ('connect.php');                                       
            // on détermine d'abord l'id_log
            $sqla = sprintf("SELECT id_log FROM flatforswap_logement WHERE id_adh='".$_SESSION['id_adh']."'");
            $reqa = mysql_query($sqla) or die('Erreur SQL : <br />'.$sqla);
            $dataa = mysql_fetch_assoc($reqa);
            $id_log = $dataa['id_log'];
            // on peut maintenant insérer les données da ns la table photo
            $date = date("Y-m-d");
            $sqlb = sprintf("insert into flatforswap_photo(id_log,up_nom,up_titre,up_taille,up_date) values(%s, %s, %s, %s, %s)", quote_smart($id_log), quote_smart($dest_fichier), quote_smart($_POST["up_titre"]), quote_smart($up_taille), quote_smart($date));
            $reqb = mysql_query($sqlb) or die('Erreur SQL : <br />'.$sqlb);
            /**************** Fin de partie non testée *************/
            // on peut renommer le fichier
            if($jpeg){
            $ext = '.jpeg';}
            else{
            $ext = '.png';}
          /**************** Partie non testée *************/
            rename($dest_dossier.'/'.$dest_fichier, $dest_dossier.'/'.mysql_insert_id().$ext);
            rename($dest_dossier_mini.'/'.$dest_fichier, $dest_dossier_mini.'/'.mysql_insert_id().$ext);

            $sqlc = sprintf("update flatforswap_photo set up_nom=%s where id_pho=%s", quote_smart(mysql_insert_id().$ext), quote_smart(mysql_insert_id()));
            $reqc = mysql_query($sqlc) or die('Erreur SQL : <br />'.$sqlc);
            /**************** Fin de partie non testée *************/
            }
      }
}
?>
Il en faut peu pour être heureux ......

Eléphant du PHP | 216 Messages

20 oct. 2010, 09:50

Bonjour moogli et je te dois un grand merci parceque maintenant ça fonctionne nickel !!!

Je ne sais c'est qui à fait que ça marche mais ça me va parfaitement (code à garder précieusement :wink: )

Il y a juste une chose qui m'embête un peut, c'est que le chargement des photos prend beaucoup de temps. je suppose que le remaniement des images prend de la CPU au niveau serveur.

J'ai un peu peur que ce temps d'attente fasse fuir les internautes....

Je ne sais s'il y a un moyen d'optimiser ce temps...

ViPHP
AB
ViPHP | 5818 Messages

20 oct. 2010, 18:06

Alternativement tu peux voir aussi du côté de cette classe qui offre de multiples possibilités et gestion des erreurs.

Cela dit, c'est surtout le temps de l'upload qui est long et il n'y a pas grand chose à faire sur ce point.

Eléphant du PHP | 216 Messages

20 oct. 2010, 21:57

Au fait Moogli,

est-tu sûr du code à ce niveau là :

            if ($tableau[2] == 3){
                    $png = false;

ca ne serait pas

            if ($tableau[2] == 3){
                    $png = true;

?