Aide - Recherche - Membres - Calendrier
Version complète : récupérer la variable shipping_method pour l'afficher
Forum osCommerce-fr > Les Bases d'OsCommerce MS2 > Fonctionnement
doud95
Bonjour à tous

je galère dans la bdd pour trouver la variable du mode de transport

je voudrai l'afficher sur un bon de commade à imprimer

merci
doud95
J'ai recherché dans les post un sujet pour m'aider mais rien de nouveau

la piste base donnée en direction de order total ou autre ne donne rien

la piste ot_shipping non plu

quun à une idée



/httpdocs/catalog/includes/classes/order.php

j'ai la ligne

CODE

'shipping_method' => ((substr($shipping_method['title'], -1) == ':') ? substr(strip_tags($shipping_method['title']), 0, -1) : strip_tags($shipping_method['title'])));


y a t'il qu'elqe chose à faire ici
xaglo
en effet, la méthode de livraison est tout simplement incluse dans la class order. Il suffit donc de l'appeler au début de ton script si ce n'est déjà fait
CODE
  require(DIR_WS_CLASSES . 'order.php');
  $order = new order('order_id'); // remplacer order_id par ce que tu veux

tu l'auras alors disponible dans la variable $order->info['shipping_method']

doud95
quel est le script à mettre en début de code stp


CODE

// load the selected shipping module
  require(DIR_WS_CLASSES . 'shipping.php');
  $shipping_modules = new shipping($shipping);


c celui la??

dsl la question n'est pas bonne

j'ai résolu le pb avec ce que tu m'a dit

merci pour tou
xaglo
non, celui que je te donnais, en remplaçant 'orders_id' par ta variable de l'id de la commande que tu veux traiter. Par exemple, si tu utilises order_id que tu passes en méthode GET dans ton script,
CODE
  require(DIR_WS_CLASSES . 'order.php');
  $order = new order($HTTP_GET_VARS['order_id']);
devrait fonctionner. C'est comme ça que fonctionne account_history_info.php par exemple
doud95
suite du problème

je n'arrive toujours pas à l'afficher malgré les ajouts de code


je mets le code en post

evil.gif

CODE
[edit code supprimé pour alléger la lecture du sujet et la base de donnée des forums]




la variable que je voudrai afficher c'est la methode de livraison choisi par le client lors de la commande

je pense qu'ell s'apelle shipping_method mais je me trompe peut etre
doud95
j'ai vérifier sur account_history_info.php la variable ne s'affiche pas non plus

la méthode de livraison n'est pas mentionné sur le compte rendu de commande

seulement l'adresse apparait.
xaglo
enleve ta ligne 37
CITATION
$order = new order('shipping_method'); // remplacer order_id par ce que tu veux


et tes lignes 90-100 devraient fonctionner
CITATION
<?php
if (tep_not_null($order->info['shipping_method'])) {
?>
<tr>
<td class="main">
</tr>
<tr>
<td class="main">info['shipping_method']; ?>
</tr>
<?php
}
?>


Pour vérifier que ton appel à la classe order fonctionne ou comprendre pourquoi il ne fonctionnerait pas, tu peux vérifier
1- que ta variable $oID n'est pas vide en ajoutant un echo sur cette variable après la ligne 19
CODE
  $oID = tep_db_prepare_input($HTTP_GET_VARS['oID']);
echo '$oID = ' . $oID;


2- le contenu de ton objet $order en ajoutant un print_r après la ligne 36
CODE
  require(DIR_WS_CLASSES . 'order.php');
  $order = new order($oID);
  print_r($order);
Tu verras comme ça le contenu du tableau $order



doud95
après avoir fais les modif j'obtien ca:

$oID = 32order Object ( [info] => Array ( [currency] => EUR [currency_value] => 1.000000 [payment_method] => Paiement par Virement Bancaire [cc_type] => [cc_owner] => [cc_number] => [cc_expires] => [date_purchased] => 2006-05-29 23:59:35 [orders_status] => Commande en attente [last_modified] => [total] => 390.00EUR [shipping_method] => [tax_groups] => Array ( [19.6000] => 1 ) ) [totals] => Array ( [0] => Array ( [title] => TVA 19.6 %: [text] => 63.91EUR ) [1] => Array ( [title] => Total: [text] => 390.00EUR ) ) [products] => Array ( [0] => Array ( [qty] => 1 [id] => 45 [name] => Altar cabinet [model] => OM010 [tax] => 19.6000 [price] => 326.0870 [final_price] => 326.0870 ) ) [customer] => Array ( [id] => 2 [name] => olivier duchon [company] => testeur [street_address] => 53 rue de stalingrad [suburb] => [city] => ermont [postcode] => 95120 [state] => [country] => France [format_id] => 1 [telephone] => 0683474235 [email_address] => olivierduchon@free.fr ) [delivery] => Array ( [name] => olivier duchon [company] => testeur [street_address] => 53 rue de stalingrad [suburb] => [city] => ermont [postcode] => 95120 [state] => [country] => France [format_id] => 1 ) [content_type] => [billing] => Array ( [name] => olivier duchon [company] => testeur [street_address] => 53 rue de stalingrad [suburb] => [city] => ermont [postcode] => 95120 [state] => [country] => France [format_id] => 1 ) )
Fatal error: Cannot redeclare class order in /home/httpd/vhosts/antikdechine.com/httpdocs/catalog/includes/classes/order.php on line 13

je pense que ce n'est pas normal de ne pas retrouver le mode de livraison dans la liste de la table order

ou ce trouve le problème

j'ai bien ajouter un champs dans ma table (shipping_method), on le voit bien dans la liste mais aucune info à l'intérieur comment y stocker quelque chose

ou bien il y a autre chose à faire

merci de ton aide

xaglo
donc ton défaut ne vient pas de la méthode pour récupérer l'info mais tout simplement que cette info est vide.

Tu dois avoir le problème lorsque tu passe une commande. Ce renseignement n'est pas inscrit en base de donnée. Le défaut provient donc du process de commande, vérifie si tu as bien cette info dans checkout_confirmation.php lors du process de commande.


PS. Message déplacé, c'est un problème de fonctionnement, pas de développement, print_order n'est pas en cause
doud95
si si j'ai la méthode de livraison qui s'affiche bien dans le checkout_confirmation

c bien la l'incompréhension

je vien de regarder le contenu de plusieur table et toujours pas de trace de shipping method

doud95
est-ce que les variable sont remise à zéro que les checkout_succès est affiché?

comment mettre la variable shipping_method en mémoire et l'afficher après avoir confirmer une commande et pour l'imprimer avec la contribution print order receipt.
xaglo
non, shipping_method est normallement inscrite en base dans la table orders_total par le checkout_process avant d'être supprimée de la session
doud95
alors je vais être plus terre à terre.

est ce que sur la ms2 de base la méthode de livraison est affichée sur la page account history info

parce que chez moi elle n'apparait pas.




est'ce qu'il y a quelque chose à faire?
doud95
après pas mal de recherche sur le net et sur le forum

beaucoup de personne parle d'une variable shipping method qui se trouve dans la table order

mais pourquoi je ne l'ai pas

comment faire pour ajouter l'ecriture d'une variable dans une table?

quelqu'un pourrait me guider pour ajouter la mehode de livraison choisi par le client comme une info qui soit attacher à sa commande comme peut l'étre la méthode de paiement?
xaglo
CITATION(xaglo @ 30 May 2006, 01:20) [snapback]177101[/snapback]
non, shipping_method est normallement inscrite en base dans la table orders_total par le checkout_process avant d'être supprimée de la session


désolé, je n'ai pas la dispo pour t'aider plus dans l'instant blush.gif
xaglo
CITATION(doud95 @ 30 May 2006, 02:00) [snapback]177103[/snapback]
est ce que sur la ms2 de base la méthode de livraison est affichée sur la page account history info
Oui, elle est récupérée de la même façon que décrit ci dessus, via la class order

CITATION(doud95 @ 30 May 2006, 10:55) [snapback]177126[/snapback]
beaucoup de personne parle d'une variable shipping method qui se trouve dans la table order
Ce que tu appelles la 'variable shipping_method' est en fait stockée dans la table orders_total, dans la colonne 'title' où la "class' est ot_shipping. Regarde dans ta base tu comprendras mieux
CITATION(doud95 @ 30 May 2006, 10:55) [snapback]177126[/snapback]
quelqu'un pourrait me guider pour ajouter la mehode de livraison choisi par le client comme une info qui soit attacher à sa commande comme peut l'étre la méthode de paiement?
Je te répète, c'est le fonctionnement normal d'OsC, cette valeur est stockée en session le temps de la commande, puis stockée en base comme décrit ci-dessus dès que la commande est finie.

regarde dans la class order.php tu verras
CODE
      $shipping_method_query = tep_db_query("select title from " . TABLE_ORDERS_TOTAL . " where orders_id = '" . (int)$order_id . "' and class = 'ot_shipping'");
      $shipping_method = tep_db_fetch_array($shipping_method_query);
C'est comme ça que la class order récupère la valeur.

Si cette valeur n'est pas gardée dans la table orders_total, le défaut vient probablement de checkout_process qui devrait faire le boulôt (à vérifier, je ne suis pas sûr).

Bon code
doud95
J'ai bien pris en note tout ce que tu m'a dit

le problème reste présent.

où dois-je vérifier si la fonction de mémorisation de la variable est bien présente?

en tout cas dans la bdd dans la table order_total il n'ya pas de class ot_shipping et encore moins de mode de transport qui apparaissent.

merci de ton aide
xaglo
avant de fouiller plus, essaye 2 choses pour vérifier d'ù le soucis pourrait provenir

1- utilise un module de livraison d'origine (flat par exemple)… bien que tu disais que la méthode de livraison était présente dans le checkout_confirmation?? dans ce cas le module de livraison ne devrait pas être en cause huh.gif

2- essaye de mettre un chechout_process.php brut de décoffrage, extrait du zip d'origine, voir si le défaut ne provient pas du tien
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.