Jump to content

[RESOLU] jointure


Recommended Posts

Bonjour,
je voudrai faire une faire une requête qui récupère le numéro de téléphone du client dans la table ps_address et l'affiche dans mon tableau mais j'y arrive pas. voici la fonction :
 
 

public function renderList()
	
	{
		
		$this->table = 'customer';
		$this->className = 'Customer';
		$sql = 'SELECT * FROM '._DB_PREFIX_.'customer';
		$query = 'SELECT a.phone, c.company FROM '._DB_PREFIX_.'address    a,'._DB_PREFIX_.'customer c WHERE a.id_customer = c.id_customer';
		
		if($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql) && $resultat = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query)){
			
			 $this->fields_list = array(
			 'id_customer' => array(
			 'title' => $this->l('Id'),
			 'width' => 140,
			 'type' => 'text',
			 ),
			 'lastname' => array(
			  'title' => $this->l('Noms'),
			  'width' => 140,
			  'type' => 'text',
			 ),
			 'firstname' => array(
			  'title' => $this->l('Prenoms'),
			  'width' => 140,
			  'type' => 'text',
			 ),
			 'birthday' => array(
			  'title' => $this->l('Date de naissance'),
			  'width' => 140,
			  'type' => 'text',
			 ),
			 'email' => array(
			  'title' => $this->l('Email'),
			  'width' => 140,
			  'type' => 'text',
			 ),
			 'phone' => array(
			  'title' => $this->l('Telephone'),
			  'width' => 140,
			  'type' => 'text',
			 ),
			'active' => array(
				'title' => $this->l('Enabled'),
				'align' => 'text-center',
				'active' => 'status',
				'type' => 'bool',
				'orderby' => false,
				'filter_key' => 'a!active'
			),
			);
			 
			 $helper = new HelperList();
     
			 $helper->shopLinkType = '';
			 $this->shopShareDatas = Shop::SHARE_CUSTOMER;
     
			 $helper->simple_header = false;
     
			// Actions to be displayed in the "Actions" column
			 $helper->actions = array('edit', 'delete', 'view');
     
			 $helper->identifier = 'id_customer';
			 $helper->show_toolbar = true;
			 $helper->title = 'Liste des clients';
			 $helper->table = 'customer';
     
			$helper->token = Tools::getAdminTokenLite('AdminModules');
			$helper->currentIndex = AdminController::$currentIndex.'&configure='.$this->name;
			return $helper->generateList($result, $this->fields_list);
		}
		return false;

	}

voici l'erreur qu'on m'affiche lorsque j'execute le code:

Warning à la ligne 200 du fichier C:\wamp\www\prestashop\classes\helper\HelperList.php
[2] Invalid argument supplied for foreach()

Edited by K.M.R72 (see edit history)
Link to comment
Share on other sites

Merci j'ai vu mon erreur, vous aviez raison. 

Maintenant j'ai un autre problème, dans l'aafichage de la liste des clients, je voudrai que lorsqu'on clique sur un client ,ça affiche ses informations , comment faire? j'ai déjà ma liste des clients et les boutons ('edit','view','delete') sont présents. lesfonctions edit et delete fonctionne à merveille. maintenant j'aimerai que le bouton view afiche les informations d'un client.

Link to comment
Share on other sites

Bien sûr, c'est assez simple. il suffit de créer un fichier php de votre choix dans lequel la classe à l'intérieur va hériter de la classe AdminCustomerController. ensuite vous créez une fonction voici un exemple:

essai.php

class salut extends AdminCustomerController{

    public function infoClient(){
      //on récupère l'id du client sur lequel on clique
      $client = Tools::getValue(id_customer);
      //on fait une requête pour récupérer ses informations
      $requete = Db::getInstance(_PS_USE_SQL_SLAVE)->executeS('SELECT * FROM '._DB_PREFIX_.'customer WHERE id_customer ='.$client); 

      return $requete;
    }
}

ensuite dans un autre fichier php vous appelez cette fonction en incluant tout d'abord le fichier essai.php, voici un exemple

 

exemple.php

include'../../essai.php; // on inclut le fichier essai

public function afficheInfo(){
   
   $var = new salut();
   $ex = $var->infoClient();
   $this->smarty->assign('client',$ex);
   return $this->display(__FILE__, 'affiche.tpl');
}

et dans le tpl vous utilisez la boucle {foreach} {/foreach} pour afficher les informations que vous désirez.

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...