osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

2 Pages V  < 1 2  
Reply to this topicStart new topic
> Supprimer un article d'un panier enregistré, au moment du login [Nouvelle Contribution]
delete
posté 4 Nov 2008, 10:12
Message #26


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Citation
Relis le petit cahier des charges qu'à fait Oneill...


Au temps pour moi, je ne faisais qu'apporter un peu d'eau à ton moulin, le select sum tel que je l'ai indiqué te renvoies une valeur exploitable.

Enfin sinon ton code est approprié et remplit son rôle c'est l'essentiel. wink.gif

Ce message a été modifié par delete - 4 Nov 2008, 10:12.
Go to the top of the page
 
shoprun
posté 4 Nov 2008, 10:46
Message #27


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (delete @ 4 Nov 2008, 13:12) *
Au temps pour moi, je ne faisais qu'apporter un peu d'eau à ton moulin, le select sum tel que je l'ai indiqué te renvoies une valeur exploitable.
C'est bien pour ça que j'insistais, je ne souhaitais pas allez au delà de ce qu'avait défini Oneill.

Cependant, pour info, même un SUM(products_quantity) n'était pas nom plus la solution, la fonction est inutile étant donné qu'un produit est unique, donc la quantité retournée sera toujours la même, avec ou sans le SUM().


Par contre, je soumet une évolution, qui elle effectivement demande d'obtenir la quantité, pour éventuellement réguler la quantité du panier selon la quantité en stock.
Mais pour le moment la question reste sans réponse s'il est souhaitable de le faire ou non.

Pour ma part, donc si ça ne tient qu'à moi je le ferais, mais l'avis d'autres membre est le bienvenue blush.gif


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
oneill
posté 11 Nov 2008, 10:00
Message #28


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7617
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Juste ca

Code
      $this->cleanupNoStock();

à la place de
Code
      $cart->cleanupNoStock();


--------------------
Go to the top of the page
 
oneill
posté 11 Nov 2008, 10:31
Message #29


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7617
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Donc je récapitule

Insert en base de données
Code
insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Gestion de la restauration du panier', 'CONFIG_CUSTOMERS_BASKET', '0', 'Gestion de la restauration du panier selon 4 cas de figure<br />0 : Inactif par défaut<br />1 :On enleve les produits hors stock et seulement eux<br />2 :On enleve les produits retirés de la vente et seulement eux<br />3 : On enleve les 2.', '9', '6', now())


Fonction à ajouter dans includes/classes/shopping_cart.php
Trouver
Code
    function cleanup() {
      global $customer_id;

Et ajouter avant
Code
    function cleanupNoStock() {
    //0 -> Inactif par défaut
    //1 -> On enleve les produits hors stock et seulement eux
    //2 -> On enleve les produits retirés de la vente et seulement eux
    //3 -> On enleve les 2.
    if (CONFIG_CUSTOMERS_BASKET == '1' || CONFIG_CUSTOMERS_BASKET == '2' || CONFIG_CUSTOMERS_BASKET == '3') {
        reset($this->contents);
        while (list($key,) = each($this->contents)) {
            //
            $clause = false;
            switch (CONFIG_CUSTOMERS_BASKET) {
                case '1' : $clause = " AND products_quantity < '1'";
                break;
                case '2' : $clause = " AND products_status < '1'";
                break;
                case '3' : $clause = " AND (products_quantity < '1' OR products_status < '1')";
                break;
            }
            //
            if (!empty($clause)) {
                $rs_prod = tep_db_query("SELECT COUNT(products_id) AS total
                    FROM ".TABLE_PRODUCTS."
                    WHERE products_id = '".tep_db_input($key)."' ".$clause." ");
                //
                $total = tep_db_fetch_array($rs_prod);
                //
                if ((int)$total['total'] > 0) {
                    $this->remove(tep_db_input($key));
                }
            }
            //
        }
    }
}


Trouver le premier
Code
      $this->cleanup();

et le remplacer par
Code
      $this->cleanupNoStock();
      $this->cleanup();


Et bien shoprun, un petit addon sur oscommerce.com en taguant bien les lignes d'ajout ?

Et comme tu le dis, il pourrait y avoir une option qui règle le nombre d'articles sur ceux en stock mais cela ferait ajouter 2 positions supplémentaires, la 1 et la 3 avec en plus l'option du stock. Ca risque de faire compliqué non ? D'autant plus que généralement c'est géré plus loin dans Osc.



--------------------
Go to the top of the page
 
shoprun
posté 27 Dec 2008, 15:45
Message #30


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (oneill)
Et bien shoprun, un petit addon sur oscommerce.com en taguant bien les lignes d'ajout ?
Ben allez hop, c'est dispo sur le site US des addons :
arrow.gif shoppingCart_cleanup_v1
2ème petite contrib smile.gif

Citation (oneill)
Et comme tu le dis, il pourrait y avoir une option qui règle le nombre d'articles sur ceux en stock mais cela ferait ajouter 2 positions supplémentaires, la 1 et la 3 avec en plus l'option du stock. Ca risque de faire compliqué non ? D'autant plus que généralement c'est géré plus loin dans Osc.
Effectivement je pense qu'il vaut mieux rester simple, puis c'est ce que je souhaitais aussi.
Sans compter que la contrib je l'ai mise aujourd'hui, j'ai un peu oublié tout ça avec le temps.
Si évolution il y a, ça se fera sur une autre version.


Petite parenthèse :
Je me suis un peu précipité en déposant ça, car j'ai oublié de choisir une catégorie.
Du coup elle se trouve dans "Credit Modules" mrgreen.gif Et je ne vois pas comment modifier ça huh.gif
Si quelqu'un a une idée, je suis preneur wink.gif


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
oneill
posté 27 Dec 2008, 16:54
Message #31


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7617
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



En tous les cas cette contrib m'a bien été utile pendant les fêtes.. Un soucis de moins à gérer pour le stock.


--------------------
Go to the top of the page
 
delete
posté 22 Jan 2009, 09:59
Message #32


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Citation (oneill @ 11 Nov 2008, 10:31) *
Donc je récapitule


Je me permets de faire une précision messieurs, car j'ai également intégré cette solution technique très efficace biggrin.gif

J'ai fait les corrections suivantes, voici donc le code de la fonction modifiée :

Code
    function cleanupNoStock() {
    //0 -> Inactif par défaut
    //1 -> On enleve les produits hors stock et seulement eux
    //2 -> On enleve les produits retirés de la vente et seulement eux
    //3 -> On enleve les 2.
    if ( isset(CONFIG_CUSTOMERS_BASKET) ) {
    //
    switch (CONFIG_CUSTOMERS_BASKET) {
            case '1' : $clause = " AND products_quantity < '1'";
            break;
            case '2' : $clause = " AND products_status < '1'";
            break;
            case '3' : $clause = " AND (products_quantity < '1' OR products_status < '1')";
            break;
            default  : $clause = '';
        }
        reset($this->contents);
        while (list($key,) = each($this->contents)) {
            //
            if (!empty($clause)) {
                $rs_prod = tep_db_query("SELECT COUNT(products_id) AS total
                    FROM ".TABLE_PRODUCTS."
                    WHERE products_id = '".tep_db_input($key)."' ".$clause." ");
                //
                $total = tep_db_fetch_array($rs_prod);
                //
                if ((int)$total['total'] > 0) {
                    $this->remove(tep_db_input($key));
                }
            }
            //
        }
    }
}


Explications : Il est inutile de tester en boucle une constante (CONFIG_CUSTOMERS_BASKET) ... Une fois suffit
wink.gif
Go to the top of the page
 
shoprun
posté 22 Jan 2009, 11:04
Message #33


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (delete @ 22 Jan 2009, 12:59) *
Explications : Il est inutile de tester en boucle une constante (CONFIG_CUSTOMERS_BASKET) ... Une fois suffit
wink.gif

De quelle boucle parle tu ?
On ne boucle pas sur la constante, non ?
On récupère seulement la bonne concaténation de code SQL correspondante pour cette constante CONFIG_CUSTOMERS_BASKET.
On passe qu'une seule fois dans le switch, non ?

Après, il y a une boucle sur les produits, mais là c'est obligé, pour savoir pour chaque produit du panier (donc individuellement) si son statut est à 0 (par exemple), donc s'il faut l'éliminer ou pas.


Je ne vois pas de quoi tu fais allusion huh.gif


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
Zohdraz
posté 22 Jan 2009, 11:08
Message #34


Ceinture verte OSC
Icône de groupe

Groupe : Membres VIP
Messages : 589
Inscrit : 18-November 05
Membre no 7875



Sympathique cette petite contrib, je m'en vais la mettre en place, merci à tous wink.gif

Zardhoz


--------------------

Merci d'être clair dans vos requêtes et de personnaliser votre signature en y intégrant notamment votre version oscommerce et votre environnement de développement.
Pour bien démarrer avec ce forum : Règles d'usage des forums | Bien poser sa question | Bien utiliser les forums | Recherches sur les forums
Pour bien démarrer avec OSC : Compétences requises | Doc1 | Doc2 | Tutorial installation en local | FAQ | Liste des contributions FR | Contributions US | Screenshots & présentation des contribs OSC by Marco
Pour se former et s'informer : siteduzero | phpfrance | commentcamarche | developpez | apprendre-php
Logiciels indispensables : UltraEdit ou PSPad | Winmerge | Filezilla | Inkscape | PhotoFiltre v6

--------------------
Le temps efface tout, et à la fin, il ne reste que les ténèbres...
Go to the top of the page
 
delete
posté 22 Jan 2009, 11:45
Message #35


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Voici le code recopié du post d'Oneill :

Citation (oneill @ 11 Nov 2008, 10:31) *
Code
        while (list($key,) = each($this->contents)) {
              //
              $clause = false;
              switch (CONFIG_CUSTOMERS_BASKET) {
      .... etc ...


Si là on ne boucle pas sur le switch inutilement, alors j'arrête le développement blink.gif

Citation (shoprun @ 22 Jan 2009, 11:04) *
Je ne vois pas de quoi tu fais allusion huh.gif


C'était dans un bon état d'esprit que je corrigeais/j'optimisais ce code que je viens d'implémenter dans une boutique, afin de le faire partager à tous.
Go to the top of the page
 
shoprun
posté 22 Jan 2009, 12:14
Message #36


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Arff, que veux tu, je me référais à mon code, et le switch() est bel et bien en dehors de la boucle.
Fallait regarder juste plus haut dans ce sujet, je sais ... On fait s'qu'on peu ...

La dessus, je ferais d'abord une correction avec ton code dans une MS2 de base, et après ça je mettrais un fix sur http://addons.oscommerce.com/

Merci, et bien vu wink.gif


Du coup, on peu aussi éviter la boucle, en remontant la condition : if (!empty($clause))
Cas très rare surement, mais bon :
Code
function cleanupNoStock() {
    //0 -> Inactif par défaut
    //1 -> On enleve les produits hors stock et seulement eux
    //2 -> On enleve les produits retirés de la vente et seulement eux
    //3 -> On enleve les 2.
    if ( isset(CONFIG_CUSTOMERS_BASKET) ) {
    //
        switch (CONFIG_CUSTOMERS_BASKET) {
            case '1' : $clause = " AND products_quantity < '1'";
            break;
            case '2' : $clause = " AND products_status < '1'";
            break;
            case '3' : $clause = " AND (products_quantity < '1' OR products_status < '1')";
            break;
            default  : $clause = '';
        }
        reset($this->contents);
        if (!empty($clause)) {
            //
            while (list($key,) = each($this->contents)) {
                $rs_prod = tep_db_query("SELECT COUNT(products_id) AS total
                FROM ".TABLE_PRODUCTS."
                WHERE products_id = '".tep_db_input($key)."' ".$clause." ");
                //
                $total = tep_db_fetch_array($rs_prod);
                //
                if ((int)$total['total'] > 0) {
                    $this->remove(tep_db_input($key));
                }
            }
        }
    }
}



--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
gotcha5832
posté 23 Jan 2009, 15:35
Message #37


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 343
Inscrit : 27-February 08
Lieu : lune
Membre no 20966



Merci les gars!!!

P.S.:: bizarre, je tourne avec depuis longtemps et pas de souci.
Mais je viens d'essayer nos nouvelle versions de function cleanupNoStock()
et que ce sois celle de shoprun, ou delete.
L'une comme l'autre me font planter ma boutique...

Est ce pareil chez vous? ou bien, y a t il autre chose à changer que cette fonction??

Ce message a été modifié par gotcha5832 - 23 Jan 2009, 15:53.


--------------------
Osc-2.2-ms2-FR
Os : Linux 2.6.24.7-desktop-2mnb
Version PHP : 5.2.5 (Zend : 2.2.0)
Base de données : MySQL 5.0.51a
Serveur HTTP : Apache/2.2.8 (Mandriva Linux/PREFORK-6.1mdv2008.1)
Go to the top of the page
 
oneill
posté 23 Jan 2009, 18:05
Message #38


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7617
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Je suis toujours à la même et ca roule !
Code
function cleanupNoStock() {
    //0 -> Inactif par défaut
    //1 -> On enleve les produits hors stock et seulement eux
    //2 -> On enleve les produits retirés de la vente et seulement eux
    //3 -> On enleve les 2.
    if (CONFIG_CUSTOMERS_BASKET == '1' || CONFIG_CUSTOMERS_BASKET == '2' || CONFIG_CUSTOMERS_BASKET == '3') {
        reset($this->contents);
        while (list($key,) = each($this->contents)) {
            //
            $clause = false;
            switch (CONFIG_CUSTOMERS_BASKET) {
                case '1' : $clause = " AND products_quantity < '1'";
                break;
                case '2' : $clause = " AND products_status < '1'";
                break;
                case '3' : $clause = " AND (products_quantity < '1' OR products_status < '1')";
                break;
            }
            //
            if (!empty($clause)) {
                $rs_prod = tep_db_query("SELECT COUNT(products_id) AS total
                    FROM ".TABLE_PRODUCTS."
                    WHERE products_id = '".tep_db_input($key)."' ".$clause." ");
                //
                $total = tep_db_fetch_array($rs_prod);
                //
                if ((int)$total['total'] > 0) {
                    $this->remove(tep_db_input($key));
                }
            }
            //
        }
    }
}


--------------------
Go to the top of the page
 
gotcha5832
posté 23 Jan 2009, 20:20
Message #39


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 343
Inscrit : 27-February 08
Lieu : lune
Membre no 20966



idem effectivement, j'ai essayer les deux autres mais ca me fais planter, du coup je reste sur la même version que la tienne.


--------------------
Osc-2.2-ms2-FR
Os : Linux 2.6.24.7-desktop-2mnb
Version PHP : 5.2.5 (Zend : 2.2.0)
Base de données : MySQL 5.0.51a
Serveur HTTP : Apache/2.2.8 (Mandriva Linux/PREFORK-6.1mdv2008.1)
Go to the top of the page
 
delete
posté 23 Jan 2009, 23:04
Message #40


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Citation (oneill @ 23 Jan 2009, 18:05) *
Je suis toujours à la même et ca roule !


Shalom c'est shabbat mais le post mérite d'être modifié !

J'ai le même défaut que notre ami Shoprun, je code sans tester étant sûr de moi ... blush.gif

Doc PHP : http://fr.php.net/isset
Citation
Avertissement

isset() fonctionne uniquement avec des variables car l'utilisation de toute autre chose aura comme conséquence une erreur d'analyse. Pour vérifier si une constants est définie, utilisez la fonction defined().


Donc avec des constantes : Plantade ! Merci d'avoir prévenu quant à l'erreur ...

Donc le code que j'avais corrigé et optimisé par Shoprun est désormais le suivant :

Citation (shoprun @ 22 Jan 2009, 12:14) *
Code
function cleanupNoStock() {
    //0 -> Inactif par défaut
    //1 -> On enleve les produits hors stock et seulement eux
    //2 -> On enleve les produits retirés de la vente et seulement eux
    //3 -> On enleve les 2.
    if ( defined('CONFIG_CUSTOMERS_BASKET') ) {
    //
        switch (CONFIG_CUSTOMERS_BASKET) {
            case '1' : $clause = " AND products_quantity < '1'";
            break;
            case '2' : $clause = " AND products_status < '1'";
            break;
            case '3' : $clause = " AND (products_quantity < '1' OR products_status < '1')";
            break;
            default  : $clause = '';
        }
        reset($this->contents);
        if (!empty($clause)) {
            //
            while (list($key,) = each($this->contents)) {
                $rs_prod = tep_db_query("SELECT COUNT(products_id) AS total
                FROM ".TABLE_PRODUCTS."
                WHERE products_id = '".tep_db_input($key)."' ".$clause." ");
                //
                $total = tep_db_fetch_array($rs_prod);
                //
                if ((int)$total['total'] > 0) {
                    $this->remove(tep_db_input($key));
                }
            }
        }
    }
}


Le plus amusant c'est le message d'erreur en Hébreux biggrin.gif source : http://en.wikipedia.org/wiki/Paamayim_Nekudotayim

wink.gif
Go to the top of the page
 
gotcha5832
posté 23 Jan 2009, 23:56
Message #41


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 343
Inscrit : 27-February 08
Lieu : lune
Membre no 20966



Merci à toi.

Désolé de pas avoir pu corriger moi-même....
petit apprenti deviendras maitre.... (mais pour ça va valoir que je bosse.

Merci à vous


--------------------
Osc-2.2-ms2-FR
Os : Linux 2.6.24.7-desktop-2mnb
Version PHP : 5.2.5 (Zend : 2.2.0)
Base de données : MySQL 5.0.51a
Serveur HTTP : Apache/2.2.8 (Mandriva Linux/PREFORK-6.1mdv2008.1)
Go to the top of the page
 
mosaic
posté 24 Jan 2009, 00:58
Message #42


Ceinture noire OSC
Icône de groupe

Groupe : Modérateurs
Messages : 2908
Inscrit : 24-October 04
Lieu : Quimper ( Finistère )
Membre no 3567



Eh oui, c'est une petite blague d'un développeur israëlien du Zend Engine bien connu des dev PHP blush.gif

Je n'ai pas retrouvé le blog listant les messages d'erreurs insolites de PHP


--------------------
#mosaic {
autodidacte: max;
derision: min;
ms3: never;
occupation: 9999;
latitude : 48;
longitude : -4.1;
competent: none !important;
}

documentation MS2 / F.A.Q. / Contribes FR / Contribes US
Go to the top of the page
 
shoprun
posté 24 Jan 2009, 09:08
Message #43


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (delete @ 24 Jan 2009, 02:04) *
Donc avec des constantes : Plantade ! Merci d'avoir prévenu quant à l'erreur ...
C'est dingue ça, j'ai eu ce plantage il y a même pas 15 jours wacko.gif

En faite, une condition avec juste la fonction defined() ne garanti pas tout, elle confirme juste que la constante est définie, mais ne confirme pas si elle contient une valeur.
Donc cette fonction retourne true même avec ceci :
Code
define('MA_CONSTANTE', '');


Sérieux, j'ai cherché un moyen de de "contrer" ça, et cherché comme un malade sur le Net ... rien ... nada mrgreen.gif
Je me suis dis que c'est une valeur que le isset attend, que cela n'tienne, du coup un code comme ceci devrait faire l'affaire :
Code
( if (isset( constant('MA_CONSTANTE') ) )
Erreur, mais pas la même mrgreen.gif
Citation
Fatal error: Can't use function return value in write context in C:\wamp\www\... on line 76


Par contre, en passant par une fonction sa marche, et sa s'explique, car c'est une variable qui est passée en paramètre.
Donc ceci est correcte :
Code
define('MA_CONSTATNT', 'bidule');
if ( defined('MA_CONSTATNT') && tep_not_null(MA_CONSTATNT) )

// Ou alors :
if ( defined('MA_CONSTATNT') && MA_CONSTATNT != '' )

Par contre, ceci ne provoque une erreur :
Code
define('MA_CONSTATNT', 'bidule');
if ( defined('MA_CONSTATNT') && isset(MA_CONSTATNT) )

// de même que :
if ( defined('MA_CONSTATNT') && !empty(MA_CONSTATNT) )


Donc impossible de trouver une fonction native en Php pour vérifier convenablement une constante.
M'enfin, la fonction tep_not_null() est dispo dans osCommerce.
Mais on dira ce qu'on veux, mais le fait de "passer" par une fonction fait que c'est une variable que l'on vérifie, et une variable par définition peu "potentiellement" varier (donc pas constant).
J'en conclu que c'est un manque de fiabilité de faire ainsi. Mais bon, c'est pour la réflexion wink.gif


La dessus, donc notre cas il est inutile de le rajouter je pense, car le switch() gèrera le problème.
La dernière correction reste donc la référence wink.gif


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
shoprun
posté 24 Jan 2009, 12:29
Message #44


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Je viens de tester le code et il y a une petite erreur (quotes) :
Code
if ( defined(CONFIG_CUSTOMERS_BASKET) ) {

Remplacer par :
Code
if ( defined('CONFIG_CUSTOMERS_BASKET') ) {


/!\ Code corrigé -> plus haut wink.gif


Je tente de re-uploader sur le site US, mais impossible de s'identifier, il y a des erreurs wacko.gif
Tenterais plus tard ...


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
delete
posté 24 Jan 2009, 14:04
Message #45


2eme dan OSC
Icône de groupe

Groupe : Bannis
Messages : 3022
Inscrit : 12-November 07
Lieu : Massilia
Membre no 19718



Citation (shoprun @ 24 Jan 2009, 12:29) *
Je tente de re-uploader sur le site US, mais impossible de s'identifier, il y a des erreurs wacko.gif


Syndrome du Paamayim Nekudotayim ? laugh.gif
Go to the top of the page
 
shoprun
posté 24 Jan 2009, 14:43
Message #46


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (delete)
Syndrome du Paamayim Nekudotayim ? laugh.gif
Une cellule psychologique s'impose ... (pour tout osCien et osCienne) laugh.gif

J'ai suivie la scéance, et maintenant j'ai pu m'identifier ... ouf biggrin.gif
-> Le fix est donc dispo (Full package) -> shoppingCart_cleanup_v1_fix

J'avais pas fais gaffe, mais il y a un gars (pixclinic) qui a effectué une traduction : US version
Afff ... j'aurais pu l'intégrer dans le nouveau Fix. Tant pis, trop tard ... Ca sera pour la prochaine.
Raison de l'édition : Edition du lien qui ne fonctionnait pas. (Oneill) (Trop préssé toujours ... Thanks -:) )
Go to the top of the page
 
shoprun
posté 7 Mar 2009, 11:00
Message #47


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Un p'tit up biggrin.gif


@Zardhoz
Suite à une intervention dans un tout autre sujet, ceci m'a amené à remarquer que tu as proposé une petite évolution de cette contribution ... aucun souci la dessus blush.gif

Cependant, et vu la description de cette 4ème option (config), qui est la suppression du panier à priori, un code comme celui ne serait il pas plus simple, plus radical ?
Code
switch (CONFIG_CUSTOMERS_BASKET) {
    case '1' : $clause = " AND products_quantity < '1'";
    break;
    case '2' : $clause = " AND products_status < '1'";
    break;
    case '3' : $clause = " AND (products_quantity < '1' OR products_status < '1')";
    break;
    case '4' : $clause = null; $cart->reset(true);
    break;
    default  : $clause = null;
}


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
Zohdraz
posté 7 Mar 2009, 11:40
Message #48


Ceinture verte OSC
Icône de groupe

Groupe : Membres VIP
Messages : 589
Inscrit : 18-November 05
Membre no 7875



Pourquoi faire simple quand on peux faire compliqué, non mais... twisted.gif ?

Sur ce, je m'en vais m'infliger quelques coups de fouets... tongue.gif

Zardhoz


--------------------

Merci d'être clair dans vos requêtes et de personnaliser votre signature en y intégrant notamment votre version oscommerce et votre environnement de développement.
Pour bien démarrer avec ce forum : Règles d'usage des forums | Bien poser sa question | Bien utiliser les forums | Recherches sur les forums
Pour bien démarrer avec OSC : Compétences requises | Doc1 | Doc2 | Tutorial installation en local | FAQ | Liste des contributions FR | Contributions US | Screenshots & présentation des contribs OSC by Marco
Pour se former et s'informer : siteduzero | phpfrance | commentcamarche | developpez | apprendre-php
Logiciels indispensables : UltraEdit ou PSPad | Winmerge | Filezilla | Inkscape | PhotoFiltre v6

--------------------
Le temps efface tout, et à la fin, il ne reste que les ténèbres...
Go to the top of the page
 
shoprun
posté 7 Mar 2009, 15:59
Message #49


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Citation (zardhoz)
Sur ce, je m'en vais m'infliger quelques coups de fouets... tongue.gif
On va peut être se fouetter mutuellement alors laugh.gif
Ca y est ... on fait dans le sado-maso maintenant biggrin.gif

Si on suis la logique, et bien c'est pas logique wacko.gif
En faite, si on suis le déroulement, lors de la connexion du client, le panier est en 1er restauré, donc :
-> on effectue les requêtes (select) pour stocker les données dans la session.
-> ensuite on re-requête (delete from) pour supprimer le panier, on supprime aussi les données du panier dans la session.

Autant dire que l'on gaspille de la mémoire et on fait des requêtes de trop. Le plus simple serait de supprimer le panier dès le départ, et uniquement.
Ceci se passe donc dans le login.php, au moment ou il y a l'appel : $cart->restore_contents();

Un code comme celui ci ne devrait pas être si mal : (login.php ligne ~ 58)
Code
if (defined('CONFIG_CUSTOMERS_BASKET') &&  CONFIG_CUSTOMERS_BASKET == '4') {
    $cart->reset(true);
}
else {
    $cart->restore_contents();
}


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
oneill
posté 7 Mar 2009, 17:25
Message #50


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7617
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Tu fais ces requêtes seulement quand le client se loggue, on n'est pas à ca prêt. En plus tu sors de ta première logique et t'oblige à modifier un autre fichier. Pour moi l'effacage total du panier n'est pas un choix prioritaire et indispensable. Il sera utile dans peu de cas, donc c'est normal qu'il soit en choix 4 et tant pis si pour les rares cas où il sera appelé, il y a des requêtes en rab.
Dans sa forme actuelle, cette contrib correspond à un maximum de cas. Ce qu'elle fait déjà est un vrai plus, je m'en suis rendu compte à Noël.


--------------------
Go to the top of the page
 

2 Pages V  < 1 2
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 19th May 2013 - 21:07
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)