Erreur de synthax guillement, simple quote

Eléphanteau du PHP | 16 Messages

25 févr. 2008, 17:13

Salut à tous.
Voila j'aimerai redimensionner une image sur un catalogue en ligne.
Avec firefox j'ai pas trop de problème puisque le css est bien interprété. Cela dis ce n'est pas tout à fait la même chose avec internet explorer. Du coup j'ai pris une fonction toute faite pour redimensionner les images. La fonction marche nikel.
function redimage($img_src,$img_dest,$dst_w,$dst_h) {
   // Lit les dimensions de l'image
   $size = GetImageSize($img_src);  
   $src_w = $size[0]; $src_h = $size[1];  
   // Teste les dimensions tenant dans la zone
   $test_h = round(($dst_w / $src_w) * $src_h);
   $test_w = round(($dst_h / $src_h) * $src_w);
   // Si Height final non précisé (0)
   if(!$dst_h) $dst_h = $test_h;
   // Sinon si Width final non précisé (0)
   elseif(!$dst_w) $dst_w = $test_w;
   // Sinon teste quel redimensionnement tient dans la zone
   elseif($test_h>$dst_h) $dst_w = $test_w;
   else $dst_h = $test_h;

   // La vignette existe ?
   $test = (file_exists($img_dest));
   // L'original a été modifié ?
   if($test)
      $test = (filemtime($img_dest)>filemtime($img_src));
   // Les dimensions de la vignette sont correctes ?
   if($test) {
      $size2 = GetImageSize($img_dest);
      $test = ($size2[0]==$dst_w);
      $test = ($size2[1]==$dst_h);
   }

   // Créer la vignette ?
   if(!$test) {
      // Crée une image vierge aux bonnes dimensions
      $dst_im = ImageCreateTrueColor($dst_w,$dst_h); 
      // Copie dedans l'image initiale redimensionnée
      $src_im = ImageCreateFromJpeg($img_src);
      ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
      // Sauve la nouvelle image
      ImageJpeg($dst_im,$img_dest);
      // Détruis les tampons
      ImageDestroy($dst_im);  
      ImageDestroy($src_im);
   }

   Affiche le descritif de la vignette
   echo "SRC='".$img_dest."' WIDTH=".$dst_w." HEIGHT=".$dst_h;
}
Maintenant j'aimerai me servir de cette fonction pour mon catalogue en ligne. Chaque produit est stocké dans un tableau, ensuite je fais un foreach pour afficher tous les éléments du tableau. Je ne veux pas surcharger la page donc voila juste la partie qui ne marche pas

foreach($prod as $value){
	//===ici chaque produit ========
$html = "
...
<img src='upload/".redimage($prod[$fiche]['img_prod'].",upload/tmp/".$prod[$fiche]['img_prod']."",300,300)."' border=0 class=visu_img
>";
...
   		
		
        //===fin produit =============
	//$html .=$prod[2]['nom_prod'];
	echo $html;
	$fiche++;
//fin foreach
}
Je n'arrive pas à mettre la fonction sans que ca me retourne une erreur de sythaxe.
Warning: Missing argument 4 for redimage()
Je suis un peu perdu entre les guillemets et les simples quote. J'espere m'etre fait comprendre :roll: . Je donnerai plus de details si besoin est. Merci

d0m
Mammouth du PHP | 1141 Messages

25 févr. 2008, 17:20

Salut,

Il te faut 4 arguments pour ta fonction, toi tu en a mis 3 car tu as fait des 2 premiers arguments une seule chaine :
redimage($prod[$fiche]['img_prod'].",upload/tmp/".$prod[$fiche]['img_prod']."",300,300)
et tu mets des quotes inutiles.

si tu te perds, commence par déterminer les 4 variables individuellement :
$src  = $prod[$fiche]['img_prod'];
$dest = 'upload/tmp/'.$prod[$fiche]['img_prod'];
$w    = 300;
$h     = 300;
redimage($src,$dest,$w,$h);
et remplace après par leur contenu respectifs :
redimage($prod[$fiche]['img_prod'],'upload/tmp/'.$prod[$fiche]['img_prod'],300,300)

Eléphanteau du PHP | 16 Messages

25 févr. 2008, 17:33

il faut que je gratte encore un peu mais c'est quand même plus simple avec les variables séparés :wink:
Je vais tenter de résoudre le problème je reviendrai si je galère encore :P
Merci en tout cas.
++

EDIT:
Merci ca marche nikel, bien penser à retourner l'image redimensionnée dans la fonction et ça roule tout seul :D