Rdev Posted September 6, 2012 Share Posted September 6, 2012 Bonjour tout le monde, Je veux afficher les produits d'une catégorie à une zone sélectionné, c'est à dire, à l'entré du site le client rentre sont code postale, si son code postale appartient à la liste des codes postaux donc les produits de la catégorie s'affichent à ce client, sinon un message d'erreur s'affiche "votre code postale n'appartient pas à la liste" mon besoin comment utiliser la variable $address.postcode dans product-list.tpl je veux tester si $address.postcode appartient à la liste des codes postaux les produits de la catégorie s'affichent qui a une solution ? Link to comment Share on other sites More sharing options...
franckm1000 Posted September 6, 2012 Share Posted September 6, 2012 (edited) C'est peu clair votre demande ! Quand la personne rentre sur le site, vous voulez dire si un client arrive connecté ou si "n'importe qui" rentre ? Parce que ce n'est pas la même chose. Un client est une personne qui a un compte sur la boutique et qui peut se logger ou pas. Un visiteur est une personne quelconque. Vous dites, la personne doit rentrer son code postal, donc vous parlez d'un visiteur ? Déjà c'est quoi $address.postcode ? Ca ne veut pas dire grand chose. J'ai bien compris que voulez récupérer les valeurs du champ postcode dans la table address. Mais si vous parlez d'un visiteur, pourquoi chercher un code postal dans la table ? Ou alors vous parlez d'un client DEJA LOGGE et là il suffit de récupérer l'id_customer et d'aller interroger la table address pour y trouver le code postal. Edited September 6, 2012 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
Rdev Posted September 6, 2012 Author Share Posted September 6, 2012 oui je parle du client est déjà connecté Si le code postal du client apparient à la liste qu'elle déjà créé, dons les produits de la catégorie X s'affichent, et si le code postal du client n'apparient pas à la liste les produits ne s'affichent pas. donc je veux utiliser le champ code postale de la table adresse dans product-list.tpl pour tester si le code postal du client appartient à la liste ou non et merci Link to comment Share on other sites More sharing options...
franckm1000 Posted September 6, 2012 Share Posted September 6, 2012 Alors pour cela il va falloir commencer par récupérer l'id du client connecté. Pour cela, côté php: global $cookie: $id_customer=$cookie->id_customer; Ensuite, il faut aller chercher dans la table address la code postal pour ce client: $postcode=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer); Il suffit d'assigner ensuite la variable smarty. Donc... Tu ouvres le fichier: controllers/CategoryController.php Après: public function process() { Tu ajoutes: global $cookie; $id_customer=$cookie->id_customer; $postcode=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer); self::$smarty->assign('postcode',$postcode); Ensuite, dans ton fichier product-list.tpl tu n'as plus qu'à appeler le code postal: {$postcode.0.postcode} J'ai testé ça fonctionnait (1.4.8.2) 2 Link to comment Share on other sites More sharing options...
Rdev Posted September 6, 2012 Author Share Posted September 6, 2012 Merci un grand merci pour votre réponse ça marche très bien :) Link to comment Share on other sites More sharing options...
franckm1000 Posted September 6, 2012 Share Posted September 6, 2012 Une petit reco alors (like this) 1 Link to comment Share on other sites More sharing options...
Rdev Posted September 6, 2012 Author Share Posted September 6, 2012 Vous pouvez me dire pourquoi vous avez utilisé ce code {$postcode.0.postcode} le code marche bien mais je n'ai pas compris Link to comment Share on other sites More sharing options...
franckm1000 Posted September 6, 2012 Share Posted September 6, 2012 (edited) Parce que la requête que j'ai fait dans la base de données renvoie un tableau avec un "double" array du type: array([0]=>array([postcode]=>75000,[city]=>paris...)) Donc pour appeler les éléments il faut descendre 2 niveaux dans le tableau: premier niveau : 0 deuxième niveau: postcode On aurait pu utiliser peut être une autre méthode comme getRow mais j'ai tellement l'habitude d'utiliser cette méthode et puis comme ça marche PS: quand vous voulez connaître la forme du tableau d'une variable sous smarty utilisez: {$postcode|print_r} Utilisez également : {debug} pour visualiser l'ensemble des variables chargées par le script de la page en cours avec leur achitecture. Edited September 6, 2012 by franckm1000 (see edit history) 2 Link to comment Share on other sites More sharing options...
Rdev Posted September 6, 2012 Author Share Posted September 6, 2012 Merci une autre fois :) Link to comment Share on other sites More sharing options...
franckm1000 Posted September 6, 2012 Share Posted September 6, 2012 Effectivement, plutôt que de faire: $postcode=Db::getInstance()->ExecuteS('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer); On aurait pu faire: $postcode=Db::getInstance()->getRow('select * from '._DB_PREFIX_.'address where id_customer='.$id_customer); Et côté smarty on aurait récupéré: {$smarty.postcode} 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now