Jump to content
jujutte24

Attribuer toutes les catégories à tous les groupes

Recommended Posts

Bonjour la communauté ;)

 

je rencontre un petit souci sur mes restrictions par groupes et par catégories.

 

J'ai créé des groupes après avoir créé mes catégories, et par défaut, ces catégories ne sont pas visibles de mes nouveaux groupes.

 

Existe-t-il une méthode (voir une requête sql) pour que toutes les catégories soient attribuées à tous les groupes ?

 

Merci de votre aide :rolleyes:

Share this post


Link to post
Share on other sites

En fait, je cherche un peu d'aide, pour rédiger une requête SQL.

Je pense que c'est le meilleur moyen.

 

Comment faire pour que dans la table category_group, je puisse attribuer à toutes les catégories tous les groupe ?

 

si quelqu'un a une idée....

Share this post


Link to post
Share on other sites

J'ai trouvé quelques codes, mais je ne sais pas si ils sont à adapter...

voci quelques bouts de codes trouvés sur le forum Italien :

<html>
<head>
</head>

<body>
<?php
if(isset($_POST['submit'])) { $inviato=$_POST['submit']; } else { $inviato=""; }

if ($inviato == "SUBMIT")   {
if(isset($_POST['host'])) { $host=trim($_POST['host']); } else { $host=""; }
if(isset($_POST['username'])) { $nome_utente=trim($_POST['username']); } else { $nome_utente=""; }
if(isset($_POST['password'])) { $password=trim($_POST['password']); } else { $password="";$password=""; }
if(isset($_POST['db_name'])) { $nome_db=trim($_POST['db_name']); } else { $nome_db=""; }
if(isset($_POST['id_group'])) { $id_group=trim(htmlentities($_POST['id_group'],ENT_QUOTES)); } else { $id_group=""; }

if($host == "") {
die("<b>Error! Host is required.</b> <a href=''>Try again</a>");
}

if($nome_utente == "") {
die("<b>Error! Username is required.</b> <a href=''>Try again</a>");
}

if($nome_db == "") {
die("<b>Error! Database name is required.</b> <a href=''>Try again</a>");
}

if($id_group == "") {
die("<b>Error! Customer Group ID is required.</b> <a href=''>Try again</a>");
}

// Mi connetto al database e cerco la tabella
$connessione = mysql_connect($host, $nome_utente, $password)or die("<b>Error! MySQL connection:</b> " . mysql_error());
mysql_select_db($nome_db, $connessione) or die("<b>Error! MySQL database selection</b>");

$query_cancella = "DELETE FROM ps_category_group WHERE id_group = '$id_group'";
$result_cancella = mysql_query($query_cancella) or die(mysql_error());

$query = "SELECT * FROM ps_category";
$result = mysql_query($query) or die(mysql_error());

while ($array=mysql_fetch_assoc($result)) {
$id_categoria = $array['id_category'];
$query_insert = "INSERT INTO ps_category_group VALUES('$id_categoria', '$id_group')";
$result_insert = mysql_query($query_insert) or die(mysql_error());

echo "<br>Category $id_categoria updated";
} // chiudo while
} else {
?>

<b>This script is secure and fully tested with Prestashop 1.4.x versions. However I suggest to backup your database!</b>
<p />

<form method="post" action="">
<b>MySQL connection</b><br />
Host: <input type="text" name="host" value="" /><br />
Username: <input type="text" name="username" value="" /><br />
Password: <input type="text" name="password" value="" /><br />
Database name: <input type="text" name="db_name" value="" /><br />
<p />
CUSTOMERS GROUP ID: <input type="text" name="id_group" value="" />it must be already created!
<p>
<input type="submit" name="submit" value="SUBMIT" />
</form>
<?php
}
?>
</body>
</html>

 

et un autre proposé sur le forum Anglais :

<?php

require(dirname(__FILE__).'/config/config.inc.php');

$new_group = 4; // there is ID of new group
$categories = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT DISTINCT c.*
FROM `'._DB_PREFIX_.'category` c
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND cl.`id_lang` = '.(int)Context::getContext()->language->id.')
');

foreach($categories as $category){
$categoryObj = new Category($category['id_category'], (int)Context::getContext()->language->id);
$categoryObj->addGroups(array($new_group));
}

 

Vous en pensez quoi ?

Share this post


Link to post
Share on other sites

Ben alors, personne ne s'intéresse aux groupe de client ?

 

Je rappel que si vous créez des groupes de clients après avoir créé des catégories, ces dernières ne leur sont pas visible.

C'est tout de même un Bug ça non ?

Pourquoi ne peut-on pas choisir, lors de création par CSV de catégories, les groupes par lesquels elles doivent être visible ?

Share this post


Link to post
Share on other sites

Bonjour,

 

Je rencontre exactement le même souci sous Prestashop 1.5.3 : lorsque je crée un nouveau groupe client, celui-ci n'est affecté par défaut à aucune catégorie.

Ainsi, un client affecté uniquement à ce nouveau groupe ne vois aucune catégorie en FO.

 

jujutte24, as-tu trouvé la solution ?

 

Une requête SQL serait peut-être la bienvenue mais ne résoudrait pas le problème dans la durée puisqu'à chaque nouveau groupe créé, il faudrait la faire tourner. Mais bon, ce serait déjà bien ;-)

 

Merci d'avance,

Share this post


Link to post
Share on other sites

Bonjour,

 

Si vous avez créé les groupes après les catégories, il vous faut simplement modifier toutes vos catégories en les réouvrant et en pied de formulaire, vous devez renseigner "Accès groupes"

 

A+

Share this post


Link to post
Share on other sites

Ok, pour les ré-ouvrir, mais quand on en a 5000 ?

 

J'ai trouvé des codes php, mais ce qui me plairai c'est que quelqu'un de qualifié y jette un oeil....

c'est complètement hors de mes compétences...

Share this post


Link to post
Share on other sites

Bonjour,

 

5000 catégories ? Ce n'est pas un peu trop...

 

Là, on parle de catégories, pas d'articles...

 

Il y a peut-être moyen de regrouper un peu. Comment fait un client pour s'y retrouver dans une liste de 5000 catégories ?

 

A+

Share this post


Link to post
Share on other sites

avec un index de catégorie ...?!

 

jujutte24 cherche une solution de traitement de l'information et avait à mon avis déjà constaté la possibilité de modifier chaque catégorie.

 

Personnellement je suis aussi gêné par cela pour une boutique privé avec plus de 6000 catégories et 2 groupes.

 

Je vais me pencher dessus de deux façons

 

1)une requête pour mettre à jour toutes mes catégories existante

2)modifier la fonction de création de catégorie pour que celle-ci viennent associer la catégorie crée à tous les groupes existant au travers d'un override ! je posterai la solution ici dans la semaine étant en vacance!

 

étant en version hybride 1.4.5.1/1.4.9 avec de nombreux patchs du svn je ne garantie pas que ma solution sera satisfaisante pour vous !

Edited by MathieuB (see edit history)

Share this post


Link to post
Share on other sites

Salut,

 

à vrai dire j'ai plus de 6000 catégories et pas loin de 100000produits, mais bon.

Le problème c'est que manuellement c'est mission impossible.

En effet Mathieu, sql, mais le problème c'est qu'une requète SQL ne peut pas "trier". Il faut passer par php...comme plus haut, tu as vu il y a des codes que j'ai placé.

"une requête pour m'être à jour toutes mes catégories existante" semble le plus efficace, mais je n'y connait rien en PHP....et le premier fichier du haut est en Italien...

 

De fait, j'ai presta 1.4.6.2, je pense que nos 2 versions sont compatible, et si tu arrive à trouver une solution simple, légère et efficace je te baise la pieds :ph34r:

 

Je galère avec ça....

 

Et en plus aucun modérateur Presta passe dans le coin, c'est quant même un réel problème.

Même en créant en 1er les groupes et en 2ème les catégories, il n'y a que le défaut qui est coché...

C'est tout de même bête ! non ?

Share this post


Link to post
Share on other sites

Hum bon j'avais fait quelque chose de très détaillé et d'explicatif sur ce manque malheureusement firefox à planté avant que je n'ajoute ma réponse...Et le système de sauvegarde des messages ne fait pas encore de miracle ! donc je vais faire simple :

 

1 => phpmyadmin exporter vos id de category de la table category_group associé au groupe par défaut (et donc pas aux autres) en prenant soin d'exclure la catégorie d'id 1 qui elle, est tjrs associé à l'ensemble des groupes

 

2 => exporter le résultat au format csv via phpmyadmin > corriger dans excel pour générer vos requêtes d'INSERT sur les groupes d'id manquant.

 

3 => importer les lignes de requêtes dans phpmyadmin pour corriger les catégories existantes

 

4=> implémenter cet override Category.php dans override/classes

 

le groupBox étant un tableau d'id des groupes auquels seront associer les catégories

 

il faut donc renseigner les id des groupes auquels vous souhaitez voir associer toute nouvelle catégorie importé.

 

en prenant soin de tjrs conserver l'id du groupe par défaut (1)

 

si l'on a une catégorie A a associer au groupe par défaut et au groupe BonClients d'id 3 cela donne :

 

 

<?php class Category extends CategoryCore
   {

  	  public   $groupBox = array(1,3);

   }

 

 

ne modifier pas le cœur de prestashop cela rend très difficile pour tout intervenant sur la boutique la consultation des modifications réalisées, ainsi que la mise à jour de la boutique, ou l'implémentation de fonctionnalité en tenant compte de vos ajouts.

 

 

Pour la requête SQL si vous êtes novice on peut voir ça en MP pour ne pas polluer le topic puis vous la publierait ici afin d'aider les autres personnes.

 

Et pour vos imports et visualiser votre catalogue en un coup d’œil pensez à Storecommander même en version SC FREE ça aide !

 

Pour Jbh13, je ne travail pas encore sur 1.5.

 

Mais dans 1.4 j'y ai jeté un œil c'est la classe Category.php et la fonction : setNewGroupForHome

qui permet lorsqu'on crée un nouveau groupe de client d'avoir systématiquement la catégorie accueil(Home) d'associé à ce groupe.

 

Il faut donc la corriger pour qu'elle implémente cela à l'ensemble des catégories existante avec une boucle par exemple qui irait chercher l'ensemble des id des categories de votre base. voici le code de la fonction :

public static function setNewGroupForHome($id_group)
{
	if (!(int)($id_group))
		return false;
	return Db::getInstance()--->Execute('
	INSERT INTO `'._DB_PREFIX_.'category_group`
	VALUES (1, '.(int)($id_group).')
	');
}

 

que vous retrouvez appelé dans la création de groupe au sein de la classe group.php :

 

public function add($autodate = true, $nullValues = false)

{

return parent::add() && Category::setNewGroupForHome((int)($this->id));

}

 

Deux possibilités :

soit modifier cette fonction setNewGroupeForHome

 

Soit ajouter l’appel à votre propre fonction SetNewGroupeForAllCategories par exemple avec un override ayant une boucle qui irait chercher l'ensemble des id des categories prestashop et réaliser l'insert sur l'id du nouveau groupe crée pour l'ensemble des id des catégories qui existent.

 

 

ça demande un peu de développement mais si ça n'est pas sur 1.5 c'est vraiment moche...faites un rapport sur le bugtracker afin qu'il corrige lors du prochain patch ou alors vous aurez une correction sur la version SVN rapidement que vous pourrez mettre en place.

 

Sinon un développeur doit pouvoir vous faire ça pour pas très cher avec une fonction pour ajouter le groupe crée aux modules de paiement existant.

 

Mais avant ça posé vous la question de savoir si cet outil est nécessaire, généralement lorsqu'on crée un site les groupes de clients sont crées au départ sauf oublie (que vous pourrez corriger avec la mise à jour par requête SQL que je décris au début de ce post)

 

Donc a moins que vous ayez des nouveaux groupes de clients à créer régulièrement ça n'a pas d’intérêt de passer du temps sur ce développement.

Category.php

Edited by MathieuB (see edit history)

Share this post


Link to post
Share on other sites

Bon, désolé pour le retard dans la réponse...boulot boulot :P

 

En fait cette solution me semble sympa.

Si je résume, j'exporte ma table en CSV, je la modifie, et je la réintègre en CSV, tout simplement ?

Et du coup je place ce fichier "category.php" dans le dossier override/classes ?

 

 

En fait rien de plus simple....

 

Je me trompe ?

Share this post


Link to post
Share on other sites

Bon, j'ai exporté la table, modifié les champs et réimporter et......

 

ça marche !!!!

 

Donc, export de la table "category_group" au format CSV, via phpmyadmin, modification dans Excel,, j'ai vidé la table (pas supprimer !) et insérer la table modifiée.

 

Nickel, ça m'a débloqué toutes les catégories pour tous les groupes.

Maintenant je vais me charger de l'override, bien que ce soit la partie la plus "compliquée" pour moi.

 

Mais c'est déjà une bonne nouvelle ;)

 

La suite très bientôt !

Share this post


Link to post
Share on other sites

Bonjour,

 

Une solution a-t-elle été trouvée pour 1.5.6 car cela devient vite compliquée quand on a beaucoup de catégorie et plusieurs boutiques auxquelles on attribut des groupes différents....

Share this post


Link to post
Share on other sites

Le post date d'un mois, mais comme j'ai été confronter au même problème, voilà un script pour associer les groupes aux catégories.

<?php

//dbconf
///////////////////////////////////////////////////// CONFIG
$host		='hote (généralement localhost)';
$db 		='base de donnée';
$dbuser 	='utilisateur de la base de donnée';
$dbpass  	='mot de passe de la base de donnée';
$prefix  	='prefix (ps_ de base)';
/////////////////////////////////////////////////////

$groups = array();
$cat = array();

//prepare db object
$pdo = new PDO('mysql:host='.$host.';dbname='.$db,$dbuser, $dbpass);

//get categories
$query = 'SELECT id_category FROM '.$prefix.'category;';
$result = $pdo->query($query);
while($row = $result->fetchObject())
	$cat[]=$row->id_category;

//get groups
$query = 'SELECT id_group FROM '.$prefix.'group;';
$result = $pdo->query($query);
while($row = $result->fetchObject())
	$groups[]=$row->id_group;

//write cat_group insert
$query = 'INSERT INTO '.$prefix.'category_group(id_category,id_group) VALUE';
foreach ($cat as $category) 
{
	foreach ($groups as $key => $group) 
	{
		$query .='("'.$category.'","'.$group.'"),';
	}
}
$query = substr($query , 0, -1).';'; 


//clear cat_group
$delquery = 'DELETE FROM '.$prefix .'category_group WHERE 1;';
$result = $pdo->exec($delquery);

//fill cat_group
$result = $pdo->exec($query);

?>

Pour l'utiliser:

1. Enregistrer le script dans un fichier portant l'extension ".php".

 

2. changer la configuration ($host,$db,$dbuser,$dbpass,$prefix).

 

3. transférer le fichier sur le serveur dans un dossier accessible depuis un navigateur.

 

4. appeler le fichier dans un navigateur.

 

Je vous conseil de faire une sauvegarde de la table category_group avant, au cas où...

  • Like 1

Share this post


Link to post
Share on other sites

Bonjour,

 

La mise en place et exécution d'un script n'étant pas forcément à la porté de tout le monde, sachez que PrestaCatégories  permet d'associer en masse des sélections de catégories à des sélections de groupes de clients, en un clic.

 

Comme c'est un module payant, je vous renvoie sur le bon forum: http://www.prestashop.com/forums/topic/93799-module-application-prestacategories-pour-creer-cloner-deplacer-activer-les-categories-et-le-produits/?hl=%2Bprestacategories&do=findComment&comment=1262536

 

Crdlt

Franck

Share this post


Link to post
Share on other sites

Bonjour, j'ai essayé ton script on local sur version prestashop 1.6.1 mais il m'affiche une erreur a la ligne 21 

Fatal error: Call to a member function fetchObject() on boolean in C:\wamp64\www\TEST.php on line 21

On 14/11/2013 at 2:18 PM, Azimov said:

Le post date d'un mois, mais comme j'ai été confronter au même problème, voilà un script pour associer les groupes aux catégories.


<?php

//dbconf
///////////////////////////////////////////////////// CONFIG
$host		='hote (généralement localhost)';
$db 		='base de donnée';
$dbuser 	='utilisateur de la base de donnée';
$dbpass  	='mot de passe de la base de donnée';
$prefix  	='prefix (ps_ de base)';
/////////////////////////////////////////////////////

$groups = array();
$cat = array();

//prepare db object
$pdo = new PDO('mysql:host='.$host.';dbname='.$db,$dbuser, $dbpass);

//get categories
$query = 'SELECT id_category FROM '.$prefix.'category;';
$result = $pdo->query($query);
while($row = $result->fetchObject())
	$cat[]=$row->id_category;

//get groups
$query = 'SELECT id_group FROM '.$prefix.'group;';
$result = $pdo->query($query);
while($row = $result->fetchObject())
	$groups[]=$row->id_group;

//write cat_group insert
$query = 'INSERT INTO '.$prefix.'category_group(id_category,id_group) VALUE';
foreach ($cat as $category) 
{
	foreach ($groups as $key => $group) 
	{
		$query .='("'.$category.'","'.$group.'"),';
	}
}
$query = substr($query , 0, -1).';'; 


//clear cat_group
$delquery = 'DELETE FROM '.$prefix .'category_group WHERE 1;';
$result = $pdo->exec($delquery);

//fill cat_group
$result = $pdo->exec($query);

?>

Pour l'utiliser:

1. Enregistrer le script dans un fichier portant l'extension ".php".

 

2. changer la configuration ($host,$db,$dbuser,$dbpass,$prefix).

 

3. transférer le fichier sur le serveur dans un dossier accessible depuis un navigateur.

 

4. appeler le fichier dans un navigateur.

 

Je vous conseil de faire une sauvegarde de la table category_group avant, au cas où...

Merci

Edited by h webmaster (see edit history)

Share this post


Link to post
Share on other sites

SI vous avez accès à votre MYSQL il est tout de même plus simple de faire tourner ce petit SQL

REPLACE INTO [VOTREPREFIXE]_category_group (id_category,id_group) 
SELECT id_category AS id_category, id_group AS id_group
FROM [VOTREPREFIXE]_category, [VOTREPREFIXE]_group ORDER BY id_category, id_group

 

Les lignes n'existant pas seront créées, les autres ignorées.

Share this post


Link to post
Share on other sites
On 05/01/2018 at 10:37 AM, marcoooo said:

SI vous avez accès à votre MYSQL il est tout de même plus simple de faire tourner ce petit SQL

REPLACE INTO [VOTREPREFIXE]_category_group (id_category,id_group) 
SELECT id_category AS id_category, id_group AS id_group
FROM [VOTREPREFIXE]_category, [VOTREPREFIXE]_group ORDER BY id_category, id_group

 

Les lignes n'existant pas seront créées, les autres ignorées.


Bonjour, 

Il s'agit bien d'une requête pour activer tout les groupes sur toutes les catégories/sous-cat ? 

Merci, 

  • Thanks 1

Share this post


Link to post
Share on other sites
Le 18/01/2018 à 6:31 PM, Eolia a dit :

Ou faire un hack de Presta :)

image.png.958b2f5abb9262c9e6aea71dc80a9c14.png

 

@eolia .comment tu as fait ca? impossible de trouver un tuto qui décrive ce que tu nous montre.

 

merci d avance

Share this post


Link to post
Share on other sites

Ajouter un peu de code dans l'AdminGroupController:

image.thumb.png.8d29c1c1ab978f4db07236b25becbb31.png

image.thumb.png.4ecb5ded31e3e16aa03a981bd6360d34.png

Share this post


Link to post
Share on other sites
On 08/06/2018 at 7:42 AM, Eolia said:

Ajouter un peu de code dans l'AdminGroupController:

image.thumb.png.8d29c1c1ab978f4db07236b25becbb31.png

image.thumb.png.4ecb5ded31e3e16aa03a981bd6360d34.png

 

Cela a t-il marché pour vous ?

 

Car j'ai mis ce code dans le fichier AdminGroupController.php, j'ai bien le bouton qui s'affiche mais quand je sélectionne OUI sur un groupe et que j'enregistre, les catégories ne sont pas affectées.

De plus, en retournant dans ce même groupe, j'ai le curseur sur NON (bien que j'ai mis OUI et enregistré juste avant)

Une idée ?

Merci

Share this post


Link to post
Share on other sites

Version Prestashop ?

C'est normal que le bouton revienne sur non après avoir enregistré, c'est son réglage par défaut.

Share this post


Link to post
Share on other sites
3 hours ago, Eolia said:

Version Prestashop ?

C'est normal que le bouton revienne sur non après avoir enregistré, c'est son réglage par défaut.

Version de PrestaShop 1.6.1.18

Share this post


Link to post
Share on other sites

Je viens de tester sur une 1.6.1.18 native, cela fonctionne. D'ailleurs ce code fonctionne chez tous mes clients depuis plusieurs années.

Avez-vous des overrides sur les controleurs ou classes ? Ou alors un cache serveur ?

 

il reste éventuellement la possibilité d'une faute de syntaxe dans la requête sql ?

Share this post


Link to post
Share on other sites
16 hours ago, Eolia said:

Je viens de tester sur une 1.6.1.18 native, cela fonctionne. D'ailleurs ce code fonctionne chez tous mes clients depuis plusieurs années.

Avez-vous des overrides sur les controleurs ou classes ? Ou alors un cache serveur ?

 

il reste éventuellement la possibilité d'une faute de syntaxe dans la requête sql ?

Bonjour,

 

Pas d'override en particulier.

 

Voici le code que j'ai mis, je ne pense pas avoir fait d'erreur de syntaxe (j'ai juste remplacé le ps_ par DB_PREFIX car je n'ai pas le même préfixe) :

protected function access_all()
	{
		$id_group = (int)Tools::getValue('id_group');
		$assign_to_all = (bool)Tools::getValue('all_cat');
		if($assign_to_all && $id_group)
		Db::getInstance()->execute('
		INSERT IGNORE INTO ‘'._DB_PREFIX_.'category_group‘ (id_category, id_group)
		SELECT DISTINCT id_category, '.$id_group.'
		FROM ‘'._DB_PREFIX_.'category‘
		WHERE id_parent != 0
		');
	}

 

Merci encore de votre aide

Share this post


Link to post
Share on other sites
il y a 9 minutes, rachel01 a dit :

Pas sur de ce caractère... Quel éditeur utilisez-vous ?

Le code correct serait plutôt celui-ci:

	protected function access_all()
    {
        $id_group = (int)Tools::getValue('id_group');
		$assign_to_all = (bool)Tools::getValue('all_cat');
		if($assign_to_all && $id_group) {
			Db::getInstance()->execute('
				INSERT IGNORE INTO `'._DB_PREFIX_.'category_group` (id_category, id_group)  
				SELECT DISTINCT id_category, '.$id_group.'
					FROM `'._DB_PREFIX_.'category`
					WHERE id_parent != 0
			');
		}		
	}

 

Share this post


Link to post
Share on other sites

Un conseil: changez d'éditeur de texte^^

Share this post


Link to post
Share on other sites

Bonjour,

Je tente d'appliquer cette modification sur la version 1.7.5.1 de PrestaShop, cependant j'ai une erreur, voici mon code (je ne pense pas avoir fait d'erreur) :

(Je précise que je connais pas grand chose dans le code php 😊 )

array(
	'type' => 'switch',
	'label' => $this->1('Assign to all categories'),
	'name' => 'all_cat',
	'required' => false
	'class' => 't',
	'is_bool' => true,
	'values' => array(
		array(
			'id' => 'all_cat_on',
			'value' => 1,
			'label' => $this->1('Enabled')
		),
		array(
			'id' => 'all_cat_off',
			'value' => 0,
			'label' => $this->1('Disabled')
			)
		),
	'hint' => $this->1('Customers in this group can access to all categories. Leave on "NO" if you want to assign them manually')
),


protected function access_all()
{
    $id_group = (int)Tools::getValue('id_group');
	$assign_to_all = (bool)Tools::getValue('all_cat');
	if($assign_to_all && $id_group) {
		Db::getInstance()->execute('
			INSERT IGNORE INTO `ps_category_group` (id_category, id_group)  
			SELECT DISTINCT id_category, '.$id_group.'
				FROM `ps_category`
				WHERE id_parent != 0
		');
	}		
}

1541712865_Screenshot_2019-04-17Parseerrorsyntaxerrorunexpected1(T_LNUMBER)expectingidentifier(T_STRING)orvariable(T_....thumb.png.098ab252d3378dd5737a1d087a84d928.png360403956_Screenshot_2019-04-17Parseerrorsyntaxerrorunexpected1(T_LNUMBER)expectingidentifier(T_STRING)orvariable(T_...(1).thumb.png.4c7715363d9cfb6fc17a2e5d603cb6dd.png

Share this post


Link to post
Share on other sites

$this->1 ca ne risque pas de fonctionner ce n'est pas un 1 mais un l (la lettre L) $this->l 

Share this post


Link to post
Share on other sites

Merci pour votre réponse rapide, mais j'ai une autre erreur : (cette fois c'est bien la lettre T en minuscule ?)

1674956149_Screenshot_2019-04-17Parseerrorsyntaxerrorunexpectedclass(T_CONSTANT_ENCAPSED_STRING)expecting)(500Inter....thumb.png.a8455add00eb0cfb9979ad321e6fbf4c.png79084863_Screenshot_2019-04-17Parseerrorsyntaxerrorunexpectedclass(T_CONSTANT_ENCAPSED_STRING)expecting)(500Inter...(1).thumb.png.c3dfeb9fe25376db43fd7d3a3b90eb6e.png

Share this post


Link to post
Share on other sites

oui mais il manque une virgule à la fin de la ligne du dessus^^

Share this post


Link to post
Share on other sites

Merci pour ton aide, j'ai fini de remplacer les 1 par l et ajouter la virgule, tout s'affiche correctement dans le backoffice, je sélectionne "OUI" et clique sur enregistrer mais rien ne change

j'ai vérifié dans PhpMyAdmin ma table s'appelle bien ps_category_group et mes en-tête id_category & id_group

Au cas où j'aurais encore fait une bêtise voici le code :

	protected function access_all()
    {
        $id_group = (int)Tools::getValue('id_group');
		$assign_to_all = (bool)Tools::getValue('all_cat');
		if($assign_to_all && $id_group) {
			Db::getInstance()->execute('
				INSERT IGNORE INTO `ps_category_group` (id_category, id_group)  
				SELECT DISTINCT id_category, '.$id_group.'
					FROM `ps_category`
					WHERE id_parent != 0
			');
		}		
	}

818621579_Screenshot_2019-04-17GroupesModifierClientsT2Bureauland.png.f6a0ef6a67b6fcb3e7bf4fc1763613e2.png

Share this post


Link to post
Share on other sites

Peut-être que ce qui est envoyé sur cette page est différent sur la 1.7.

On va mettre un debug pour voir ce qui est envoyé. Modifiez le code comme suit au début de la fonction:

protected function access_all()
    {
p($_GET);
d($_POST);
...

n'enregistrez pas encore le fichier.

Allez dans la page, sélectionner Oui pour le bouton Assign to all categories, enregistrez le fichier maintenant et cliquez sur "Enregistrer" en bas de page et donnez-moi ce qui s'affiche.

Ensuite, supprimez ces 2 lignes et ré-enregistrez le fichier.

Share this post


Link to post
Share on other sites

En suivant ces indication rien ne change, l'enregistrement se fait et je n'ai rien qui s'affiche, le code est-il correct ?

	protected function access_all()
    {
		p($_GET);
		d($_POST);
        $id_group = (int)Tools::getValue('id_group');
		$assign_to_all = (bool)Tools::getValue('all_cat');
		if($assign_to_all && $id_group) {
			Db::getInstance()->execute('
				INSERT IGNORE INTO `ps_category_group` (id_category, id_group)  
				SELECT DISTINCT id_category, '.$id_group.'
					FROM `ps_category`
					WHERE id_parent != 0
			');
		}		
	}

 

Share this post


Link to post
Share on other sites

Ah... p() et d() n'existent plus en 1.7...

remplacez par

var_dump($_GET);

die(var_dump($_POST));

Share this post


Link to post
Share on other sites

Je n'ai toujours rien, cependant mon problème est résolu car je viens d'essayer la requête SQL cité plus haut, j'avais un peu peur des conséquences d'une mauvaise syntaxe mais tous s'est bien passé

Par contre si un jour tu fait un module Prestashop avec ce paramètre je suis preneur, sauf si Prestashop se décide d'ici la à mettre cette fonctionnalité en place

Je pense que je ne serait pas le seul à le prendre ;)

Share this post


Link to post
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

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More