Jump to content

j'essai de faire un controlleur


Recommended Posts

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

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

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

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

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 by gudule1er (see edit history)
Link to comment
Share on other sites

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

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

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