Jump to content

Création d'un formulaire avec un champs lié dynamiquement avec les catégories articles


Recommended Posts

Bonsoir à toute la communauté !

Voilà, je débute en programmation Smarty et je coince sur le projet suivant : :red:
A partir d'un formulaire, le visiteur choisira un article puis donnera des dimensions dans deux champs distincts.
Ces trois informations serviront pour faire des calculs et rechercher un article selon ces paramètres.

Pour la réalisation du projet, j'ai dupliqué les fichiers contact-form.tpl et contact-form.php.
Ce n'est peut être pas la meilleure solution car je ne souhaite pas envoyer les informations par mail, mais simplement récupérer mes trois paramètres... On verra plus tard les adaptations à faire.

Je bloque dès le premier champs qui doit permettre au visiteur de sélectionner l'article comme on peut choisir le destinataire du message du contact-form.

Je n'arrive pas à relier dynamiquement ce champs avec la table article, j'ai une jolie liste vide. >:(

J'ai mis les fichiers TPL et PHP triturés et une image écran du formulaire en pièces jointes car le site n'est pas encore en ligne.

Merci par avance de vos conseils

41098_uPREDSOl1vAHaITQIwEU_t

calcul tpl.txt

calcul php.txt

Link to comment
Share on other sites

Merci Broceliande pour cette première piste.

Je viens de modifier la ligne 21 du fichier TPL en remplaçant le . par ->
J'ai effacé les données de navigations de Chrome et affiché la page du formulaire.

La liste reste vide.

Hormis ce problème de "." je n'arrive pas à comprendre comment ce champs peut lire les articles ??
Idem pour le contact-form.php, comment ce formulaire arrive-t-il à lire les informations de la tab AdminContacts ??

Une autre idée ?

Link to comment
Share on other sites

{$category["name"]|escape:'htmlall':'UTF-8'}



non plus ?

Dans ton code php tu as :

$smarty->assign('categories', Category::getCategories(intval($cookie->id_lang)));



Ce qui m'échappe c'est ce que tu veux lister, et ton niveau de compréhension de ce que tu fais actuellement.
Category::getCategories charge la liste des categories actives dans une langue donnée, et non des produits.

Si tu veux des produits d'une catégory c'est plutôt $category->getProducts(...) mais il faut avoir instancié $category, si tu veux tous les produits actifs, c'est plutot Product::getProducts(..) etc ...

A chaque besoin correspond une solution différente...

Une fois l'objet ou le tableau de résultats obtenu dans le php , il est 'passé' à smarty par le biais d'un

 $smarty->assign('mavaleur', $mavaleur);



Selon le cas de figure, ce peut être donc une simple variable, un tableau , ou un objet ...

Une autre remarque , ton menu déroulant n'affiche rien mais sa longueur semble indiquer qu'il a plusieurs éléments

Link to comment
Share on other sites

Bonsoir,

Pour ce qui est de ce que je veux lister :

- Ma liste de choix devrait m'afficher les produits d'une catégorie précise. L''id_catégory affichée dans le back-office est 8

Pour ce qui est de mon niveau de compréhension de ce que je fais : asymptotique à zéro car je débute. Là est le problème car je n'interprète pas ou mal le code. Existe-t-il un site Smarty pour les nuls où on trouve l'explication des syntaxes complexes ??

J'ai essayé de modifier le code :

1) Afficher tous les produits, pour m'entrainer sur un cas simple ...

$smarty->assign('produits', Product::getProducts(intval($cookie->id_lang)));

sans changer le reste du code dans le les fichiers php et tpl, ca ne marche pas ce qui me semble être normal.

Puis j'ai modifié les lignes du fichier php

elseif (!($id_product = intval(Tools::getValue('id_product'))) OR !(Validate::isLoadedObject($product = new product(intval($id_product), intval($cookie->id_lang)))))
     $errors[] = Tools::displayError('please select a product in the list');


et dans le fichier tpl

            

{l s='Item'}

{l s='-- Choose --'}
               {foreach from=$produits item=product}
{$product.name|escape:'htmlall':'UTF-8'}
               {/foreach}



 
       {foreach from=$produits item=product}


 {$product.description|escape:'htmlall':'UTF-8'}
       {/foreach}


Ça ne marche pas non plus

Pour ce qui est d'afficher les produits d'une catégory j'ai essayé :

$mavaleur = 8;
$smarty->assign('category', $mavaleur);
$smarty->assign('produits', $category->getProducts(intval($cookie->id_lang)));


Le code est-il bon ? Si oui que faut il modifier dans le reste du code car pour l'instant le résultat est au niveau de mon savoir 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...