Jump to content

[Résolu] Nettoyage des selections de panier


Recommended Posts

Bjr,
copie d'une note faîte à mes clients pour lesquels j'ai mis en place PS

versions: PS 1.2.x / 1.3.x
concerne: BO -> CLIENTS -> PANIERS

Un nombre important de paniers non suivi d'une commande, de clients non identifié, enregistrés à peu d'intervalle et plutôt de nuit.

Il s'agit d'attaque par des robots qui tentent ainsi de polluer la base de donnée (elle est limitée en capacité) voire tentent de passer la barrière de l'identification pour effectuer des paiements avec N° CB frauduleux.

La parade consiste à nettoyer régulièrement la base de donnée via MyPHPsql, l'item concerné dans la BDD est "ps_cart"
Supprimer les items ne correspondant pas à des clients enregistrés.

Cette opération pouvant se révéler fastidieuse, on peut également modifier le code de la page AdminCarts.php qui se trouve dans /administrator/tabs/AdminCarts.php
A la ligne:
$this->delete
Remplacer false par true

Cela aura pour effet d'afficher la commande X (supprimer) derrière chaque paniers depuis le BO -> CLIENTS -> PANIERS

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Bonjour,

Je me permets de donner une autre astuce, certes un peu plus technique, mais en parcourant ces forum de la même catégorie je n'avais pas trouvé ce dont j'avais besoin.

Pour supprimer en masse les paniers créés par des clients non enregistrés ou par le passage de robots, il faut se rendre sur sa console de gestion de base de données (PHPMYADMIN par exemple) et passer la requête suivante :


DELETE FROM `ps_cart` WHERE `id_customer`=0 



C'est tout. Plus besoin de tout supprimer panier par panier.
En espérant que cela pourra en aider certain.

Link to comment
Share on other sites

  • 1 month later...

Dernière astuce à ne pas utiliser car la table 'cart' est liée à d'autres tables qui ne seraient pas mises à jour. Une fois les paniers supprimés il deviendrait impossible de savoir ce qu'il faut supprimer dans les autres tables.
Pourquoi la fonction suppression n'est pas validée de base sur les paniers ?? En tout cas le fait de la valider fonctionne sur les tables liées.

Link to comment
Share on other sites

  • 2 weeks later...
La parade consiste à nettoyer régulièrement la base de donnée via MyPHPsql, l'item concerné dans la BDD est "ps_cart"
Supprimer les items ne correspondant pas à des clients enregistrés.

Peux expliquer plus en détails ?
Je suis dans PhpMyAdmin, dans la table ps_cart, et je ne vois pas ce qu'il faut supprimer...
Merci
Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...
  • 3 months later...

Cette opération pouvant se révéler fastidieuse, on peut également modifier le code de la page AdminCarts.php qui se trouve dans /administrator/tabs/AdminCarts.php
A la ligne:
$this->delete
Remplacer false par true
Cela aura pour effet d'afficher la commande X (supprimer) derrière chaque paniers depuis le BO -> CLIENTS -> PANIERS


Bonsoir
Pourquoi une chose aussi simple n'est elle pas prévue d'origine par Prestahop y-a-t-il un dangé ??

Pour supprimer en masse les paniers créés par des clients non enregistrés ou par le passage de robots, il faut se rendre sur sa console de gestion de base de données (PHPMYADMIN par exemple) et passer la requête suivante :
DELETE FROM `ps_cart` WHERE `id_customer`=0


Il faut aussi supprimé dans la table cart_product les lignes liées surtout qu'une ligne dans cart peut-être liée à plusieurs ligne dans cart_produit

Une idée de code ?

Merci
Link to comment
Share on other sites

  • 4 months later...
<br/>Cette opération pouvant se révéler fastidieuse, on peut également modifier le code de la page AdminCarts.php qui se trouve dans /administrator/tabs/AdminCarts.php<br/>A la ligne:<br/>$this->delete <br/>Remplacer false par true<br/>Cela aura pour effet d'afficher la commande X (supprimer) derrière chaque paniers depuis le BO -> CLIENTS -> PANIERS
<br/><br/>Bonsoir<br/>Pourquoi une chose aussi simple n'est elle pas prévue d'origine par Prestahop y-a-t-il un dangé ??<br/><br/>
Pour supprimer en masse les paniers créés par des clients non enregistrés ou par le passage de robots, il faut se rendre sur sa console de gestion de base de données (PHPMYADMIN par exemple) et passer la requête suivante :<br/>DELETE FROM `ps_cart` WHERE `id_customer`=0
<br/><br/>Il faut aussi supprimé dans la table cart_product les lignes liées surtout qu'une ligne dans cart peut-être liée à plusieurs ligne dans cart_produit<br/><br/>Une idée de code ?<br/><br/>Merci

 

Salut,

 

Je me suis moi même posé la question lorsque j'ai commencé à développer des modules pour Prestashop. Pourquoi des actions basiques ne sont pas disponibles par défaut. ?

Comme par exemple, modifier en masse des promotions ou bien ajouter en masse des promotions sur une catégorie d'une façon simple !! car il faut actuellement se creuser les méninges pour trouver cette option. On ne peut ajouter une réduction que dans une catégorie de groupe mais sans spécifier une durée car en fait ce n'est qu'une réduction global de prix. Donc si on met la réduction par groupe, c'est pratique par exemple pour filer un pourcentage pour des clients grands comptes par exemple, mais ce n'est en aucun cas une promotion pour une catégorie !

 

Bref, le nettoyage de panier devrait également être disponible surtout qu'avec un petit changement en false / true cela s'active automatiquement.

Pour cela moi j'utilise ce module qui me permet de nettoyer les paniers par critères de recherches clients.

pss_clearcarts.zip

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

Je suis en version 1.3.6, hébergée chez One and one.

 

Pensant que les factures étaient associées uniquement aux commandes validées et non aux paniers, et pour faire du ménage, j'ai supprimé (dans BO > Clients > paniers) une grande partie de mes paniers!

Du coup je n'ai plus accès à ces factures, y'a t-il une possibilité de restaurer des paniers supprimés?

 

Cordialement

 

Grenadine

Link to comment
Share on other sites

  • 1 year later...

Bjr,

copie d'une note faîte à mes clients pour lesquels j'ai mis en place PS

 

versions: PS 1.2.x / 1.3.x

concerne: BO -> CLIENTS -> PANIERS

 

Un nombre important de paniers non suivi d'une commande, de clients non identifié, enregistrés à peu d'intervalle et plutôt de nuit.

 

Il s'agit d'attaque par des robots qui tentent ainsi de polluer la base de donnée (elle est limitée en capacité) voire tentent de passer la barrière de l'identification pour effectuer des paiements avec N° CB frauduleux.

 

La parade consiste à nettoyer régulièrement la base de donnée via MyPHPsql, l'item concerné dans la BDD est "ps_cart"

Supprimer les items ne correspondant pas à des clients enregistrés.

 

Cette opération pouvant se révéler fastidieuse, on peut également modifier le code de la page AdminCarts.php qui se trouve dans /administrator/tabs/AdminCarts.php

A la ligne:

$this->delete

Remplacer false par true

 

Cela aura pour effet d'afficher la commande X (supprimer) derrière chaque paniers depuis le BO -> CLIENTS -> PANIERS

 

Bonjour,

 

Je rebondi sur ce post très intéressant car ma boutique en version 1.5.2.0 vient de nouveau d'être attaqué par un robot. Suite au précédent qui me faisait un panier super méga, j'ai activé Robot.txt mais depuis hier, environ 100 paniers se sont constituer sans client d'enregistrer. J'ai cherche le fichier : administrator/tabs/AdminCarts.php MAIS il semblerait que dans ma version il n'existe plus ! quelqu'un saurait-il me dire où et comment il s'appelle car à ce rythme ma BDD va explosé sous peu !

 

Merci par avance

Link to comment
Share on other sites

Salut,

 

Sur une 1.5.3.1, la solution se trouve dans le fichier AdminTab.php du répertoire "classes".

A la ligne 57, remplacer :

/** @var boolean Tab Automatically displays delete icon if true */
public $delete = false;

par

/** @var boolean Tab Automatically displays delete icon if true */
public $delete = true;

 

De rien ;-)

 

A+ / F.

  • Like 1
Link to comment
Share on other sites

  • 1 month later...
  • 8 months later...

salut alors si tu a la version 1.5.5 comme moi j'ai trouver un post qui efface les panier en masse

 

tu va sur ton ftp dans le dossier /controllers/admin ta le fichier AdminCartsController.php

a la ligne 38 tu ajoute ce bout de code ca va te changer la vie

 

$this->bulk_actions = array('delete' => array('text' => $this->l('Delete selected'), 'confirm' => $this->l('Delete selected items?')));

 

merci derien :)

  • Like 3
Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...
  • 3 months later...

Aller je vais faire comme M. Catburry, un petit plus , possible ?

 

N'afficher cette case à cocher QUE si le panier n'a pas été transformé en commande.

 

de ce fait on sélectionne uniquement une fourchette de dates et on clique sur la case "Tout sélectionner" et poubelle. Cela évite de passer panier par panier pour cliquer sur la case à supprimer

Link to comment
Share on other sites

  • 3 months later...
  • 9 months later...

Merci beaucoup pour la solution, je croyais que tout semblait fonctionner mais visiblement il y'a un petit soucis :s 

 

  1. Impossible de supprimer #4196
  2. Impossible de supprimer #4189
  3. Une erreur s'est produite pendant la suppression de la sélection.

 

Et ça pour tous les paniers que j'ai voulu supprimer :s 

 

Quelqu'un peut-il m'éclairer ? 

 

Merci d'avance :)

Link to comment
Share on other sites

Justement j'ai voulu supprimer tout ceux à 0,00€ c'est ce que vous voulez dire ? 

 

Associés à une commande j'avoue ne pas comprendre la nuance en faite, désolé :s 

 

Et comment je peux savoir s'ils ont été transformé en commande ou non ? 

 

Désolé je suis novice en prestashop... 

 

Ah je crois avoir compris, je n'ai plus l'icone de la corbeille sur les paniers, donc j'en déduit qu'ils sont passés en commande, mais du coup il y'a moyen de les supprimer quand même ? 

Edited by trinkkyz (see edit history)
Link to comment
Share on other sites

@trinkkyz
Les paniers à 0€ correspondent à des commandes pour lesquels les produits ont été supprimé du catalogue.
Si tu vend une baguette et qu'ensuite tu la supprime de ton catalogue, la commande associée existe toujours ainsi que son panier mais plus le descriptif de la baguette et son prix puisque supprimé.
Dans ton cas, il semblerait qu'il soit plus approprié de travailler dans les tables de la BDD en mode PHPMyAdmin afin de supprimer carrément l'ensemble des données correspondant aux anciennes commandes.

 

Perso je fais ça chaque fin d'année en supprimant les clients*, les commandes, les paniers... de plus de 2 ans (* clients sans nouvelle commande)

Il y a un topic qui explique comment nettoyer sa BDD et les tables que l'on peut toucher sans risque dont:

ps_cart (sélectionner les paniers de l'année n-1 ou n-2*)
ps_message (Sélectionner messages clients de l'année n-1 ou n-2*)
ps_order (Sélectionner commandes n-1 ou n-2*)
*suivant vos choix personnels.
  • Like 1
Link to comment
Share on other sites

Ah oui d'accord, effectivement c'est logique vu comme ça :) 

 

Bon et bien je vais aller bidouiller dans le php ;) 

 

Merci encore une fois pour votre disponibilité et rapidité pour répondre ;) 

 

Désolé encore une fois de vous avoir dérangé avec ça :s 

Link to comment
Share on other sites

Ben malheureusement je ne l'ai plus... Mais ça doit se trouver en cherchant un peu...

Sinon ce que j'ai dit précédemment est valable pour la gestion client/commandes/panier qui datent mais on peut aussi ajouter un nettoyage de fin d'année que je fais aussi sur d'autres tables/
Je m'étais fait un pense-bête que je copie ci-dessous après avoir du intervenir sur une BDD énorme qui rendait impossible une migration de version et d'hébergeur:

Il concerne les tables les plus grosses d'une BDD.

 

;;;;;;;;;;;;;;;;;;;;;;;

 
Vider les tables depuis PHPMyAdmin (commande Truncate)
 
-connections (supprime les stats de nombre de visiteurs)*
-connections_page (supprime les stats de pages vues)*
-connections_source (supprime les stats d'origine des visiteurs)*
-date_range (?)**
-guest (5mo sur 75, supprime les stats des equipements clients)*
-pagenotfound (ce sont les erreurs 404)*
-page_viewed (supprime les stats de pages vues)*
-product_sale (supprime les meilleurs vente antérieures)*
 
*Avant cette opération, procéder à la ré-initialisation des modules statistiques activés.
**Avant de vider la table date_range, éliminer éventuellement les clients inactifs si requis.
Car le vidage de date_range efface les dates de dernières connections des clients.
 
Si besoin, avec précaution car peut affecter le moteur de recherche interne de la boutique en supprimant
toutes références aux produits crées antérieurement et non-modifiées à postériori
 
-search_index
-search_words (supprime les références de recherche en boutique mais pas dans le back-office)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Link to comment
Share on other sites

  • 1 year later...

Merci de ta réponse. En faite je me demande aussi si c'est utile car pourquoi prestshop ne l'a pas mis en place d'office...

 

Moi c'est surtout pour gagner en vitesse de chargement de mon site. Tu as remarqué une différence avec le module ukoo ?

Link to comment
Share on other sites

Bien sur que c'est utile, sinon toutes les connexions et paniers s'accumulent en BDD et l'alourdissent à mort, la différence de vitesse après nettoyage est flagrante.

 

PS : Prestashop ne met pas en place d'office tout un tas de chose, ils font tout pour te vendre sur addons des fonctions essentielles manquantes c'est bien connu ;)

 

Ukoo est un développeur indépendant et de qualité, tu peux foncer :)

Link to comment
Share on other sites

  • 6 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...