Una consulta cruzada es una consulta MySQL que toma datos de varias tablas que comparten campos. Por ejemplo, la tabla ps_product contiene un campo id_product, al igual que la tabla ps_product_lang.

En la siguientes consultas intervienen varias tablas de Prestashop. Hemos tenido que hacer varias consultas parecidas para nuestros módulos personalizados de la versión 1.4, y nos encontramos actualizando estos módulos a la nueva versión (1.6), con lo que hemos de revisar estas consultas.

Para leer sobre más formas de combinar las tablas (INNER JOIN, RIGHT JOIN): https://es.wikipedia.org/wiki/Join

Os invito a probar estas consultas en vuestro PHPMyAdmin.

SELECT DISTINCT ppl.id_product AS IDPRODUCT,
ppl.name AS NAME,
pp.active AS ACTIVE,
pp.reference AS REFERENCIA,

pcl.name AS NOMBRECAT

FROM ps_product_lang ppl

LEFT JOIN ps_product pp ON ppl.id_product=pp.id_product
LEFT JOIN ps_category_lang pcl ON pp.id_category_default=pcl.id_category

WHERE ppl.id_lang=3 AND pcl.id_lang=3
ORDER BY pp.reference ASC

**

SELECT DISTINCT pal.name AS PALNAME,
pal.id_attribute AS PALIDATTRIBUTE,
ppac.id_product_attribute AS PPACIDPRODATTRIBUTE,
ppa.id_product AS PPAIDPROD

FROM ps_attribute_lang pal

LEFT JOIN ps_product_attribute_combination ppac ON pal.id_attribute=ppac.id_attribute
LEFT JOIN ps_product_attribute ppa ON ppac.id_product_attribute=ppa.id_product_attribute

WHERE pal.id_lang=1
ORDER BY ppa.id_product ASC

**

SELECT DISTINCT pal.name AS PALNAME,
pal.id_attribute AS PALIDATTRIBUTE,
ppac.id_product_attribute AS PPACIDPRODATTRIBUTE,
ppa.id_product AS PPAIDPROD,
pa.id_attribute_group AS PAIDATTRIBGROUP

FROM ps_attribute_lang pal

LEFT JOIN ps_product_attribute_combination ppac ON pal.id_attribute=ppac.id_attribute 
LEFT JOIN ps_product_attribute ppa ON ppac.id_product_attribute=ppa.id_product_attribute
LEFT JOIN ps_attribute pa ON pal.id_attribute=pa.id_attribute

WHERE pal.id_lang=1 AND pag.id_group=4
ORDER BY ppa.id_product ASC

Nada como esta clase: HTML2PDF.

http://html2pdf.fr/es

Copio en esta entrada el ejemplo más básico que los creadores de esta clase publican en su página:

<?php
$content = »
<page>
<h1>Exemple d’utilisation</h1>
<br>
Ceci est un <b>exemple d’utilisation</b>
de <a href=’http://html2pdf.fr/’>HTML2PDF</a>.<br>
</page>»;

require_once(dirname(__FILE__).’/html2pdf/html2pdf.class.php’);
$html2pdf = new HTML2PDF(‘P’,’A4′,’fr’);
$html2pdf->WriteHTML($content);
$html2pdf->Output(‘exemple.pdf’);
?>

FacetoFace es una página web que muestra las imágenes de un directorio, en formato HTML y con estilo CSS, mediante reglas determinadas por programación PHP. En un lado se incluye un formulario que permite modificar el aspecto y el contenido de la tabla.

Visita FacetoFace <<

Juegos posibles

El juego se crea con reglas predeterminadas de repetición: ninguna repetición, una imagen dos veces, dos imágenes tres veces… Se han implementado varias opciones, aunque lo ideal sería mostrar las opciones que permita cada tablero según su tamaño.

Según el tipo de juego seleccionado se generan tablas de características por defecto o especificadas por el formulario. Las imágenes están contenidas en enlaces con las futuras variables que serán los atributos del objeto
Los enlaces de clase «correcto» serán los correspondientes a imágenes repetidas, los demás tendrán la clase «fallo» (cualquier imagen no repetida). Al fallar, el juego deberá comportarse así:

1- Se resetea y empieza desde el principio, o bien
2- Se resetea n pasos hacia atrás, o
3- No sufre cambios

Las vidas, los puntos, las monedas

Podría establecerse un sistema para quitar o poner vidas, puntos y monedas, valores iniciales y maneras de perder, y crearse un «mercado», o un sistema de mejora de habilidades, para cada jugador (otro objeto).

El Ranking


Los jugadores que acumulen puntos, niveles terminados y monedas entrarán automáticamente en una clasificación de jugadores.

MySQL:



ps_order_history es la tabla donde se guarda el historial de los pedidos. En concreto se guarda un registro por cada cambio de estado de los pedidos.
Hay una entrada por cada cambio que se haya producido en el estado de cada pedido, por lo que lo usual es que cada pedido tenga varias filas de esta tabla.Tendremos que introducir valores en la tabla.

id_order 
id_order_history – Último cambio de estado.
id_order_state – Estado del pedido.
id_employee – Empleado.
date_add  – Fecha actual.

De esta tabla nos interesa especialmente el campo id_order_state.
****
Todos los estados posibles de los pedidos están en la tabla ps_order_state. Sus campos:

id_order_history – el campo id de esta tabla
id_employee – (id del usuario logueado en el Back Office)
id_order
id_order_state (valor de un campo de la tabla anterior)

*****

La siguiente consulta devolvería una lista de los últimos identificadores del estado de cada pedido.

SELECT id_order_state FROM ps_order_history ORDER BY date_add DESC LIMIT 1″;


PHP:

Con PHP ampliaremos la consulta con una cláusula WHERE, quedando la consulta así:

SELECT id_order_state FROM ps_order_history WHERE id_order=».$pedido.» ORDER BY date_add DESC LIMIT 1


Donde $pedido será un elemento de un array a recorrer con un bucle PHP (un bucle for, por ejemplo).

El navegador muestra una página en blanco cuando intentamos visitar tanto el Back-Office como el Front-Office, justo después de instalar.

Añadimos, en el archivo configconfig.inc.php, después de las instrucciones:

/* Improve PHP configuration to prevent issues */
ini_set(‘upload_max_filesize’, ‘100M’);
ini_set(‘default_charset’, ‘utf-8’);
ini_set(‘magic_quotes_runtime’, 0);

La siguiente línea, que nos muestra los errores de PHP:

ini_set(‘display_errors’, ‘on’);

Después de hacer esto, el navegador nos muestra:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 24576 bytes) 
in C:AppServwwwprestashop classesCartRule.php on line 142

Con lo que debemos añadir a dicho archivo:

ini_set(‘memory_limit’,’-1′);