Hello, Guest |
| Register
Remember me Forgot password ?
Site Map Site Map Contact us Contact us
PrestaShop
  365 users online
Forum  >  Forum francophone  >  Modules tiers  >  Thread

 
Post Reply
New Topic
[RESOLU] Problème avec la fonction array()

offline
Posted: 22 December 2009 04:17 PM   [ Ignore ]
Beginner
Rank

Messages :

  • total: 18
  • last 7 days: 0
Joined: 2009-08-05

Bonjour,

Je n’arrive pas à récupérer correctement les données d’un champ de configuration afin de les traiter dans un tableau avec la fonction array. Il s’agit d’un module d’upload.

Voici les valeurs du champ UPLOADER_AUTH_EXT à traiter : “.pdf”, “.jpg”, “.jpeg”, “.eps”, “.ai”, “.psd”, “.tif”

Et si je fais un echo Configuration::get(‘UPLOADER_AUTH_EXT’), j’obtiens bien : “.pdf”, “.jpg”, “.jpeg”, “.eps”, “.ai”, “.psd”, “.tif”

Maintenant si j’utilise ma variable Configuration::get(‘UPLOADER_AUTH_EXT’) dans une fonction array, j’obtiens FALSE alors que si je la remplace par la chaine qu’elle est censée afficher “.pdf”, “.jpg”, “.jpeg”, “.eps”, “.ai”, “.psd”, “.tif”, j’obtiens TRUE.

Voici un exemple de mon code :

$b = array(Configuration::get('UPLOADER_AUTH_EXT'));
if (
in_array(".jpg"$b)){
echo "TRUE";
}else{
echo "FALSE";
}

J’ai essayé de filtrer Configuration::get(‘UPLOADER_AUTH_EXT’) avec addslashes() ou htmlentities() et rien n’y fait !!!

Pouvez-vous m’aider ?
Par avance merci.
Dominique

 
offline
Posted: 22 December 2009 06:11 PM   [ Ignore ]   [ # 1 ]
V.I.P.
RankRankRankRank
Avatar

Messages :

  • total: 871
  • last 7 days: 0
Joined: 2008-07-17

salut,

En copiant ton code, j’ai effectivement un false, mais j’ai surtout $b vide. Dans la table configuration, je n’ai rien qui ressemble à UPLOADER_AUTH_EXT. où as tu eu vu cette variable de configuration ?

Vu qu’il s’agit d’un module d’upload, je suppose que c’est toi qui as créé cette variable, donc je vais plutôt te conseiller de regarder (et de copier-coller ici pendant que tu y es) le résultat de ceci :

$b = array(Configuration::get('UPLOADER_AUTH_EXT'));
print_r($b);
echo 
"<br/><br/>RESULT: ".((in_array(".jpg"$b))?"TRUE":"FALSE");

 Signature 

logo_SotEWsStuff.png
http://sotew.com/
Add content on your PrestaShop website (pictures, flash and html) with AddBlocks V0.1.2 logo.gif
Demo website: http://demo.sotew.com/ - http://demo.sotew.com/back/

 
offline
Posted: 22 December 2009 07:29 PM   [ Ignore ]   [ # 2 ]
Beginner
Rank

Messages :

  • total: 18
  • last 7 days: 0
Joined: 2009-08-05

Merci pour ton aide.
J’ai tester ton code et j’ai toujours un retour FALSE !

 
offline
Posted: 22 December 2009 07:51 PM   [ Ignore ]   [ # 3 ]
Beginner
Rank

Messages :

  • total: 18
  • last 7 days: 0
Joined: 2009-08-05

Pour être complet, voici l’affichage du résultat :

Array ( [0] => “.pdf”, “.jpg”, “.jpeg”, “.eps”, “.ai”, “.psd”, “.tif” )
RESULT: FALSE

En clair, la fonction n’arrive pas à séparer les valeurs de la variable UPLOADER_AUTH_EXT pourtant l’affichage semble correct.

 
offline
Posted: 22 December 2009 08:23 PM   [ Ignore ]   [ # 4 ]
V.I.P.
RankRankRankRank
Avatar

Messages :

  • total: 871
  • last 7 days: 0
Joined: 2008-07-17

oki, donc c’est normal.

la fonction in_array($a, $b) test si un élément de $b est exactement $a.

Toi, tu as un seul élement dans ta liste, et c’est la chaine de caractère : ‘ “.pdf”, “.jpg”, “.jpeg”, “.eps”, “.ai”, “.psd”, “.tif” ‘ qui est différente de “.jpg “, donc ça renverra false.

Tu as plusieurs solutions, en voici une parmi d’autres :

Dans ta variable que tu as sans doute faite toi même arrange toi pour que le retour du print_r soit :

Array ( [0] => .pdf|.jpg|.jpeg|.eps|.ai|.psd|.tif )

ce qui chez moi pour le test correspond à faire :

$b = array('.pdf|.jpg|.jpeg|.eps|.ai|.psd|.tif');

puis test avec ceci :

$b = array(Configuration::get('UPLOADER_AUTH_EXT'));
print_r($b);
echo 
"<br/><br/>RESULT: ".((in_array(".jpg"explode('|'$b[0])))?"TRUE":"FALSE");

On pourrais aussi passer par la fonction strpos qui décomposera le premier élément de $b pour en trouver la chaine de caractère sans faire la décomposition de explode et le in_array, il y a toujours plusieurs façon de faire la même chose.

Fait attention, tu avais fait plusieurs erreurs dans ton code à la base :

in_array(".jpg"$b)
ne test pas la chaine de caractère “.jpg” mais .jpg. il aurait fallu mettre :
in_array('".jpg"'$b)

Aussi, il faut se méfier des extensions : .JPG est aussi une image jpeg, et un fichier peux très bien être avec une extensions ne correspondant pas à son type. Il conviendrais de ne pas tester les extensions mais le type du fichier obtenu dans la variable $_FILES de ton formulaire d’upload.

 Signature 

logo_SotEWsStuff.png
http://sotew.com/
Add content on your PrestaShop website (pictures, flash and html) with AddBlocks V0.1.2 logo.gif
Demo website: http://demo.sotew.com/ - http://demo.sotew.com/back/

 
offline
Posted: 22 December 2009 08:41 PM   [ Ignore ]   [ # 5 ]
Beginner
Rank

Messages :

  • total: 18
  • last 7 days: 0
Joined: 2009-08-05

[Resolu] Super tout fonctionne à merveille !!! Un grand Merci SotEW

 
offline
Posted: 22 December 2009 09:26 PM   [ Ignore ]   [ # 6 ]
V.I.P.
RankRankRankRank
Avatar

Messages :

  • total: 871
  • last 7 days: 0
Joined: 2008-07-17

Et bah de rien, et pense à mettre [Resolu] dans le sujet ^^

 Signature 

logo_SotEWsStuff.png
http://sotew.com/
Add content on your PrestaShop website (pictures, flash and html) with AddBlocks V0.1.2 logo.gif
Demo website: http://demo.sotew.com/ - http://demo.sotew.com/back/

 
offline
Posted: 02 February 2010 05:55 AM   [ Ignore ]   [ # 7 ]
Apprentice
RankRank

Messages :

  • total: 23
  • last 7 days: 0
Joined: 2010-01-13
domdas - 22 December 2009 08:41 PM
[Resolu] Super tout fonctionne à merveille !!! Un grand Merci SotEW

Hi Dominica:
I need this solution. Can you show me how to do it, am not very sure to amend it. Where to start and where to amend, can you please guide me? If you can help me, I’d be enormously grateful.

Regards,
a_sun

 
 
 
Fast Reply
New Topic