Correction d'une ligne svp

Eléphant du PHP | 199 Messages

02 août 2005, 08:03

Bonjour !! Alors j'ai piké une fonction mais je n'arrive pas a la faire marcher car je n'arrive pas a afficher l'adresse de ma photo !!!

Regarder plutôt mon code :
function create_thumb("./photo/.'$lien'.",400 ,300 );
Enfait la requete SQL me rapporte que le nom de la photo et cette photo se trouve dans le dossier photo mais je n'arrive pas a faire pour que le lien soit bon !!!

Merci de votre aide !!![/php][/code]

Mammouth du PHP | 19672 Messages

02 août 2005, 08:10

Tu as en effet un problème de concaténation de chaîne : corrigé :
function create_thumb("./photo/".$lien,400 ,300 );
PHP dans cette fonction va traiter chacun des trois paramètres séparément. Donc tu dois les construire séparément aussi : tu assembles un bout de chaîne (./photos/) et une variable PHP ($lien) . Dans tu PHP, tu dois mettre la chaine de caractères entre guillemets et concaténer avec l'opérateur de concaténation qu'est le point : ce qui donne :

Code : Tout sélectionner

- "./photo/".$lien - | ^ | ^ | - | chaine | PHP |
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

02 août 2005, 08:15

Je sais pas si sa vient de moi mais

Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')'

juste a la ligne de la fonction et il n'y a qu'elle !!

Eléphant du PHP | 281 Messages

02 août 2005, 08:18

Bonjour
Peu tu nous copier le code avec les lignes avant s'il te plait, car le bug peut se situer avant, ou si tu as fait une erreur de recopiage ;)

Mammouth du PHP | 19672 Messages

02 août 2005, 08:21

Note que j'ai corrigé la concaténation: maintenant il reste en effet un problème : le ";" après la parenthèse de fermeture. Après une ligne function xyz(), on attend un "{" à moins que ce soit une interface en POO. Donc :
function create_thumb("./photo/".$lien,400 ,300 )
{
    /* Code de ta fonction */
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

02 août 2005, 18:27

la fonction a déja été codé c'est pour cela que j'ai mis le ; !!!

je vous passe la fonction
<?php
//Pour fonctionner, la fonction aurra besoin de plusieurs informations: l'adresse de l'image à redimensionner, la largeur et la hauteur maximale de la miniature.
function create_thumb($adresse, $Xmax, $Ymax)
{
//On commence par vérifier le type de l'image, il faut donc récupérer l'extension du fichier.
   //L'extension se trouve après le point, on utilise strrchr(), qui renvoie tout ce qui se trouve à partir du point
     $ext = strrchr($adresse,'.');
   //Comme on a pris le point, il faut le retirer, on va donc utiliser substr(), qui va prendre tout ce qui commence après le premier caractère (le point)
     $ext = substr($ext,1);
   //Enfin, nous allons mettre l'extension en minuscule
     $ext = strtolower($ext);

//Une fois que nous avons l'extension, nous allons vérifier qu'elle est utilisable, si elle ne l'est pas, la fonction s'arrête et retourne FALSE
   if ($ext !== 'gif' AND $ext !== 'jpg' AND $ext !== 'jpeg' AND $ext !== 'png') return FALSE;

//Il faut maintenant ouvrir l'image.
   if ($ext == 'gif')                   $res1 = imagecreatefromgif($adresse);
   if ($ext == 'jpg' || $ext == 'jpeg') $res1 = imagecreatefromjpeg($adresse);
   if ($ext == 'png')                   $res1 = imagecreatefrompng($adresse);

//Ensuite il faut récupérer la taille de l'image
   $x1 = imagesx($res1);
   $y1 = imagesy($res1);

//Maintenant, nous allons voir de combien il faudrait réduire l'image pour qu'elle soit en dessous du maximum permis
//On calcul donc le rapport entre le maximum et la taille de l'image. Ainsi, si l'image fait 300px de large, et que le maximum est de 100px, l'image devra être redimensionné à 1/3 (100 / 300 <:> Xmax / X)
   $rx = $Xmax / $x1;
   $ry = $Ymax / $y1;

//Il faut maintenant vérifier de combien il faut réduire l'image pour qu'elle ne dépasse NI en largeur, NI en hauteur.
//Ainsi, si il faut redimensionner à 1/3 en largeur, et à 1/4 en hauteur, nous mettrons l'image à 1/4, car nous souhaitons garder les proportions
//On prend donc le rapport le plus petit
   $r0 = ($rx < $ry) ? $rx : $ry ;

//Ensuite, pour connaitre la taille de la miniture, il ne reste plus qu'à multplié la taille d'origine par le rapport
   $x2 = $x1 * $r0;
   $y2 = $y1 * $r0;

//On crée l'image qui servira à mettre la miniature, avec la largeur et la hauteur calculée jsute avant
   $res2 = imagecreatetruecolor($x2,$y2);

//On redimensionne l'image originale et on colle la miniature sur la nouvelle image, pour pouvoir l'enregistrer.
   imagecopyresized($res2,$res1,0,0,0,0,$x2,$y2,$x1,$y1);
   
//On peut retirer l'images originale de la mémoire, pour pouvoir réenregistrer la miniature à la place.
   imagedestroy($res1);

//On enregistre l'image à la place de l'originale
   if ($ext == 'gif')                   $reussi = imagegif($res2,$adresse);
   if ($ext == 'jpg' || $ext == 'jpeg') $reussi = imagejpeg($res2,$adresse);
   if ($ext == 'png')                   $reussi = imagepng($res2,$adresse);

//On peut retirer le'image de la mémoire, puisqu'elle est sauvegardée sur le disque.
   imagedestroy($res2);

//On renvoie le résultat, si l'opération à réussi, $reussi vaut TRUE, sinon, il vaudra FALSE
   return $reussi;
}
?> 

Eléphant du PHP | 147 Messages

03 août 2005, 00:47

Lors de l'appel de ta fonction il ne faut pas mettre function devant

Eléphant du PHP | 199 Messages

03 août 2005, 07:45

Merci !! J'avais reussi a faire marcher mais j'avais tout changé et en effet quand je ne marquais pas sn nom et sa marchait nikel merci de m'avoir expliquer l'erreur !!

Eléphant du PHP | 199 Messages

03 août 2005, 07:47

tite question quand j'ai appelé ma fonction a la fin je met le ; ou pas ?

Mammouth du PHP | 19672 Messages

03 août 2005, 10:37

Si tu as une fonction quelque part, par exemple
<?php
function xyz()
{
    //... code de la fonction
    return $zzz;
}
?>
Quand tu veux utiliser cette fonction pour transformer une valeur, tu feras:
<?php
//...
$valeur = xyz();
//...
?>
Donc là tu mets en effet lle ";" à la fin de l'instruction.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: