probleme function

Eléphanteau du PHP | 26 Messages

26 juil. 2012, 17:19

Bonjour,

j'ai un bout de code qui affiche une image inséré dans ma BDD, mais comme j'insere un catalogue en CSV, et que mes images sont enregistrées sans leur extensions, j'ai voulu le modifié en créant une fonction php.

Quand je crée une variable pour y ajouter l'extension et faire afficher l'image cela fonctionne "$pict".

mais quand je veux faire executer ma fonction 'image()", il ne la reconnais pas

Cette fonction sert à afficher une image par default si je n'ai pas encore enregistrer l'image dans le repertoires images.

Je vous copie le code en dessous.

Par avance, merci de votre aide.

<?php
$pict = $product_info['products_image'] . '.jpg';
$no = 'nopict.jpg';
?>

<?php
function image()
{
if(file_exists($no)) {
	echo($no);
} else {
	echo ($pict);
}
}
?>

<?php
$img = image();
?>
     
     <tr>
     	<td class="pageHeading" align="center" width="50%" >
<?php
    if (tep_not_null($product_info['products_image'])) {
?>
      
<script language="javascript"><!--
document.write('<?php echo '<a href="javascript:popupWindow(\\\'' . tep_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $product_info['products_id']) . '\\\')">' . tep_image(DIR_WS_IMAGES . image(), addslashes($product_info['products_name']), SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '</a><center>'.  $img_promotion_product ; ?>');
//--></script>
<noscript>



ViPHP
xTG
ViPHP | 7331 Messages

26 juil. 2012, 17:23

<?php
$img = image();
?>
     
     <tr>
Il y a comme un souci avec ton organisation du DOM.
On ne met rien entre deux tr.
Aussi ta fonction ne renvoie rien (aucun return), donc $img ne sert à rien.
Enfin tu as un problème de scope. A savoir que la variable locale $no n'existe pas dans ta fonction.
Il faut la déclarer global ou bien la passer en paramètre. ;)

Eléphanteau du PHP | 26 Messages

27 juil. 2012, 07:51

Bonjour,

Merci xTG pour tes explications. Mais j'avoue que je ne suis pas un expert et que la je rame.

Si quelqu'un pouvait m'expliquer un peu plus en détail.

Merci par avance.

Bonne journée

ViPHP
xTG
ViPHP | 7331 Messages

27 juil. 2012, 08:01

Pour la fonction tu as deux solutions comme je le disais, voici des exemples pour mieux comprendre :
$test = 'test';

function test0(){
  // on fait plein de truc mais aucun return
}
echo test0(); // aucun affichage

function test1(){
  return 'Ceci est un '.$test;
}
echo test1(); // affichera "Ceci est un" ainsi qu'une erreur de type warning car $test n'existe pas

function test2($parametre){
  return 'Ceci est un '.$parametre;
}
echo test2($test); // affichera 'Ceci est un test"

function test3(){
  global $test;
  return 'Ceci est un '.$test;
}
echo test3(); // affichera 'Ceci est un test"