Jump to content

Récupérer le nom du pays d'une adresse


jlweb
 Share

Recommended Posts

Bonjour,

 

Dans un module, j'essaie de récupérer le nom du pays d'une adresse d'un utilisateur. J'arrive à récupérer l'id du pays, mais je souhaite récupérer le nom du pays correspondant à cet id.

 

La fonction de la classe de mon module : 

public static function getAll()
{
   $results = (Db::getInstance()->executeS('
   SELECT pc.`id_product_comment`, pc.`id_product`, IF(c.id_customer, CONCAT(c.`firstname`, \' \',  c.`lastname`), pc.customer_name) customer_name, pc.`content`, pc.`grade`, pc.`date_add`, pl.`name`, c.id_customer
   FROM `'._DB_PREFIX_.'product_comment` pc
   LEFT JOIN `'._DB_PREFIX_.'customer` c ON (c.`id_customer` = pc.`id_customer`)
   LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (pl.`id_product` = pc.`id_product` AND pl.`id_lang` = '.(int)Context::getContext()->language->id.Shop::addSqlRestrictionOnLang('pl').')
   WHERE pc.validate = 1
   ORDER BY pc.`date_add` DESC LIMIT 50'));

   foreach($results as $k=>$item){
      if((int)$item['id_customer']){
	$adresse = new Address(Address::getFirstCustomerAddressId((int)$item['id_customer'], true), (int)$cookie->id_lang);
	$results[$k]['city'] = $adresse->city;
	$results[$k]['postcode'] = $adresse->postcode;
	$results[$k]['id_country'] = $adresse->id_country;
				
	$country = new Country(Country::getNameById((int)$cookie->id_lang, $item['id_country']), (int)$cookie->id_lang);
	$results[$k]['countryname'] = $country->name;
				
       }
    }
		
    return $results;
}

Je veux ensuite afficher le nom du pays dans mon fichier TPL : {$comment.countryname}

{if $comments}
   {foreach from=$comments item=comment}
      {if $comment.content}
         <div class="comment clearfix">
		<div class="client">
                   {assign var=name value=" "|explode:$comment.customer_name}
	           {$name[0]} {$name[1]|substr:0:1} ... <span class="country">{$comment.countryname}</span>
                </div>
		<div class="comment_details">
	            <p>{$comment.content|escape:'html':'UTF-8'|nl2br}</p>
		</div>
	  </div>
       {/if}
   {/foreach}
{else}
//DIVERS
{/if}

Cela ne fonctionne pas. Avez-vous une piste ?

 

Merci d'avance

Share this post


Link to post
Share on other sites

Bonjour,

 

il faut corriger cela

	$country = new Country(Country::getNameById((int)$cookie->id_lang, $item['id_country']), (int)$cookie->id_lang);

soit vous faites un new Country avec l'id du dit pays, soit vous récupérez le nom avec la méthode Country::getNameById en statique, mais ne faites pas les 2 en même temps, cela plantera obligatoirement.

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Merci pour votre retour.

Je viens d'essayer en tenant compte de vos indications mais ça ne fonctionne pas.

 

J'ai remplacé 

$country = new Country(Country::getNameById((int)$cookie->id_lang, $item['id_country']), (int)$cookie->id_lang);

par 

$country = new Country($item['id_country'], (int)$cookie->id_lang);

=> sans succès.

 

Puis j'ai remplacé par

$country = Country::getNameById((int)$cookie->id_lang, $item['id_country']); 

=> sans succès également.

 

Je ne vois vraiment pas comment faire.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More