stephan Posted September 30, 2009 Share Posted September 30, 2009 Bonjour,Je souhaite passer les avoirs en string, du à une numérotation personnalisée.Tout se passe bien jusqu'a cette classe. $orderSlip = new OrderSlip($_GET['id_order_slip']); Habituellement, id_order_slip est un entier, et moi je lui envoie un string.$orderSlip = new OrderSlip("09F070345");En retour j'obtient un entier$orderSlip->id est égale à 9 ,id étant id_order_slip, normalement !Je n'ai pas réussit à isolé dans la classe le intval(xxxx) ou la fonction qui me renvoie le 9.Si une âme charitable veut bien m'aider ;-P Cordialement. Link to comment Share on other sites More sharing options...
stephan Posted September 30, 2009 Author Share Posted September 30, 2009 Ici le code de la classe originale class OrderSlip extends ObjectModel { /** @var integer */ public $id; /** @var integer */ public $id_customer; /** @var integer */ public $id_order; /** @var integer */ public $shipping_cost; /** @var string Object creation date */ public $date_add; /** @var string Object last modification date */ public $date_upd; protected $tables = array ('order_slip'); protected $fieldsRequired = array ('id_customer', 'id_order'); protected $fieldsValidate = array('id_customer' => 'isUnsignedId', 'id_order' => 'isUnsignedId'); protected $table = 'order_slip'; protected $identifier = 'id_order_slip'; public function getFields() { parent::validateFields(); $fields['id_customer'] = intval($this->id_customer); $fields['id_order'] = intval($this->id_order); $fields['shipping_cost'] = intval($this->shipping_cost); $fields['date_add'] = pSQL($this->date_add); $fields['date_upd'] = pSQL($this->date_upd); return $fields; } public function addSlipDetail($orderDetailList, $productQtyList) { foreach ($orderDetailList as $key => $orderDetail) if ($qty = intval($productQtyList[$key])) Db::getInstance()->AutoExecute(_DB_PREFIX_.'order_slip_detail', array('id_order_slip' => intval($this->id), 'id_order_detail' => intval($orderDetail), 'product_quantity' => $qty), 'INSERT'); } static public function getOrdersSlip($customer_id, $order_id = false) { global $cookie; return Db::getInstance()->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'order_slip` WHERE `id_customer` = '.intval($customer_id). ($order_id ? ' AND `id_order` = '.intval($order_id) : '').' ORDER BY `date_add` DESC'); } static public function getOrdersSlipDetail($id_order_slip = true, $id_order_detail = false) { return Db::getInstance()->ExecuteS( ($id_order_detail ? 'SELECT sum(`product_quantity`) as `total`' : 'SELECT *'). 'FROM `'._DB_PREFIX_.'order_slip_detail`' .($id_order_slip ? ' WHERE `id_order_slip` = '.intval($id_order_slip) : '') .($id_order_detail ? ' WHERE `id_order_detail` = '.intval($id_order_detail) : '')); } static public function getOrdersSlipProducts($orderSlipId, $order) { $productsRet = self::getOrdersSlipDetail($orderSlipId); $products = $order->getProductsDetail(); $tmp = array(); foreach ($productsRet as $slip_detail) $tmp[$slip_detail['id_order_detail']] = $slip_detail['product_quantity']; $resTab = array(); foreach ($products as $key => $product) if (isset($tmp[$product['id_order_detail']])) { $resTab[$key] = $product; $resTab[$key]['product_quantity'] = $tmp[$product['id_order_detail']];; } return $order->getProducts($resTab); } static public function createOrderSlip($order, $productList, $qtyList, $shipping_cost = false) { // create orderSlip $orderSlip = new OrderSlip(); $orderSlip->id_customer = intval($order->id_customer); $orderSlip->id_order = intval($order->id); $orderSlip->shipping_cost = intval($shipping_cost); if (!$orderSlip->add()) return false; // add details $orderSlip->addSlipDetail($productList, $qtyList); return true; } } Link to comment Share on other sites More sharing options...
ningu Posted September 30, 2009 Share Posted September 30, 2009 L'ID est l'identifiant même de l'entrée dans la base de donnée.Il est géré dans la classe ObjectModel.php mais utilisé à pas mal d'endroits comme par exemple Validate::isLoadedObject()La modif n'est, à mon avis, pas simple ...A voir si créer un nouveau champ ne serait pas plus simple Link to comment Share on other sites More sharing options...
stephan Posted October 1, 2009 Author Share Posted October 1, 2009 La modif n'est, à mon avis, pas simple ...A voir si créer un nouveau champ ne serait pas plus simple Merci pour ta réponse ningu.Effectivement, la solution se trouve dans la classe ObjectModel.phpAprès plusieurs "petites" tentatives , j'en arrive à la même conclusion que toi : "C'est pas gagné !" ;-P Mais ... l'espoir fait vivre...Si j'ai bien compris, ton autre solution consisterait d'ajouter un champs dans la table qui servirai de masque d'affichage...Je crois comprendre ou cela m'emmène aussi ....Je vais tenter de faire mon sauvage et de taper dans la classe .... la solution est finalement simple :Faire un teste sue le champ ID, si c'est de l'ascii ou du numérique ... et de lancer les requêtes en fonction du résultat ....Si quelqu'un s'y est déjà frotté merci, un coup de main serait le bienvenue ... ;-) Cordialement.PS: la requête me retourne le bon numéro ... ça avance ... Link to comment Share on other sites More sharing options...
stephan Posted October 1, 2009 Author Share Posted October 1, 2009 Encore merci.Je tiens le fichier à dispo pour ceux que ça interesse ...Cordialement. ObjectModel.php Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now