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

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Condition date d'ajout inférieure à un mois
aurelou
posté 11 May 2016, 13:02
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Bonjour,

Je cherche à mettre une image "nouveau" en overlay sur mes produits, si la date d'ajout est inférieure à un mois.

Je n'arrive pas à faire la condition. Pourriez-vous m'aider ?

Je voudrais simplement de l'aide pour la ligne : if 'products_date_added' est inférieure à un mois

Merci beaucoup pour votre aide.


--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
Bonbec
posté 11 May 2016, 19:56
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Dans mon site MS 2.2, fichier products_listing.php, j'ai :
Code
if ( (time() - strtotime($listing['products_date_added'])) < 2592000) {

2592000 = 30 jours

J'espère que cela répond à ta question.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
aurelou
posté 13 May 2016, 11:54
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Bonjour,

Merci beaucoup pour la réponse !

Je ne sais pas pourquoi ça ne fonctionne pas chez moi... confused.gif

Voici le bout de code que je mets :

Citation
elseif ( (time() - strtotime($listing['products_date_added'])) < 2592000) {

$text_image = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . (int)$_GET['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], (ADDIMAGES_RESTRICT_IMAGE_SIZE == 'true'?SMALL_IMAGE_WIDTH:''), (ADDIMAGES_RESTRICT_IMAGE_SIZE == 'true'?SMALL_IMAGE_HEIGHT:''), 'style="position:relative; z-index:2"') . '<img src="images/overlay-new.png" style="display:block; position:relative;z-index:4; margin-top:-239px"></a>';

}


J'ai également une condition du même genre pour les produits en promotion et ça fonctionne très bien :

Citation
elseif (tep_not_null($listing[$x]['specials_new_products_price'])) {

$text_image = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . (int)$_GET['manufacturers_id'] . '&products_id=' . $listing[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], (ADDIMAGES_RESTRICT_IMAGE_SIZE == 'true'?SMALL_IMAGE_WIDTH:''), (ADDIMAGES_RESTRICT_IMAGE_SIZE == 'true'?SMALL_IMAGE_HEIGHT:''), 'style="position:relative; z-index:2"') . '<img src="images/specials_overlay-french.png" style="display:block; position:relative;z-index:4; margin-top:-239px"></a>';
}


J'ai aussi essayé comme ça mais ça ne fonctionne pas non plus :/

Citation
elseif (strtotime($listing[$x]['products_date_added']) > strtotime('-1 month')) {



--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
Bonbec
posté 18 May 2016, 07:53
Message #4


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour,

Quand tu dis que cela ne fonctionne pas, c'est que :
1) tu ne vas pas dans ton elseif ?
2) time() - strtotime($listing['products_date_added']) ne donne aucune valeur ?
Eventuellement mettre la valeur de time() dans une variable et faire $variable - strtotime($listing['products_date_added'])
Il avait fallu que je fasse cela chez un ex hébergeur.
3) idem pour strtotime($listing[$x]['products_date_added']) et strtotime('-1 month') ?


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
Bonbec
posté 23 May 2016, 13:36
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Re bonjour,

Pas de nouvelles ...
Sur mon autre ordi, en local, ma ligne de texte ne fonctionne pas :
Code
if ( (time() - strtotime($listing['products_date_added'])) < 2592000) {

Je suis obligé de sortir time() de la ligne et le mettre en variable :
Code
$timeactuel = time();
if ( ($timeactuel - strtotime($listing['products_date_added'])) < 2592000) {

Et là çà fonctionne.
Peut-être que pour toi ce sera aussi le cas ?


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
aurelou
posté 23 May 2016, 14:22
Message #6


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Bonjour,

Merci beaucoup encore pour toute cette aide.

Désolée de ne pas avoir répondu plus tôt, c'est que je ne m'étais pas re penchée dessus depuis. Quand je suis trop énervée sur quelque chose j'ai la fâcheuse tendance à le laisser complètement tomber.

J'ai essayé de mettre time() en variable mais ça ne fonctionne pas non plus. Quand je dis que ça ne fonctionne pas, c'est que mon image n'apparaît pas en overlay pour les produits de moins d'un mois. C'est comme s'il n'y avait rien d'ajouté à mon code; il n'y a pas non plus de message d'erreur.

Je précise que mon image fonctionne bien, quand je ne précise aucune condition elle s'affiche bien sur tous les produits.

C'est exactement pareil pour strtotime('-1 month').

Ce message a été modifié par aurelou - 23 May 2016, 14:24.


--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
Bonbec
posté 24 May 2016, 09:11
Message #7


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Re,
Faut jamais laisser tomber, tu peux mettre de côté puis revenir après dessus, en général çà fonctionne comme méthode happy.gif

Essaye de placer ce code dans ton fichier :
Code
echo 'time = ' . time();
echo '<br>products_date_added = ' . $listing['products_date_added'];
echo '<br>strtotime = ' . strtotime($listing['products_date_added']);
$resultat = 'çà marche pas';
if ( (time() - strtotime($listing['products_date_added'])) < 2592000) {
$resultat = 'çà marche';
}
echo '<br>' . $resultat;

Cela t'affiche quelque chose ?
si c'est $listing['products_date_added']) qui ne donne rien, c'est que products_date_added doit manquer dans le $listing_sql du fichier index.php


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
aurelou
posté 26 May 2016, 13:41
Message #8


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Bonjour Bonbec,

Merci encore smile.gif smile.gif

J'ai placé le code et ça m'affiche ça :

Citation
time = 1464266087
products_date_added =
strtotime =
çà marche pas


Donc j'imagine que c'est products_date_added qui manque dans le $listing_sql du fichier index.php ?

Je vais vérifier si j'arrive à trouver ça smile.gif


--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
aurelou
posté 26 May 2016, 13:45
Message #9


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Alors, dans mon fichier index.php je trouve "products_date_added" uniquement ici :

Citation
// BOF Enable & Disable Categories
$listing_sql = "select " . $select_column_list . " p.products_date_added, p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, p.products_sort_order, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from (" . TABLE_PRODUCTS . " p)
left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id
left join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on p.products_id = p2c.products_id
left join " . TABLE_CATEGORIES . " c on p2c.categories_id = c.categories_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m
where c.categories_status = '1' and p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
// EOF Enable & Disable Categories


Est-ce normal ? Comme ce bout de code est modifié avec la contribution "Enable & Disable Categories" j'ai peut-être fais des erreurs.


--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
Bonbec
posté 26 May 2016, 14:24
Message #10


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Re,
C'est pour ton site MS2.2 ou le 2.3.4 ?
Si c'est pour le MS2.2, alors moi j'ai çà (mais ma page est très modifiée) et cela avait été ajouté pour la contrib "New Product Icon contribution" :
Code
// montre le produit du fabricant spécifié - show the products of a specified manufacturer
    if (isset($_GET['manufacturers_id'])) {
      if (isset($_GET['filter_id']) && tep_not_null($_GET['filter_id'])) {
// Nous sommes invités à montrer seulement une catégorie spécifique - We are asked to show only a specific category
// p.products_date_added to query for New Product Icon contribution
        $listing_sql = "select " . $select_column_list . " p.products_date_added, p.products_allow_resellers, p.products_discount, p.products_unit, p.products_id, p.manufacturers_id, p.products_price, p.products_price_resellers, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' ".$andpropart." and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$_GET['filter_id'] . "' and ISNULL(p.products_date_available)";
      } else {
// On montre tout - We show them all
// p.products_date_added to query for New Product Icon contribution
        $listing_sql = "select " . $select_column_list . " p.products_date_added, p.products_allow_resellers, p.products_discount, p.products_unit, p.products_id, p.manufacturers_id, p.products_price, p.products_price_resellers, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m where p.products_status = '1'  ".$andpropart." and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$_GET['manufacturers_id'] . "'  and ISNULL(p.products_date_available)";
      }
    } else {
// On montre les produits de la catégorie spécifiée - show the products in a given categorie
      if (isset($_GET['filter_id']) && tep_not_null($_GET['filter_id'])) {
// Nous sommes invités à montrer seulement une catégorie spécifique - We are asked to show only specific catgeory
// p.products_date_added to query for New Product Icon contribution
        $listing_sql = "select " . $select_column_list . " p.products_date_added, p.products_allow_resellers, p.products_discount, p.products_scale, p.products_unit, p.products_id, p.manufacturers_id, p.products_price, p.products_price_resellers, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' ".$andpropart." and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$_GET['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "' and ISNULL(p.products_date_available)";
      } else {
// On montre tout - We show them all
// p.products_date_added to query for New Product Icon contribution
        $listing_sql = "select " . $select_column_list . " p.products_scale, p.products_date_added, p.products_allow_resellers, p.products_discount, p.products_unit, p.products_id, p.manufacturers_id, p.products_purchase_price, p.products_price, p.products_price_resellers, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' ".$andpropart." and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "' and ISNULL(p.products_date_available)";
      }
    }

Comme tu peux le voir, il y a le p.products_date_added pour chaque $listing_sql =


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
Gnidhal
posté 26 May 2016, 18:25
Message #11


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 9221
Inscrit : 4-March 03
Lieu : Pau
Membre no 927



Bel effort de codage Bonbec, ça peut marcher mais il y a plus simple.
La date en bdd est toujours enregistrée en datetime ce qui se matérialise par une écriture : yyyy-mm-dd HH:ii:ss
Ainsi en PHP la récup de la date courante par date("Y-m-d") a le même format (ici on se fout de l'heure mais on pourrait l'ajouter avec Y-m-d H:i:s).
Ce qui fait qu'une simple comparaison du champ avec la date courante sans passer par un strtotime permet de déclencher une action.
Mieux, en tronquant la chaine current_date, en enlevant le jour par exemple on peut faire un filtrage mensuel ou en ajoutant l'heure on peut faire un filtrage horaire (ou jusqu'à la seconde)
Code
$current_date = date('Y-m-d');
$bdd_date = $listing['products_last_modified'];
# $bdd_date = $listing['products_date_added']; // autre date au choix
if($current_date <= $bdd_date) {
    // liste d'action
}

Maintenant il faut que ce champ de date soit chargé par la requête de listing, ce qui semble être le problème dans ce post.
Bon courage wink.gif


--------------------
Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues :
Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums.
Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin.

----------------------------- Quelques sites de référence ---------------------------
PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js
Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper
Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien)
Go to the top of the page
 
Bonbec
posté 27 May 2016, 12:29
Message #12


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Bonjour Gnidhal,

Effectivement c'est plus simple smile.gif
Par contre, dans le cas présent (ajout de la mention "nouveau" en overlay) je déconseille d'utiliser $listing['products_last_modified'] car en cas de modification de la fiche, pour corriger une faute d'orthographe deux mois après par exemple, cela replacera la mention "nouveau" alors que ce n'est plus le cas.
Il vaut mieux, à mon avis, utiliser $bdd_date = $listing['products_date_added'].


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 
aurelou
posté 30 May 2016, 13:59
Message #13


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Bonjour Bonbec et Gnidhal,

Merci beaucoup pour vos réponses, comme d'habitude je suis un peu lente car je n'ai pas encore réessayé mais dès que je m'occupe de ça je vous donne des nouvelles.

Merci beaucoup beaucoup.


--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
aurelou
posté 2 Jun 2016, 14:54
Message #14


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 131
Inscrit : 9-April 10
Membre no 27422



Bonjour,

Merci encore Bonbec et Gnidhal, me revoilà avec des nouvelles.

J'ai ajouté p.products_date_added dans chaque $listing_sql = de l'index mais ça n'a pas changé, toujours rien ne s'affiche wacko.gif

J'ai également testé le codage de Gnidhal mais c'est pareil.

Il semblerait donc que le champs de date ne soit pas chargé par la requête de listing ? Comment y remédier ?

Je précise que c'est pour mon site MS2.2, et je ne sais pas si c'est important mais je précise aussi que j'ai la contribution pour classer la liste des produits en colonnes et que donc mon fichier product_listing.php est en fait un fichier modifié nommé product_listing_col.php.

Merci encore smile.gif




--------------------
Oscommerce 2.3.4 BS
Go to the top of the page
 
Bonbec
posté 30 Jun 2016, 10:02
Message #15


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1543
Inscrit : 30-May 06
Lieu : Vichy (03)
Membre no 10583



Re,

Je sais bien que tu es à fond dans la 2.3.4BS, mais tu as avancé avec ce soucis ?

Tu as regardé dans ta BDD si le champ products_date_added contenait bien quelque chose ?

Si il y a bien quelque chose, alors le problème est ailleurs.
Mon petit code de test, tu le places où ?

Sinon pour voir ce que contient $listing, tu peux mettre ceci provisoirement :
Code
echo '<pre>';
print_r($listing);
echo '</pre>';

après les lignes dans ton fichier product_listing_col.php (vers la ligne 77 chez moi) :
Code
    $listing_query = tep_db_query($listing_split->sql_query);
    while ($listing = tep_db_fetch_array($listing_query)) {


Ce message a été modifié par Bonbec - 30 Jun 2016, 10:04.


--------------------
Config 1 en live : Osc 2.2 très fortement modifié ... UTF-8 et Php 5.4.
Contribs installées : down_for_maintenance_v 2.3 | Estimated Shipping v1.5 | imprint_1_3_5 | low_stock_report_v2.04 | visible_countries_1.2b | Products Tabs | shoppingCart_cleanup_v1.01.0 | + trop de bidouilles persos pas très OsCommerce (erreurs de jeunesse)
Config 2 en local avec UwAmp : Osc Phoenix
Go to the top of the page
 

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 : 28th March 2024 - 22:31
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)