Jump to content

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


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

Link to comment
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.

Link to comment
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.

Link to comment
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
×
×
  • Create New...