gudule1er Posted September 2, 2014 Share Posted September 2, 2014 Bonjour, voila plusieurs heures que j'essai de faire une contrôleur, voilà ou j'en suis : dans le fichier ConpatibiliteController.php class CompatibiliteControllerCore extends FrontController { public $php_self = 'Compatibilite'; public $ssl=true; public function initContent() { parent::initContent(); global $smarty; $req_sortie=Db::getInstance()->ExecuteS('select id_feature_value from '._DB_PREFIX_.'feature_value where id_feature=11'); $this->context->smarty->assign('value_select_req',$req_sortie); $req_next_step=$smarty->getTemplateVars('value_select_req'); $req_sortie2=Db::getInstance()->ExecuteS('select value from '._DB_PREFIX_.'feature_value_lang where id_feature_value="$req_next_step"'); $this->context->smarty->assign('req_sortie2',$req_sortie2); $this->setTemplate(_PS_THEME_DIR_.'Compatibilite.tpl'); } } dans mon fichier .tpl <pre> {$req_sortie2|var_dump} {$value_select_req|var_dump} valeur :{$req_next_step} </pre> et le retour sur mon front est : array(0) {} array(6) {[0]=>array(1) {["id_feature_value"]=>string(2) "46"}[1]=>array(1) {["id_feature_value"]=>string(2) "47"}[2]=>array(1) {["id_feature_value"]=>string(2) "48"}[3]=>array(1) {["id_feature_value"]=>string(2) "49"}[4]=>array(1) {["id_feature_value"]=>string(2) "50"}[5]=>array(1) {["id_feature_value"]=>string(2) "51"}} valeur : pas moyen de faire passer la valeur de 'id_feature_value' dans la deuxième requête... quelqu'un aurai une idée/solution ? Merci je suis en presta 1.6 Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Bonjour, Il faut faire : $req_sortie2=Db::getInstance()->ExecuteS('select value from '._DB_PREFIX_.'feature_value_lang where id_feature_value='.$req_next_step); (sortir $req_next_step de la chaîne de caractère) Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 si je fais ça j'ai : bool(false) Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 (edited) et si tu regarde bien ma variable $req_next_step est vide alors que je devrais avoir un chiffre dedans... Edited September 2, 2014 by gudule1er (see edit history) Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Mais en faite cela ne résoudra pas le problème car $req_next_step est un tableau de valeur et non pas une valeur... Le plus simple est de regrouper les 2 requêtes en une : $req_sortie=Db::getInstance()->ExecuteS(''select fl.value from '._DB_PREFIX_.'feature_value_lang fl, '._DB_PREFIX_.'feature_value f where f.id_feature=11 AND f.id_feature_value=fl.id_feature_value'); Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 plus rien ne s'affiche avec ta requête... Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 maintenant j'ai ça dans mon code : class CompatibiliteControllerCore extends FrontController { public $php_self = 'Compatibilite'; public $ssl=true; public function initContent() { parent::initContent(); global $smarty; //$req_sortie=Db::getInstance()->ExecuteS('select id_feature_value from '._DB_PREFIX_.'feature_value where id_feature=11'); $req_sortie=Db::getInstance()->ExecuteS(''select fl.value from '._DB_PREFIX_.'feature_value_lang fl, '._DB_PREFIX_.'feature_value f where f.id_feature=11 AND f.id_feature_value=fl.id_feature_value''); //foreach ( $req_sortie as $req_sortie_select_next) //$value_select_req=$req_sortie_select_next['id_feature_value']; $this->context->smarty->assign('value_select_req',$req_sortie); //$smarty->assign('value_select_req', $req_sortie[0]['id_feature_value']); //$req_next_step=$smarty->getTemplateVars('value_select_req'); //$req_sortie2=Db::getInstance()->ExecuteS('select value from '._DB_PREFIX_.'feature_value_lang where id_feature_value=$req_next_step'); //$this->context->smarty->assign('req_sortie2',$req_sortie2); $this->setTemplate(_PS_THEME_DIR_.'Compatibilite.tpl'); } } Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Normalement, tu devrais avoir les résultats en affichant {$value_select_req|var_dump}... As tu activé les mode devpour voir les erreur ? (fichier /config/defines.inc.php) Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 oui c'est activé et j'ai rien à l'écran... Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 ok ça fonctionne... tu avais fait $req_sortie=Db::getInstance()->ExecuteS(''select fl.value from '._DB_PREFIX_.'feature_value_lang fl, '._DB_PREFIX_.'feature_value f where f.id_feature=11 AND f.id_feature_value=fl.id_feature_value'); alors qu'il fallait $req_sortie=Db::getInstance()->ExecuteS('select fl.value from '._DB_PREFIX_.'feature_value_lang fl, '._DB_PREFIX_.'feature_value f where f.id_feature=11 AND f.id_feature_value=fl.id_feature_value'); merci Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 et maintenant comment je fais pour récupérer les variables ? Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Tout dépend de ce que tu veux en faire... Tu te retrouve avec un tableau de résultat dans $req_sortie qu'il faut traiter suivant tes besoins. Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 je veux afficher le résultat dans <select> Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 (edited) la j'ai ça en résultat array(6) { [0]=> array(1) { ["value"]=> string(7) "Aprilia" } [1]=> array(1) { ["value"]=> string(3) "BMW" } [2]=> array(1) { ["value"]=> string(5) "Buell" } [3]=> array(1) { ["value"]=> string(7) "Benelli" } [4]=> array(1) { ["value"]=> string(6) "Can Am" } [5]=> array(1) { ["value"]=> string(6) "Ducati" } } et je voudrais affiché la valeur de "value" dans un <select> Edited September 2, 2014 by gudule1er (see edit history) Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Dans le tpl, mettre le code suivant (je ne l'ai pas testé, il y a peut-être quelques modfis à faire) : <select name="___"> {foreach from=value_select_req item=option} <option value="{$option.value}">{$option.value}</option> {/foreach} </select> Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 ça fonctionne, il fallait mettre un $ devant le nom de la variable... merci Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 je peux encore te solliciter ? Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Quelle est la question ? Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 maintenant que j'ai ça, je voudrais afficher une seconde liste qui prend en compte l'élément sélectionné dans la première liste... Link to comment Share on other sites More sharing options...
SMorillon.com Posted September 2, 2014 Share Posted September 2, 2014 Pour faire ça, il faut utiliser du JavaScript. Soit tu prévoie toute les deuxièmes listes possibles dans le tpl, et tu gère par JavaScript l'affichage de la bonne deuxième liste en fonction de la première. Soit tu utilise de l'ajax en JavaScript pour demander au serveur le contenu de la deuxième liste quand un choix a été fait sur la première liste et tu l'affiche dans la page. Quelque soit la méthode choisie, il va falloir que tu fasse des recherche sur google pour mettre cela en place car cela sera trop complexe pour donner le code source qui te va bien sur le forum. Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 ok je vais regarder ça... et je ferai un retour ici pour vous faire par de mes avancés et/ou problème... merci pour ton aide Link to comment Share on other sites More sharing options...
gudule1er Posted September 2, 2014 Author Share Posted September 2, 2014 re, j'ai créer un fichier compatibilite.js jQuery(document).ready(function() { var $modele_moto = $('#modele_moto'); // à la sélection d une marque de moto $marque_moto.on('change', function() { var val = $(this).val(); // on récupère la valeur de la marque if(val != '') { $model_moto.empty(); // on vide la liste des moodels $.ajax({ url: '../../controller/front/CompatibiliteController.php', data: 'marque_moto='+ val, // on envoie $_GET['marque_moto'] dataType: 'json', success: function(json) { $.each(json, function(index, value) { $modele_moto.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); } }); }); ensuite j'ai fait ça dans mon tpl <script>../../js/compatibilite.js</script> <pre> {$value_select_req|var_dump} {$value_select_req2|var_dump} </pre> <form method="POST" action:"#"> <select name="marque_moto" id="marque_moto"> <option value="select">-- Sélectonner une marque --</option> {foreach from=$value_select_req item=option} <option value="{$option.id_feature_value}">{$option.value}</option> {/foreach} </select> <select name="model_moto" id="modele_moto" "> <option value="select">-- Sélectonner le modèle --</option> </select> </form> et j'ai créer une fonction dans mon fichier controller function ListeModelMoto() { $marque_moto=$_GET['marque_moto']; $req_sortie2=Db::getInstance()->ExecuteS('select fl.value, f.id_feature_value from '._DB_PREFIX_.'feature_value_lang fl, '._DB_PREFIX_.'feature_value f where f.id_feature=12 AND f.id_feature_value=$marque_moto'); $this->context->smarty->assign('value_select_req2',$req_sortie2); } par contre ça fonctionne pas... normal je nage un peu... 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