kunx Posted January 25, 2012 Share Posted January 25, 2012 Bonjour à tous! je m'explique, je voudrais créer une requête sql qui me liste les produits dont les stocks des attributs de mes déclinaisons sont égale a 1, et récupérer ce résultat. Avec un exemple se sera plus simple :-) Par exemple un tee-shirt qui comporte 4 tailles différentes: S,M,L,XL. Si le le stock de mon attributs S par exemple est égale 0, je ne veux pas que ma requête le liste. et dans quel fichiers exécuter cette requête, et recuperer le resultat que je veux afficher dans mon fichier product.tpl voila j'espere que vous m'avez comprit, et que quelqu'un pourra m'aider! merci d'avance! Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Regarde mon topic, j'ai un problème du même type, mais je suis sur le point de le résoudre (c'est à dire que j'ai des logos que j'enregistre dans plusieurs tables et qu'avec une requête je veux récupérer les logos attribués à un produit et donc récupérer dans mon template product.tpl le résultat de la requête.) En espérant que ça t'aide même s'il est pas totalement résolu : http://www.prestashop.com/forums/topic/151441-probleme-dinterpretation-code-smartyphp/page__pid__736739__st__40#entry736739 Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Bonjour! ;-) Merci beaucoup de la réponse ! j'essaie de comprendre tout ça! ^^ Ma requête que je veux realiser, est un peu differente du depart, apres reflexion ^^ Je voudrais faire une requete qui liste un produit dont le stock des attributs est egale a 1, et qui me revoit l'id de l'attribut du produit qui est egale a 1 ( order by rand) donc de façon aleatoire. donc si j'ai bien comprit, je copie mon fichier product.php, que je met dans override/classe. j'y ajoute ma variable public &stockattribut Puis je crée ma fonction */ public function get_attributstock( $id_product ) { je ne sais pas encore comment faire ma requete. return $attribut stock; } puis je surcharge le constructeur de la classe product.php Puis je recupere ma variable dans mon fichier tpl. Est-ce bien ça? merci :-) Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 la requete en SQL , quelque chose du genre : SELECT * FROM `ps_product_attribute` WHERE `quantity`= 1 Mais je vois que dans la table ps_product_attribute il n'y a pas les id_attribute, la valeur en question que je veux recuperer. je vois que id_product_attribute donne l'id correspondant dans product_attribute_combination. :-/ bon c'est pas gagné tout ça. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 En faite tu travail sur un fichier que tu dois créé : Product.php (si c'est bien la fiche produit que tu veux modifié) qu'il faut mettre dans override/classes/ lass Product extends ProductCore { public $stockattribut; /** * Retourne les logos associés au produit * @param $id_product : l'identifiant du produit * @return la liste des logos */ public function get_logos( $parametreSIExiste ) { global $cookie, $smarty; $stockattribut = array(); $sql = TAREQUETE; /* echo '<br/>id_product : '.$id_product; echo '<br/>sql: '.$sql;*/ $res = Db::getInstance()->ExecuteS($sql); /* echo '<br/>tableau : <br/><pre>'; print_r($res); echo '</pre>';*/ $i=0; if(!empty($res)) { foreach( $res as $r ) { $logos[ $parametreSIExiste ][$i]['nomAttribueAuChamp'] = $r['champ']; $stockattribut[ $parametreSIExiste][$i]['nomAttribueAuChamp'] = $r['champ']; $stockattribut[ $parametreSIExiste][$i]['nomAttribueAuChamp'] = $r['champ']; $i++; } session_start(); $_SESSION['nb']=$i; } return $logos; } public function __construct($parametreSIExiste = NULL, $full = false, $id_lang = NULL) { parent::__construct($parametreSIExiste, false, $id_lang); $this->logos = $this->get_logos($parametreSIExiste); } } ?> ET ensuite tu modifies ton fichier product.tpl qui se trouve dans themes/prestashop {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->$productattribute[$parametreSIExiste] [$smarty.section.boucle.index]['nomAttribueAuChamp']} <img width="25%" height="25%" src="http://www.lisica-informatique.fr/img/logo/{$name}" /> {/section} ici $nb de section-loop il s'agit de la valeur maximum attribué à i (comme pour boucle for) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Déjà ce qu'il serait bien c'est de définir la requête de façon plus clair : "les produits dont les stocks des attributs de mes déclinaisons sont égale a 1, et récupérer ce résultat." Car là c'est pas clair du tout qu'est ce que tu cherches à faire ? Tu utilises quel table ? si tu as en créer, elle ressemble à quoi (un MLD/MCD serait le bien venu ^^) ? et Ensuite il faut tester la requête directement dans PHPMyAdmin se sera plus simple de commencer par une requête qui marche Après on improvisera Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Merci encore une fois de ta réponse :-) malgres que c'est encore un peu confus , j'avoue que je me suis peut-être mal exprimé . je vais essayer de m'expliquer plus clairement. Donc j'ai un produit , avec par exemple 10 attributs possible exemple j'ai un produit avec comme nom de groupe " choisir sa taille" et dedans comme attribut j'ai 1,2,3,4,5,6,8,9,10, chaque attribut a pour stock /quantité 1, comme cela: 1=1 en stock ,2=1 en stock ,3=1 en stock ,4=1 en stock ainsi de suite jusque la ça va? je voudrais crée une requete sql qui me recupere au hasard id_attribut dont le stock est egale a 1 est non ceux dont le stock est egale a 0 Quand je fais cette requete sql SELECT * FROM `ps_product_attribute` WHERE `quantity`= 1 il me liste bien bien les produit dont les attributs sont egale a 1. Probleme dans la table "ps_product_attribute' il attribut une valeur "id_product_attribute" qui correspond a mes l'id_attribut du produit , mais la valeur que je voudrais récupérer est id_attribute qui est dans la table ps_product_attribute_combination. je sais pas si je me suis bien exprimer, ce n'est pas tres evident a comprendre, en tout cas merci a toi :-) edit image : Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Alors si je comprend bien tu as : ps_product_attribute(id_product_attribute,....,quantity) ps_product_attribute(id_attribute, #id_product_attribute) donc $sql = "SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1;"; c'est bien ça ? Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 OH Je dit ouii!! j'ai testé ça a l'air de fonctionner et de faire ce que je demande! MERCI MERCI BEAUCOUP! !!! Alors maintenant comment crée cette requete sql, dans prestashop pour recuperer la valeur d'un id attribut au hasard juste 1 :-) et l'afficher dans product.tpl en tout cas merci merci encore de prendre du temps sur mon probleme! je commençais a désespérer! :-D Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Ben déjà reprend les fichiers de ma réponse #5 au dessus (j'y ais ajouté des noms simples pour que tu comprennes plus qu'à reformuler selon tes besoins ) et pour afficher les erreurs va dans config/config.inc.php l29 : @ini_set('display_errors', 'off'); Tu met 'on'. tu me diras ce que ça donne. Et on verra si je peux t'aider. Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Okey, je vias y aller doucement, car c'est un peu compliquer pour moi : alors dans mon fichier product.php que j'ai copié dans ovveride/classe j'ai rajouter cela : public $stockattribut; /** * Retourne les logos associés au produit * @param $id_product : l'identifiant du produit * @return la liste des logos */ public function id_attributduproduit( $parametreSIExiste ) { global $cookie, $smarty; $stockattribut = array(); $sql = 'SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1;'; /* echo '<br/>id_product : '.$id_product; echo '<br/>sql: '.$sql;*/ $res = Db::getInstance()->ExecuteS($sql); /* echo '<br/>tableau : <br/><pre>'; print_r($res); echo '</pre>';*/ $i=100; if(!empty($res)) { foreach( $res as $r ) { $stockattribut[ $parametreSIExiste ][$i]['nomAttribueAuChamp'] = $r['champ']; $stockattribut[ $parametreSIExiste][$i]['nomAttribueAuChamp'] = $r['champ']; $stockattribut[ $parametreSIExiste][$i]['nomAttribueAuChamp'] = $r['champ']; $i++; } session_start(); $_SESSION['nb']=$i; } return $stockattribut; } public function __construct($parametreSIExiste = NULL, $full = false, $id_lang = NULL) { parent::__construct($parametreSIExiste, false, $id_lang); $this->stockattribut = $this->id_attributduproduit($parametreSIExiste); } mais je comprend pas trop a quoi correspond mon nom attribué au champ dans un premier temps. on va y aller etape par etape, deja je sais si toute mes variable sont bonne, pour recuperer l'id attribut correpondant. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Tu lui donnes le nom que tu veux pour que tu comprennes à quoi ça correspond ^^ quand tu voudras le récupérer dans le template Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Bon apres plusieurs essaie je galere totalement, ma page produit s'affiche en blanc, avec un plein d'erreur , j'ai essayer de corriger les erreur dans le product.php, je crois que je n'en n'ai plus voici mon code : public $stockattribut; /** * Retourne les logos associés au produit * @param $id_product : l'identifiant du produit * @return la liste des logos */ public function attributval( $parametreSIExiste ) { global $cookie, $smarty; $stockattribut = array(); $sql = 'SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1;'; /* echo '<br/>id_product : '.$id_product; echo '<br/>sql: '.$sql;*/ $res = Db::getInstance()->ExecuteS($sql); /* echo '<br/>tableau : <br/><pre>'; print_r($res); echo '</pre>';*/ $i=100; if(!empty($res)) { foreach( $res as $r ) { $stockattribut[ $parametreSIExiste ][$i]['attributval'] = $r['id_attribute']; $i++; } session_start(); $_SESSION['nb']=$i; } return $stockattribut; } public function __construct($parametreSIExiste = NULL, $full = false, $id_lang = NULL) { parent::__construct($parametreSIExiste, false, $id_lang); $this->stockattribut = $this->attributval($parametreSIExiste); } apres je ne sais pas si ma requete est bonne pour afficher ce que je veux... enfin vaguement. mais j'ai erreur dans le fichier tpl pour afficher l'id_attribut.... :-/ Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 1 - $parametreSIExiste il faut que tu le remplaces ou que tu le supprimes si tu l'utilises pas (partout dans le fichier) par exemple pour moi c'était $id_product car je l'affichais sur la fiche product n1...n3 et que la requête changeait en fonction du numéro /* echo '<br/>id_product : '.$id_product; echo '<br/>sql: '.$sql;*/ Tout ce qu'il y a en commentaire tu peux le mettre en normale (hormis les commentaires explicatifs) ça permet de voir les erreurs. Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 il me marque ça , c'est dans mon code du tpl : {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->$stockattribut [$smarty.section.boucle.index]['attributval']} {/section} SmartyCompilerException: Syntax Error in template " C:\wamp\www\prestashoptest2\prestashop/themes/prestashop/product.tpl" on line 340 "{assign var=name value=$product->$stockattribut [$smarty.section.boucle.index]['attributval']}" - Unexpected "[", expected one of: "}" , " " in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line [i]431[/i] Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Envoi ton code du template avec les nouvelles modifications Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 voici : {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->$stockattribut[$parametreSIExiste] [$smarty.section.boucle.index]['attributval']} {/section} la j'ai laisser le $parametreSIExiste , si je l'enleve je dois le virer dans product.php aussi c'est bien ça? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Oui si tu l'enlèves tu dois l'enlevé partout dans le product.php là c'est evident qu'il y a erreur $parametreSIExiste n'a aucune valeur et désolé je me suis trompé je voulais voir le product.php ^^" (envoi product.php et les erreurs une fois $parametre viré partout) Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Alors voici j'ai mi tout les parametres en commentaire , je ne sais pas si c'est correcte. public function attributval( /*$parametreSIExiste*/ ) { global $cookie, $smarty; $stockattribut = array(); $sql = 'SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1;'; echo '<br/>id_product : '.$id_product; echo '<br/>sql: '.$sql; $res = Db::getInstance()->ExecuteS($sql); /* echo '<br/>tableau : <br/><pre>'; print_r($res); echo '</pre>';*/ $i=100; if(!empty($res)) { foreach( $res as $r ) { $stockattribut/*[ $parametreSIExiste ]*/[$i]['attributval'] = $r['id_attribute']; $i++; } session_start(); $_SESSION['nb']=$i; } return $stockattribut; } public function __construct(/*$parametreSIExiste = NULL,*/ $full = false, $id_lang = NULL) { parent::__construct(/*$parametreSIExiste,*/ false, $id_lang); $this->stockattribut = $this->attributval; j'ai enlever celui du tpl aussi : {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->$stockattribut [$smarty.section.boucle.index]['attributval']} {/section} j'ai cette erreur : ( ! ) SmartyCompilerException: Syntax Error in template "C:\wamp\www\prestashoptest2\prestashop/themes/prestashop/product.tpl" on line 340 "{assign var=name value=$product->$stockattribut [$smarty.section.boucle.index]['attributval']}" - Unexpected "[", expected one of: "}" , " " in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 431 Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 j'ai cette erreur la aussi : Notice: Undefined property: Product::$attributval in C:\wamp\www\prestashoptest2\prestashop\override\classes\Product.php on line 348 Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 Alors voici j'ai mi tout les parametres en commentaire , je ne sais pas si c'est correcte. public function attributval( /*$parametreSIExiste*/ ) { global $cookie, $smarty; $stockattribut = array(); $sql = 'SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1;'; echo '<br/>id_product : '.$id_product; echo '<br/>sql: '.$sql; $res = Db::getInstance()->ExecuteS($sql); /* echo '<br/>tableau : <br/><pre>'; print_r($res); echo '</pre>';*/ $i=100; if(!empty($res)) { foreach( $res as $r ) { $stockattribut/*[ $parametreSIExiste ]*/[$i]['attributval'] = $r['id_attribute']; $i++; } session_start(); $_SESSION['nb']=$i; } return $stockattribut; } public function __construct(/*$parametreSIExiste = NULL,*/ $full = false, $id_lang = NULL) { parent::__construct(/*$parametreSIExiste,*/ false, $id_lang); $this->stockattribut = $this->attributval; j'ai enlever celui du tpl aussi : {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->$stockattribut [$smarty.section.boucle.index]['attributval']} {/section} j'ai cette erreur : ( ! ) SmartyCompilerException: Syntax Error in template "C:\wamp\www\prestashoptest2\prestashop/themes/prestashop/product.tpl" on line 340 "{assign var=name value=$product->$stockattribut [$smarty.section.boucle.index]['attributval']}" - Unexpected "[", expected one of: "}" , " " in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\sysplugins\smarty_internal_templatecompilerbase.php on line 431 à mon avis l'erreur viens d'ici met un $name avant {/section} et enlève l'espace après $stockattribut Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 je sais pas tu as vue le dernier message j'ai cette erreur aussi,( du coup vue que j'ai enlever les parametres Notice: Undefined property: Product::$attributval in C:\wamp\www\prestashoptest2\prestashop\override\classes\Product.php on line 348 je vais faire ta manip je te dit quoi : Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 25, 2012 Share Posted January 25, 2012 ca bug un peu, pour l'instant je dois y aller, je t'aiderais demain Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Alors j'ai enlever l'espace j'ai une page avec produit introuvable.. et toujours cette erreur , ça avance un peu ! Notice: Undefined property: Product::$attributval in C:\wamp\www\prestashoptest2\prestashop\override\classes\Product.php on line 348 Link to comment Share on other sites More sharing options...
kunx Posted January 25, 2012 Author Share Posted January 25, 2012 Okey ça marche! je vais essayer encore de mon coté! en tout cas merci beaucoup de ton aide et du temps consacré , c'est gentil! a demain alors. :-) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 26, 2012 Share Posted January 26, 2012 Me revoilà Alors il manquait les parenthèses au niveau de la 4ème ligne : public function __construct( $full = false, $id_lang = NULL) { parent::__construct( false, $id_lang); $this->stockattribut = $this->attributval(); } Link to comment Share on other sites More sharing options...
kunx Posted January 26, 2012 Author Share Posted January 26, 2012 (edited) Re bonjour! :-) Alors j'ai fait les modification que tu m'as donné, mais toujours des petits problemes je t'envois le tout : product.php , mon code tpl, et l'erreur. quand je remplace echo '<br/>id_attribute : '.$id_attribute; par $stockattribut il affiche produit inexistant , et il affiche ma requête sql voila ;-) il y a un probleme dans la requete? :-/ ou la requete ne liste pas les combinaisons du produit concerné? mhhh :-/ Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 26, 2012 Share Posted January 26, 2012 Normale ton $id_attribute n'a aucune valeur pareil pour $stockattribute enlève cette ligne, elle me servait pour voir une de mes variables mis en paramètre de la fonction ici tu n'en as pas donc pas besoin Link to comment Share on other sites More sharing options...
kunx Posted January 26, 2012 Author Share Posted January 26, 2012 (edited) Oui je me disais qu'il y avait un probleme avec ça ^^ alors j'ai enlever la ligne en question ce qui me donne : mais toujours produit introuvable avec affiche de la requete sql... :-/ petit detail je sais pas si ça a de l'importance, quand je remet les $parametreSIExiste il m'affiche le produit , avec des listes de tableaux sur ma fiche produit mais avec des erreurs du debug dedans... bon c'etait pour la remarque. deuxieme remarque qui peut jouer peut-être dans mon fichier product.php dans class/override, j'ai du supprimer la fonction ___construct, car j'ai du crée un nouveau champ dans mon backoffice, du coup je rajoute la fonction comme dans le code ci dessus apres ma fonction. Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
kunx Posted January 27, 2012 Author Share Posted January 27, 2012 En affichant les echo de la requete, je vois bien qu'il execute mon tableau avec ma requete, mais je ne comprend pas pourquoi prestashop me marque erreur 1: produit introuvable. La requete doit afficher les id_attribut disponible, pour un produit. en faite la requete ne selectionne pas le produit concerner, enfin je ne sais pas trop. je me suis peut-être mal exprimer. Pour un produit affiché je veux qu'il me liste les combinaison disponible , stock=1 TOUT mes produits on des combinaison differentes, certain on une liste de 10, d'autre 50. quand j'affiche ma requete, il me liste toute mes combinaisons de ma BD, et non ceux disponible par produit, ce qui expliquerais peut etre produit introuvable. Link to comment Share on other sites More sharing options...
kunx Posted January 29, 2012 Author Share Posted January 29, 2012 Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 "1: produit introuvable" cette erreur il te l'affiche dès qu'il y a une erreur peu importe laquelle donc en faite c'est pas ça qui va nous dire où est l'erreur ^^ Où se trouve l'information "disponible" ? Notre requête : $sql = 'SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1;' tu veux peut-être quand la "quantity >= 1" non ? car des quantités égale à 1 il doit pas y en avoir Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 (edited) Bonjour Elisabeth :-) Alors oui erreur 1: produit introuvable, ça se passe quand je suis sur la page product.php, le mode debug n'affiche plus d'erreur, c'est ça qui est etrange. le code: avec erreur 1: produit introuvable. ça c'est mon code les quantity corresponde au stock des combinaison du produit , tout mes combinaison on un stock egale a 1. Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 Et ta requête marche bien quand tu l'exécutes dans phpmyadmin ? Et $i=100; ? c'est censé être égale à 0 dans mon exemple... faut que ça reste comme ça c'est juste un indice. Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 Oui quand je l’exécute dans php my admin il m'affiche bien ce que je veux. les numero qui ne s'affiche pas sont bien ceux dont la quantity n'est pas egale a 1. $i correspond a quoi exactement, je l'ai mi a 0 mais ça n'a rien changer, c'est pour lister mes attributs? peut importe le nombre d'attribut dans ma liste, si j'en est 100 il va tout lister c'est bien ça? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 Oui c'est en gros pour écrire un tableau $i = 0 => premier attribut qu'il trouve $i = 1 => Deuxieme.... mais essai d'écrire ça : $stockattribut[$i]= $r['id_attribute']; je pense c'était ça le problème j'avais mis un tableau à 2 dimensions car je voulais récupérer id_product et ensuite si trouvé pour la fiche produit n1 les infos avec un id_product=1 ^^ et toi tu ne veux pas faire en fonction de l'id_attribute Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 (edited) ah okey okey, d'ou $i= 0 ;-) ça marche ^^. alors j'ai remplacer le code comme comme ci dessous: Toujours produit intoruvable comme ici : Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 et dans le fichier template product.tpl tu as mis quoi dans le code tu l'as modifié par rapport à l'id_attribute qu'on vient d'enlever ? Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 ça c'est mon code dans product.tpl : {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->$stockattribut[$variable][$smarty.section.boucle.index]['attributval']} {/section} non je l'ai pas modifié... dans * variable je met id_attribut? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 {assign var=name value=$product->$stockattribut[$smarty.section.boucle.index]} il y a juste ça à changer Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 j'ai changé mais toujours produit introuvable... :/ donc le probleme viendrait de la requete je suppose? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 et tu supprimes bien au fur et à mesure la compilation ? dans tools/smarty ou smarty2/compile ? car sinon toutes les modifications qu'on fait servent à rien si la requête effectue bien ce que tu veux dans phpMyAdmin c'est pas un problème de requête Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 C'est a dire? j'ai activer l'option pretsashop, Forcer la compilation, et desactiver le cache, ça ne suffit pas? Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 ce qui est bizard, apres je sais pas, quand je supprime la fonction construct, il m'affiche bien mon produit et le debug me fais un tableau avec une erreur undefined nb. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 Oula je sais pas là. Normalement vu que c'est une classe le construct est obligatoire. Pour l'option je connais pas l'option mais sur le serveur ou en local il faut que tu supprimes tous les fichiers du compile que je t'ai indiqué. Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 oui pour la fonction construct, c'etait une remarque si je la supprime il n'affiche plus ma requete aussi. c'etait une simple observation... :-/ donc okey je supprime les fichier dans smarty/compil, j'ai des fichier *.php et *.tmp je supprime le tout,en laissant le fichier index.php j'ai supprimer le tout, mais ça fait toujours produit introuvable. et oui tu as une option, dans l'admin de presta, preference/performance ;-) Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 Quand je remet $parametreSIExiste il m'affiche mon produit, avec des erreur du debug partout. A quoi servait, ce parametres? j'ai pas tout compris la dessus. edit: j'ai rien dit , ça fait pareil produit introuvable... :-/ Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 Tu peux l'enlever partout il est inutile ici (et si tu le supprimes dans le template supprime bien la compile) Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 Alors j'ai fais tout ça, mais toujours le meme resultat, mais quand je touche a la fonction construct, j'ai du nouveau avec des nouvelle erreur mon ancien code etait : public function __construct($full = false, $id_lang = NULL) { parent::__construct($full= false, $id_lang= NULL); $this->stockattribut = $this->attributval(); } j'ai modifier comme cela : public function __construct($full = false, $id_lang = NULL) { parent::__construct($full, $id_lang); $this->stockattribut = $this->attributval(); } j'ai enlever dans parent::__construct les = flase et = null De la il m'affiche mon produit et affiche la requete 2 fois ( 1 fois car je laisse les echo dans la requete pou voir),et cette fois ci dans ma div du produit, et m'affiche un array aussi. avec des nouvelles erreurs. alors je ne sais pas si c'est correcte ce que 'jai fait mais voici les erreur : ( ! ) Notice: A session had already been started - ignoring session_start() in C:\wamp\www\prestashoptest2\prestashop\override\classes\Product.php on line 332 ça j'ai enlevé le session dans la requete pour voir ça change rien. ( ! ) Notice: Undefined variable: stockattribut in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\sysplugins\smarty_internal_data.php on line 291 ( ! ) Warning: htmlentities() expects parameter 1 to be string, array given in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\plugins\modifier.escape.php on line 30 voila alors je ne sais pas si je suis sur la bonne piste. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 30, 2012 Share Posted January 30, 2012 Ce que j'ai moi : public function __construct($id_product = NULL, $full = false, $id_lang = NULL) { parent::__construct($id_product, false, $id_lang); $this->logos= $this->get_logos($id_product); } Regarde le false il est seul ya pas de "=" et $id_lang reste tel quel donc pour toi public function __construct($full = false, $id_lang = NULL) { parent::__construct(false, $id_lang); $this->stockattribut= $this->attributval(); } Link to comment Share on other sites More sharing options...
kunx Posted January 30, 2012 Author Share Posted January 30, 2012 j'ai placer le code comme ci-dessus mais erreur 1:produit introuvable cette fois ci.... :-/ Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 Alors me revoila, j'ai trouvé la requête exacte que je veux faire qui est celle ci: $sql = 'SELECT id_attribute FROM ps_product_attribute pa INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE quantity=1 ORDER BY RAND() LIMIT 1'; elle fonctionne, elle m'affiche bien un id_attribut au hasard, juste 1 comme je voulais, et le bute et que je voudrais juste recuperer la valeur de l'id_attribut aleatoire.plus besoin de tableau alors? cette requete, va lister tout les attributs egale a 1 et m'en donnée 1 au hasard, oui mais par produit? si produit id=1 et dedans il y a 10 attribut ça va bien me donné un chiffre entre 1 et 10, ou le stock egale 1, ou lister tout mes attributs de ma liste de ma BD, ce qui n'aurais pas de sens. et ça dans mon tpl juste ça : {assign var=name value=$product->$stockattribut} ça me met undefined strockattribut. Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 En tout cas j'espere que c'est plus clair pour toi maintenant avec ça. :-) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index]['attributval']} {$name} {/section} Essai comme ça, et surtout supprime les fichiers du compile Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 j'ai bien integré , ce code, mais maintenant il me marque : ( ! ) Notice: Undefined variable: nb in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\sysplugins\smarty_internal_data.php on line 291 mais question j'ai toujours besoin de mon tableau malgres que je veux recuperer juste une valeur ? bon ça a changé de variable c'est deja ça ... Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 {assign var=nb value=$smarty.session.nb} {if $nb != 0} <center> {assign var=id value=$product->id} {section name=boucle start=0 loop=$nb step=1} ton code comme là {/section} {/if} J'ai oublié de te donner le début Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 ah okey merci!! ;-) donc maintenant changement d'erreur : ( ! ) Notice: Undefined index: attributval in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\compile\77a1e606a93272a01bb4300fad38f188371022a9.file.product.tpl.php on line 407 ça avance ça avance... Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 et si tu l'enlève du template le ['attributval'] Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 quand je l'enleve, il m'affiche le produit, mais sans rien, plus d'erreur certe, mais j'ai pas ma variable qui s'affiche. {assign var=nb value=$smarty.session.nb} {if $nb != 0} <center> {assign var=id value=$product->id} {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut} {$name} {/section} {/if} ça m'affiche array Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 ah ^^ même avec {$name} ? Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 ^^ oui oui oui j'ai réedité mon message j'avais oublier le {$name} et la il maffiche array quand je met le name. ça devient bon enfin je pense... ^^ lol Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 peux-tu remettre le tpl et le php car à force de modifier je me perds dans les versions ? Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 (edited) oui pas de soucis ^^ :-) Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 essai dans le php de mettre dans le foreach: $stockattribut[$i] = $r['id_attribute']; ça : {assign var=id value=$product->id} tu t'en sers pas, tu peux l'enlever Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 alors j'ai rajouter ce code, et enlever l'autre exacte il ne servait a rien ;-) mais cela me marque toujours array... Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 eu je crois que j'ai trouvé... :-) enfin pas sure!!! lol mais ça a l'air de fonctionner! wouh! mais je sais pas enfaite dans ce code foreach( $res as $r ) { $stockattribut[$i] = $r['id_attribute']; $i++; } j'ai enlever le[$i] et ça m'affiche bien un chiffre qui change tout le temps a chaque rechargement. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 ici : {assign var=name value=$product->stockattribut} ya pas le [$smarty.section.boucle.index] qui correspond à $i Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 Oui exacte j'ai rajouter ça, ça fonctionne aussi ça fait le meme, affiche un numero a chaque rechargement, ahlala quel bonheur quand ça marche!! merciii beaucouppp en tout cas!! apres 1 semaine dessus, on y arrive! grace a toi ! :-) c'est fort gentil en tout cas! et un grand grand merci!!! :-) j'ai encore quelque question a te poser, pour finir mon projet, j'ai un bouton aleatoire, et je voudrais quil m'execute la requete a chaque fois que je clique sur le bouton , pour changer de chiffre, et pour m'afficher les combinaison disponible . <input type="button" onclick="this.form.choice.value=aleatoire()" value="bouton" > aleatoire ou j'appelerais la requete. comment appeler une requete dans un fichier javascript? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 if(isset("bouton")){ /* ici modifiie ton chiffre */ } appel input "bouton" (name="bouton") Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 mhh je n'ai pas tout comprit. ma variable qui change a chaque rechargement et {$name} c'est elle qui me donne un id_attribut dispo, ça c'est ok. quand je fais un onclick, il appelle ma fonction aleatoire() qui a chaque clique doit me donner un numero different disponible. donc dans ma fonction js, aleatoire(){name} si je fais juste il m'affiche le meme chiffre tout le temps?... faut le declarer dans le tpl non?? j'ai fait ça en parametre dans mon fichier tpl product : var name= '{$product->stockattribut}'; dans mon fonction aleatoire : function aleatoire() {var v1=name;return v1;} ça m'affiche array. Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 dans mon fonction aleatoire j'ai mit : function aleatoire() { var v1=name; return v1; } quand je clique il me retourne toujours le meme chiffre... comment appeler la fonction a chaque clique? pour donner un numero dispo different. Link to comment Share on other sites More sharing options...
coeos.pro Posted January 31, 2012 Share Posted January 31, 2012 $my_array = array(0,1,2,3,4,5,6,7,8,9); return array_rand($my_array); Link to comment Share on other sites More sharing options...
coeos.pro Posted January 31, 2012 Share Posted January 31, 2012 oups, si tu comptes le faire en smarty, met juste : {assign var=valeur_aleatoire value=$name|array_rand} j'espère ne pas me tromper Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 Bonjour coeos.pro ;-) merci de ta réponse, malgré que c'est un peu confus. je vais tout rexpliquer alors la ici c'est mon bouton : <input type="button" onclick="this.form.choice.value=aleatoire()" value="bouton" > dans mon fichier js j'appelle aleatoire() il y a ça : function aleatoire() { var v1=name; return v1; } quand je fais ça et que je click il m'affiche toujours la meme valeur ... ça c'est mon tpl qui recuperer un id_attribut au hasard ou le stock = 1 a chaque rechargement de page... {assign var=nb value=$smarty.session.nb} {if $nb != 0} <center> {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index]} {$name} {/section} {/if} quand je rentre ça dans mon fichier tpl il m'affiche ça: {assign var=valeur_aleatoire value=$name|array_rand} ( ! ) Warning: array_rand() expects parameter 1 to be array, string given in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\compile\77a1e606a93272a01bb4300fad38f188371022a9.file.product.tpl.php on line 416 en faite pour faire simple je veux que quand je clique sur mon button il régénère (donc appeler la requete, a chaque clique, pour me régénérer un id_attribut au hasard ou le stock est egale a 1. je sais pas si je me suis bien expliquer. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 il t'en donne déjà un au hasard, avec ce code et tu voudrais en fait qu'autant de fois que tu cliques il t'en donne un nouveau ? Et bien moi je le ferais pas en js, je ferais plus simple, {assign var=nb value=$smarty.session.nb} {if $nb != 0} <center> {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index]} {$name} {/section} {if (isset("bouton"))} {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index]} {$name} {/section} {/if} {/if} Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 oui voila, il m'en donne un au hasard, mais bizarement tout le temps meme, meme apres avoir recharger la page... oui voila a chaque fois que je clique il me donne un id_attribut disponible comme el fait la requete ;-) quand je rentre ton code : {if (isset("bouton"))} {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index]} {$name} {/section} {/if} Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\prestashoptest2\prestashop\tools\smarty\compile\77a1e606a93272a01bb4300fad38f188371022a9.file.product.tpl.php on line 418 Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 Alors ça recherche sur internet, l'équivalent de isset en smarty car isset c'est du php Et si tu changes le $i, en fesant start=1 ? A mon avis en faite vu que tu as mis un RAND() il te donne plus qu'une valeur dans ton tableau au lieu de toute. Donc le $i sert à rien alors si tu enlèves le RAND() et que tu utilises ceci : $i= rand(0, $nb); là il te donne une valeur de $i au hasard dans le tableau donc on reprend {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index]} {$name} {/section} et on remplace par : {assign var=name value=$product->stockattribut[$i]} {$name} Essai, c'est de l'impro donc je suis pas sûre de moi. ^^ oubli pas de placer : $i= rand(0, $nb); Link to comment Share on other sites More sharing options...
kunx Posted January 31, 2012 Author Share Posted January 31, 2012 Alors j'ai tester, j'ai enlever le order by rand dans la requete; puis j'ai remplacer $i= rand(0, $nb); j'ai mi le code du tpl [/color][/size][/font][/color][/size][/font] {assign var=nb value=$smarty.session.nb} {if $nb != 0} <center> {assign var=name value=$product->stockattribut[$i]} {$name} {/if} mais j'ai cette erreur Notice: Undefined variable: nb in C:\wamp\www\prestashoptest2\prestashop\override\classes\Product.php on line 320 Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted January 31, 2012 Share Posted January 31, 2012 OUPS on est en smarty Je dois y aller : recherche sur le net l'équivalent de random en smarty pour faire ça : $i= rand(0, $nb); Link to comment Share on other sites More sharing options...
kunx Posted February 1, 2012 Author Share Posted February 1, 2012 Mhh j'ai regardé un peu tout ça les isset d'apres ce que j'ai vue {if isset(...)} mais pas sure, et puis pour random, je crois que tu peux utiliser rand, mais se serais pas plus simple de faire une requete ajax, qui rafraichie ma fonction a chaque clique? mais je sais pas trop comment faire. Enfin je bloque depuis 3 heures sur un probleme pas prévue a cause de ma fonction j'ai un message d'erreur quand je clique sur "ajouter au panier" ci-dessous, n'imaginez meme pas ma tete quand j'ai vue ça. Alors j'ai chercher pendant des heures, mais rien n'y fait certe quand je desactive l'ajax du panier ça marche, mais je ne veux absolument pas le desactiver. quand j'enleve ma fonction ___contruct (oui encore elle...) ça remarche, mais plus ma requete du coup. public function __construct($id_product = NULL, $full = false, $id_lang = NULL) { parent::__construct($id_product,$full, $id_lang); $this->stockattribut = $this->attributval(); } je sais pas pourquoi depuis le debut cette fonction ne me plait pas. enfin j'ai regarder sur le forge de presta essayez pas de mal de chose , mais rien..... donc la c'est blocage total. ça avancé d'un coté, pour avoir une erreur ailleurs... :-/ edit: quand j'enleve les parentheses : $this->stockattribut = $this->attributval(); ça remarche mais jai plus ma variable du coup...ne faudrais t'il pas mettre un parametres dedans du coup. il manque un petit truc a la requete, elle liste toute mes combinaisons de la bd, mais je l'ai voudrais par produit, justement ce n'est pas a cause de ça que j'ai cette erreur, vue qu'il liste toute les combinaisons confondus, arrivé sur le produit il y a des id attribut qui corresponde a d'autre produit. Link to comment Share on other sites More sharing options...
kunx Posted February 1, 2012 Author Share Posted February 1, 2012 ??? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 1, 2012 Share Posted February 1, 2012 donc tu as besoin de l'id_product pour ta fonction ? si oui effectivement c'est en paramètre et dans ce cas faut reprendre l'exemple de départ... Link to comment Share on other sites More sharing options...
kunx Posted February 1, 2012 Author Share Posted February 1, 2012 (edited) Oui je dois afficher un attribut au hasard, mais par rapport a mon produit, je pensais a ça aussi donc si je l'integre? un truc du genre? le tpl je change rien? Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 1, 2012 Share Posted February 1, 2012 Dans la requête, faut que tu met la table id_product en FROM et faire un INNER JOIN avec la table ps_product_attribute et ps_product après c'est ok sauf : $this->stockattribut = $this->attributval($id_product); et dans le tpl faut un assign {assign var=id value=$product->id} Link to comment Share on other sites More sharing options...
kunx Posted February 1, 2012 Author Share Posted February 1, 2012 (edited) Desoler du temps de réponse , je n'etais pas la, merci, alors j'ai pas tout comprit encore une fois, oui je suis pas tres doué , la notion des inner join je connaissais pas avant ça...j'ai pas comprit en from, id_product? je te fais parvenir les modification que j'ai apporté. il faut mettre : AND pp.id_product = '.(int)$id_product; je crois un truc comme ça? mais comment bien le placer dans la requete? et la mon tpl modifié. Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
kunx Posted February 2, 2012 Author Share Posted February 2, 2012 ?? j'essaie de placer AND pp.id_product = '.(int)$id_product; ce qui me liste bien les attributs par produit, mais je dois mal le mettre car mon limit 1 et order by rand fonctionne plus dans la requete. Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 2, 2012 Share Posted February 2, 2012 $sql = 'SELECT id_attribute FROM ps_product p INNER JOIN ps_product_attribute pa on pa.id_product=p.id_product INNER JOIN ps_product_attribute_combination pac ON pa.id_product_attribute=pac.id_product_attribute WHERE pa.quantity=1 AND p.id_product=$id_product ORDER BY RAND() LIMIT 1'; Pouurquoi le construct est-il tout en haut de la classe ? Ya un ordre avec les objets php. "public function attributval($id_product)" : ça devient logique surtout si tu as mis plus haut : "$this->stockattribut = $this->attributval($id_product);" $stockattribut[$i][id_product] = $r['id_attribute']; /* ................... */ {assign var=id value=$product->id} {assign var=nb value=$smarty.session.nb} {if $nb != 0} {section name=boucle start=0 loop=$nb step=1} {assign var=name value=$product->stockattribut[$smarty.section.boucle.index][$id']} {$name} {/section} {/if} Link to comment Share on other sites More sharing options...
kunx Posted February 2, 2012 Author Share Posted February 2, 2012 (edited) okey donc j'ai replacé la function construct en bas, autant pour moi ;-). j'ai le code que tu viens de me donner, mais il y a un probleme avec AND p.id_product=$id_product quand je le met la requete n'affiche rien dans les echo et je recupere aucune variable et quand je l'enleve cela fonctionne mais attribut toujours pas par produit. edit : et quand je met ceci : AND p.id_product='.($id_product);' il affiche bien les id par produit met il prend pas en compte la suite de mon sql mon limit 1 et order by rand. Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
kunx Posted February 2, 2012 Author Share Posted February 2, 2012 j'ai mis cela : WHERE pa.quantity=1 AND p.id_product='.$id_product.' ORDER BY RAND() LIMIT 1'; ça a l'air de fonctionner. Link to comment Share on other sites More sharing options...
kunx Posted February 2, 2012 Author Share Posted February 2, 2012 (edited) Cela semble etre bon, a premiere vue ^^ mercii :-) Par contre alors avec mon button , il me marque array quand je veux afficher une valeur aleatoire dans mon input type ="text" {assign var=name value=$product->stockattribut[$smarty.section.boucle.index][$id]} {$name} avant c'etait cela et ça fonctionner , logique ; {assign var=name value=$product->stockattribut} et je declare ma variable en haut du tpl comme cela :var name= '{$product->stockattribut}'; ( je dois la declarer pour ma fonction JS. sinon ça ne fonctionne pas. et je recupere cette valeur dans mon JS apres avec mon button qui appelle la fonction : ça devient bon, manquera plus qu'un systeme qui appelle un id_attribut different a chaque click Edited June 18, 2012 by kunx (see edit history) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 2, 2012 Share Posted February 2, 2012 Je sais pas trop où tu en es dans ce que tu recherches, mais tant que ça marche ^^ c'est le plus important Link to comment Share on other sites More sharing options...
kunx Posted February 2, 2012 Author Share Posted February 2, 2012 Oui ça fonctionne ;-) encore merci ,you are the best ! je demandais comment recuperer la variable id_attribut dans mon input text. la il m'affiche array, quand je clique au lieu du chiffre voila. une des mes dernieres question, apres je te fou la paix. lol si tu connais un systeme qui permet de rentrer automatique 500/1000 attribut dans la table, il n'y a pas une boucle qui permettrais de faire cela? je me vois mal rentrer toute ces attributs manuellement,je veux mettre ça dans la table attribut sachant que mes id_attribut sont egale a ma valeur id= 1 valeur = 1 , un script qui permet d'inserer automatiquement 500/1000 (voir plus) attribut id = 2, valeur= 2, id=3 valeur= 3,...... voila :-) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 2, 2012 Share Posted February 2, 2012 dans le tpl ? je pense il faut que tu assignes la variable et ensuite tu fais ton input value="ton assign" (à vérifier l'écriture d'un input dans un tpl) Link to comment Share on other sites More sharing options...
kunx Posted February 2, 2012 Author Share Posted February 2, 2012 j'assigne en parametre en haut du product.tpl comme ceci : var name= '{$product->stockattribut[$smarty.section.boucle.index][$id]}'; sur mon onclick j'appelle ma function aleatoire qui contient name. mais quand je clique il n'y a rien et que je declare comme cela en parametres : var name= '{$product->stockattribut}'; il m'affiche array quand je clique . Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 2, 2012 Share Posted February 2, 2012 Pour moi, les assign c'est : {assign var=name value=$product->stockattribut[$smarty.section.boucle.index][$id]} Link to comment Share on other sites More sharing options...
kunx Posted February 3, 2012 Author Share Posted February 3, 2012 Oui je sais, mais ça pour recuperer ma variable dans mon fichier JS il comprend pas trop vue que c'est une valeur dans un tableau c'est pour ça je pense , smarty et javascript ... enfin finalement je l'ai mis directement sur mon onclilk <input type="button" onclick="this.form.choice.value='{$attributrand}' ;" value="bouton" > ( j'ai changer le nom de la variable avant c'etait name, c'est plus claire pour moi) :-) Quand je clic j'ai mon id_attribut disponible comme ça :-) c'est ce que je voulais faire, enfin maintenant reste a trouver un moyen de rafraichir l'id attribut a chaque clic, c'est pas gagner, si tu as des idées , elle sont les bienvenues :-) ajax? et une des mes dernieres question, enfin ! soulagement tu dois te dire... lol si tu connais un systeme qui permet de rentrer automatique 500/1000 attributs dans la table, il n'y a pas une boucle qui permettrais de faire cela? je me vois mal rentrer toute ces attributs manuellement,je veux mettre ça dans la table attribut sachant que mes id_attribut sont egale a ma valeur id= 1 valeur = 1 , un script qui permet d'inserer automatiquement 500/1000 (voir plus) attribut id = 2, valeur= 2, id=3 valeur= 3,...... voila :-) Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 3, 2012 Share Posted February 3, 2012 alors moi tous ce qui est javascript et ajax pour l'instant j'y connais pas grand chose. Ah si ! Je sais faire le copier coller ! MDR quand j'aurai fini mes études en info je le verrais surement sinon qq jours où j'aurai le courage de m'y mettre ^^ Pour la partie boucle oui soit tu fais un for avec une requête à l'intérieur, mais bon faut que tu es rentré dans un tableau toutes tes valeurs de id_attribute je pense. pour que à chaque +1 il ajoute la valeur suivant d'un tableau ça ferait : Tableau= array(1,2,3,4,5...) for ($i = 1; $i <= TailleTableau; $i++) { $requete="INSERT INTO ps_product_attribute VALUES (Tableau[$i],...);"; je laisse compléter $result=mysql_query($requete); if($result){ echo 'enregistré'; } } ou alors plus simple si les valeurs de id_attribute sont successives for ($i = 1; $i <= ValeurMAX ; $i++) { $requete="INSERT INTO ps_product_attribute VALUES ($i,...);"; je laisse compléter $result=mysql_query($requete); if($result){ echo 'enregistré'; } } EDIT : c'est du php pas du smarty ( si c'est sur ta page .tpl ) Link to comment Share on other sites More sharing options...
kunx Posted February 3, 2012 Author Share Posted February 3, 2012 Ah okey, oui javascript et ajax, c'est un autre delire encore ça, je verrais ça avec un collègue alors qui gere assez bien ce domaine, j'ai trouvé un script qui appelle ma fonction en ajax, mais je sais pas comment rafraichir la valeur... bon je verrais ça. lol. ah ouais tu fais quoi etudes exactement? ^^ en tout cas les requete sql je crois que ça gere bien :-) ^^ donc la deuxieme option, ça incrementerais les valeur des id automatiquement ça? on peut el faire en sql directement cette boucle? ou en php obligatoirement c'est juste pour rentrer dans ma base de donnée. j'appellerais cette requete ou? si je l'a fait en php? donc en gros cette boucle de la deuxieme methode, ça entrerait les values successivement, 1,2,3,4,5,6,7,8,9,10,11,12.... avec id_attribut qui s'incrementerer automatiquement donc si je remet a zero ma table, ça fonctionnerais. id_attribut= values, 1=1, 2=2,3=3... c'est bien ça? Link to comment Share on other sites More sharing options...
Dev_Elisabeth Posted February 3, 2012 Share Posted February 3, 2012 ça incrementerais les valeur des id automatiquement ça?Oui en faite la boucle for ou traduction "POUR i de 1 à MAX Faire ... FInPour"j'appellerais cette requete ou? si je l'a fait en php? Pour la deuxième c'est un code php, en sql tu peux rentré que la requête et même si dans PhpMyAdmin tu fais des copier coller de ta requête imagine que tu le fais pour 500 id_attribute.. pwoua ça entrerait les values successivement avec id_attribut qui s'incrementerer automatiquement Exact ! Deuxième solution : for ($i = 1; $i <= ValeurMAX ; $i++) { $requete="INSERT INTO ps_product_attribute VALUES ($i,...);"; je laisse compléter $result=mysql_query($requete); if($result){ echo 'enregistré'; } } id_attribut= values, 1=1, 2=2,3=3... c'est bien ça? euh... en faite... values c'est un modèle.. c'est obligatoire de l'écrire ^^ http://sql.1keydata.com/fr/sql-insert-into.php $requete="INSERT INTO ps_product_attribute VALUES ($i,...);"; En vérifiant les tables le id_attribute est dans ps_product_attribute_combinaison ^^ Si on reprend la requête alors Dans ps_product_attribute_combinaison tu as différent champ : `id_attribute`, `id_product_attribute` et tous ses champs il faut les mettre INSERT INTO ps_product_attribute_comibinaison (?) VALUES (" ICI ") et tu veux mettre un id_attribut = i qui prend les valeur successives (1,2...500) J'espère que tu comprends ^^ ah ouais tu fais quoi etudes exactement? Je suis en 2ème année de BTS informatique de gestion option développeur d'applications ^^ d'où le sql, php, html, java... Link to comment Share on other sites More sharing options...
kunx Posted February 3, 2012 Author Share Posted February 3, 2012 :-) Alors oui je comprend un peu pres la chose, j'ai juste aps trop comprit ou je vais inserer ce cod d'insertation, crée une page php manuellement ou je me connecte a BD de presta, et j'execute ma requete? ou ailleurs? Apres donc si j'ai bien compris, value je suis obliger de le definir: $requete="INSERT INTO ps_product_attribute VALUES ($i,1,2,3,4,5,6,7,8,9... jusque 500 voir beaucoup plus);"; il n'y a pas de limite d'attribut dans presta, si j'en rentre 10000? par exemple? Donc comme cela c'est bien ça? probleme alors il me faudra un soft generateur de nombre, qui me fait une liste de 1 a 10000 avec une virgule ça m'eviterait de tout taper..... lol si c'est bien ça. alors pour la question des combinaison j'avais vue qu'il y avait un delire avec cette table et les id attribut et c'est la que j'avais pas tout comprit.. ahaha, ça reprend mes id attribut dans cette table oui..II donc faudrais remettre ma liste d'id attrivut de la table attribut la dedans si j'ai bien comprit,... lol je galere un peu... ah oauis bts informatique specialisé dans l'application interessant tout ça ^^ et ben ça va il semble que tu geres plutot bien la chose^^, ça faisait 2 ans que je n'ai pas fait de sql/php, et j'avoue j'ai pas mal perdu... lol et tu veux faire quoi apres ce bts? 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