Eva06 Posted September 1, 2014 Share Posted September 1, 2014 Bonjour, J'ai créé mon nouvel onglet en allant dans Employés>onglets et j'ai créé mon fichier dans admin>tabs. Il s'affiche correctement, avec le bouton "nouveau" mais cela fait un moment que je cherche comment configurer ce qui s'affiche lorsqu'on fait "nouveau". J'ai fait un formulaire avec la classe "displayform" mais rien ne change... Je ne trouve pas d'article/tuto à ce sujet, si quelqu'un l'a déjà fait ce serait gentil Merci Link to comment Share on other sites More sharing options...
Eolia Posted September 1, 2014 Share Posted September 1, 2014 Dans votre fichier ajouté dans admin->tabs , votre fonction displayform() renvoie bien un contenu html ? Par exemple: public function displayForm() { $html = 'votre code'; $html .= 'Encore du code'; return $html; // ou echo $html; } Link to comment Share on other sites More sharing options...
Eva06 Posted September 1, 2014 Author Share Posted September 1, 2014 C'est bon j'ai mon formulaire qui s'affiche, je devais avoir fait une faute dans ma syntaxe quelque part... Une fois que j'ai rempli le formulaire, comment je fais pour que la liste de ce que j'ai rajouter se voit ? C'est le fichier qui fera l'exécution du formulaire ou je dois utiliser la méthode getContent avec un tableau etc. ? Link to comment Share on other sites More sharing options...
Eolia Posted September 1, 2014 Share Posted September 1, 2014 et bien votre formulaire renvoie vers le même fichier et vous interceptez les variables $_POST au retour <form action="' . $currentIndex . '&token=' . $this->token .'&my_form=1" method="post" > public function postProcess() { global $currentIndex, $cookie; if (Tools::getValue('my_form') == 1) { $value = Tools::getValue('my_value'); $value2 = Tools::getValue('my_value2'); // faites ce que vous voulez avec... echo $result; } } C'est une méthode, il y en a d'autres. (getContent() sert à afficher la page de configuration depuis la page des modules) Link to comment Share on other sites More sharing options...
Eva06 Posted September 2, 2014 Author Share Posted September 2, 2014 (edited) Ok, merci Par contre j'ai un soucis en utilisant la méthode postProcess() car les données s'affichent sur toutes les pages, j'ai tester en faisant echo "blabla" et cela s'affiche même en cliquant sur "nouveau"... J'ai essayé la fonction display() mais tout s'efface... Il n'y a pas une liste de toutes les fonctions et à quoi elles servent ? Je trouve pas grand chose au sujet des onglets. Edited September 2, 2014 by Eva06 (see edit history) Link to comment Share on other sites More sharing options...
Eva06 Posted September 3, 2014 Author Share Posted September 3, 2014 J'exécute une requête d'ajout une fois le formulaire rempli, aucune erreur ne s'affiche mais aucune ligne ne s'ajoute à ma bdd non plus... Ma requête marche dans PMA mais j'ai l'impression que mon script ne fait rien... public function displayForm($isMainTab = true) { global $currentIndex, $cookie; parent::displayForm(); echo '<form action="'.$currentIndex.'&token='.$this->token.'&my_form=1" method="post"> <label>Produit :</label> <div class="margin-form">'; echo "<select name='produit'>"; $sql=mysql_query("SELECT distinct(id_product), name FROM ps_product_lang WHERE id_lang=2 AND id_product < 1000 ORDER BY name"); while ($ligne = mysql_fetch_array($sql)) { echo "<option value='".$ligne['id_product']."'>".$ligne['name']."</option>"; } echo "</select>"; echo '</div> <label>Promotion :</label> <div class="margin-form"> <input type="text" name="prix" /> </div> <label>Pourcentage :</label> <div class="margin-form"> <input type="text" name="pourcentage" /> </div> <div class="margin-form"> <input type="submit" name="submit" value="Valider le produit" /> </div> </form>'; } public function postProcess() { global $currentIndex, $cookie; if (Tools::isSubmit('submit')) { $sql=mysql_query('INSERT INTO ps_promotions (prix, pourcentage, id_product) VALUES ('.$_POST['prix'].',"'.$_POST['pourcentage'].'",'.$_POST['produit'].')'); } } Link to comment Share on other sites More sharing options...
Eolia Posted September 3, 2014 Share Posted September 3, 2014 J'exécute une requête d'ajout une fois le formulaire rempli, aucune erreur ne s'affiche mais aucune ligne ne s'ajoute à ma bdd non plus... Ma requête marche dans PMA mais j'ai l'impression que mon script ne fait rien... public function displayForm($isMainTab = true) { global $currentIndex, $cookie; parent::displayForm(); echo '<form action="'.$currentIndex.'&token='.$this->token.'&my_form=1" method="post"> <label>Produit :</label> <div class="margin-form">'; echo "<select name='produit'>"; $sql=mysql_query("SELECT distinct(id_product), name FROM ps_product_lang WHERE id_lang=2 AND id_product < 1000 ORDER BY name"); while ($ligne = mysql_fetch_array($sql)) { echo "<option value='".$ligne['id_product']."'>".$ligne['name']."</option>"; } echo "</select>"; echo '</div> <label>Promotion :</label> <div class="margin-form"> <input type="text" name="prix" /> </div> <label>Pourcentage :</label> <div class="margin-form"> <input type="text" name="pourcentage" /> </div> <div class="margin-form"> <input type="submit" name="submit" value="Valider le produit" /> </div> </form>'; } public function postProcess() { global $currentIndex, $cookie; if (Tools::isSubmit('submit')) { $sql=mysql_query('INSERT INTO ps_promotions (prix, pourcentage, id_product) VALUES ('.$_POST['prix'].',"'.$_POST['pourcentage'].'",'.$_POST['produit'].')'); } } Bon, il vous faut relire les bases (valable pour 1.4 également) : http://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/ et n'utilisez pas les variables $_POST sans savoir si elles existent.( if(isset($_POST['machin'])) { ... } ) Préférez Tools::getValue('prix'); -> récupère la variable $_POST['prix'] ou $_GET['prix'] //Exemple fictif : $target = Tools::getValue('id'); $name = Tools::getValue('name'); Db::getInstance()->insert('target_table', array( 'id_target' => (int)$target, 'name' => pSQL($name), )); N'hésitez pas à regarder le code de quelques modules existants Link to comment Share on other sites More sharing options...
Eva06 Posted September 3, 2014 Author Share Posted September 3, 2014 Effectivement, j'ai pas trop les bases apparemment, désolée... J'ai refais pas requête d'ajout : if (Tools::isSubmit('submit')) { $prix = Tools::getValue('prix'); $pourcentage = Tools::getValue('pourcentage'); $produit = Tools::getValue('produit'); Db::getInstance()->autoExecute('ps_promotions', array('prix' => (int)$prix, 'pourcentage' => pSQL($pourcentage), 'id_product' => (int)$produit), 'INSERT'); } Je l'ai mise dans la fonction "postProcess", ce n'est peut être pas la bonne, car ça ne m'ajoute toujours rien, j'ai essayé d'enlever le préfixe la table, changé de fonction mais rien. Il est normal qu'il n'y ai pas d'id pour ma table, car il est en auto increment, donc je pense pas que ça vienne de là. Je n'ai aucune erreur qui s'affiche non plus, je comprend pas trop :/ Link to comment Share on other sites More sharing options...
Eolia Posted September 3, 2014 Share Posted September 3, 2014 Effectivement, j'ai pas trop les bases apparemment, désolée... J'ai refais pas requête d'ajout : if (Tools::isSubmit('submit')) { $prix = Tools::getValue('prix'); $pourcentage = Tools::getValue('pourcentage'); $produit = Tools::getValue('produit'); Db::getInstance()->autoExecute('ps_promotions', array('prix' => (int)$prix, 'pourcentage' => pSQL($pourcentage), 'id_product' => (int)$produit), 'INSERT'); } Je l'ai mise dans la fonction "postProcess", ce n'est peut être pas la bonne, car ça ne m'ajoute toujours rien, j'ai essayé d'enlever le préfixe la table, changé de fonction mais rien. Il est normal qu'il n'y ai pas d'id pour ma table, car il est en auto increment, donc je pense pas que ça vienne de là. Je n'ai aucune erreur qui s'affiche non plus, je comprend pas trop :/ Alors quand on ne "voit" rien il faut faire des tests pour afficher les données et voir ce qui se passe. soit un var_dump() soit une combinaison avec die() car parfois le résultat du var_dump est masqué par une autre fonction. Dans votre cas: var_dump($_POST); // vous voyez ce qui a été envoyé if (Tools::isSubmit('submit')) { $prix = Tools::getValue('prix'); var_dump($prix); $pourcentage = Tools::getValue('pourcentage'); var_dump($pourcentage); $produit = Tools::getValue('produit'); var_dump($produit); if(!Db::getInstance()->autoExecute('ps_promotions', array('prix' => (int)$prix, 'pourcentage' => pSQL($pourcentage), 'id_product' => (int)$produit), 'INSERT')) die('Erreur SQL'); } Et regardez ce qui s'affiche. Parfois Tools::isSubmit() est capricieux, donc utiliser if(Tools::getValue('submit')) {...} Link to comment Share on other sites More sharing options...
Eva06 Posted September 4, 2014 Author Share Posted September 4, 2014 Je suis passée par autre chose finalement, il m'a juste suffit d'activer une variable dans mes produits... Désolée pour t'avoir fait perdre du temps^^ J'ai tout de même appris des choses, merci à toi Link to comment Share on other sites More sharing options...
Eolia Posted September 4, 2014 Share Posted September 4, 2014 Le temps n'est jamais perdu Bonne continuation ! 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