Esto es realmente una tontería, pero a la vez es una de las diferencias de otros lenguajes.Y tal vez os ayude.
Primero recuerda que un array en programación es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo.
Definido el elemento, pongamosnos en posición. Imaginaos que tenemos dos almacenes, y los productos de marca 'manzana' están solo en el segundo almacén de manera exclusiva y por tanto en el pedido tenemos que distinguir esos productos para enviar la petición al segundo almacén.
Hemos activado un hook que nos avisa cuando un pedido ha sido pagado, dicho hook nos devuelve el número de pedido($id_order).
Los del almacén, funcionan por el código del fabricante(referencia):
/*Te devuelve los códigos de referencia del fabricante del producto*/
$referenciaProducto = "SELECT pp.reference
FROM ps_product pp, ps_order_detail pod
WHERE pod.id_order=$id_order
AND pp.id_product=pod.product_id ";
$referencia = Db::getInstance()->query($referenciaProducto);
Y ahora llega el momento de comprobar producto por producto, para ello utilizamos la función fetch().
while ($row = $referencia->fetch())
{
/*Para saber que se esta guardando el $row*/
print_r($row)
}
die();
resultado:
Vemos que recoge mucha información de cada producto. Y nosotros tenemos que definir, la información exacta que queremos. Hagamos una segunda prueba.
while ($row = $referencia->fetch())
{
/*Para saber que se esta guardando el reference*/
print_r($row["reference"]);
}
die();
resultado:
Con esto ya podemos trabajar.
Intentemoslo:
while ($row = $referencia->fetch())
{
/*te dice si es o no un producto Manzana*/
$reference=$row["reference"];
$esManzana = "SELECT PP.reference
FROM ps_product_lang PPL, ps_product PP
WHERE PP.reference = $reference
AND PPL.name like '% manzana %'
AND PPL.id_product=PP.id_product";
$lmanzana = Db::getInstance()->query($esManzana);
if ($manzana != false)
{
return $manzana;
}
}
resultado:
¡Ups! Bueno, no pasa nada, lo forzaremos a leerlo completo con comillas simples
Y así nos quedaría el código.
/*Te devuelve los códigos de referencia del fabricante del producto*/
$referenciaProducto = "SELECT pp.reference
FROM ps_product pp, ps_order_detail pod
WHERE pod.id_order=$id_order
AND pp.id_product=pod.product_id ";
$referencia = Db::getInstance()->query($referenciaProducto);
while ($row = $referencia->fetch())
{
/*te dice si es o no un producto manzana*/
$reference=$row["reference"];
$esManzana = "SELECT PP.reference
FROM ps_product_lang PPL, ps_product PP
WHERE PP.reference = '$reference'
AND PPL.name like '% manzana %'
AND PPL.id_product=PP.id_product";
$manzana = Db::getInstance()->query($esManzana);
if ($manzana != false)
{
PrestaShopLogger::addlog('EsManzana', 1);
}
resultado:
Ya lo tenemos ;)
Antes de irme, en caso de un bucle foreach, sería así.
forecha ($row as $i)
{
$reference=$i["reference"];
}
0 comentarios:
Publicar un comentario