Tablas que se anulan en database_tables.php

Tengo una tienda, hecha en oscommerce, en la que quiero mostrar las categorías de productos insertadas en su propia BDs y en una adicional.
Modifico todo desde database_tables.php y anda perfecto, pero solo puedo mostrar una tabla a la vez.
Ejemplo:
Cuando llamo a la tabla de la base de datos local para mostrar las categorías seria así:
Código:
define('TABLE_CATEGORIES', 'categories');
define('TABLE_CATEGORIES_DESCRIPTION', 'categories_description');
Y cuando quiero mostrar las categorías de la otra base de datos (llamada "users") seria así:
Código:
define('TABLE_CATEGORIES', 'users.categories');
define('TABLE_CATEGORIES_DESCRIPTION', 'users.categories_description');
Hasta ahí no hay problema, funciona perfecto. El tema es que solo puedo mostrar una a la vez.
Si pongo
Código:
define('TABLE_CATEGORIES', 'categories');
define('TABLE_CATEGORIES', 'users.categories');
La primera anula a la segunda. Lo mismo ocurre si altero el orden y pongo a "users" arriba, solo se muestra el contenido de users.
¿Existe alguna forma de que pueda llamar a la dos tablas al mismo tiempo sin que se anulen y se muestren las dos al mismo tiempo?
Ejemplo:
Código:
define('TABLE_CATEGORIES', 'categories' 'users.categories');
(En esta forma ya lo probé y no funciono.) La verdad no se nada de programación y todo lo que estoy haciendo lo hago tanteando.
Te escribí en un foro y me respondiste que lo podía hacer de esta forma:
----------------------------------
Código:
define('TABLE_CATEGORIES', 'categories');
define('TABLE_CATEGORIES_DESCRIPTION', 'categories_description');
define('TABLE_USERS_CATEGORIES', 'users.categories');
define('TABLE_USERS_CATEGORIES_DESCRIPTION', 'users.categories_description');
Y luego en el bloque o donde lo llames, construyes la isntruccion correcta añadiendo la nueva tabala y los nuevos campos que necesites con un prefijo para que no haya errores.
Código:
select uc.xxxxxx FROM ' . TABLE_USERS_CATEGORIES . ' uc
--------------------------------
La verdad no me quedo muy claro por eso te molesto acá para preguntarte lo siguiente.
Código:
define('TABLE_CATEGORIES', 'categories');
define('TABLE_CATEGORIES_DESCRIPTION', 'categories_description');
define('TABLE_USERS_CATEGORIES', 'users.categories');
define('TABLE_USERS_CATEGORIES_DESCRIPTION', 'users.categories_description');
...iría en database_tables.php?
y...
Código:
select uc.xxxxxx FROM ' . TABLE_USERS_CATEGORIES . ' uc
...iria en /includes/boxes/categories.php? .
(En caso de querer que las tablas que este llamando en database_tables.php aparezca an la columna izquierda dentro de las categorías, ¿no?)
¿En qué parte iría?
Y otra pregunta más. ¿Qué quiere decir uc. Xxxxxx FROM y el uc del final?
Seguramente es una pregunta estúpida, pero no conozco de programación y quisiera saber que es para poder aplicarlo com más bases de datos porque por ahora solo estoy probando 2, pero seguramente lo haga con más. Aparte de querer resolver este problema estoy interesado en aprender, pero para esto no tengo mucho tiempo para entregarlo.
Estoy leyendo un cursos de PHP y MySQL, pero no estoy lo suficientemente avanzado y, como te dije, no tengo mucho tiempo.
Espero que puedas ayudarme ya que esto lo necesito para un trabajo y imperante que lo termine en los próximos días.
Si podes explicármelo paso por paso como una especie de guía te lo voy a agradecer muchísimo.
Es la primera vez que uso oscommerce y se me mezcla todo bastante.

1 respuesta

Respuesta
1
El uc... son las abreviaturas de user categories... y luego se usa como si fuera un objeto porque le has llamado uc.
FROM tabla uc
Lueog la podemos usar delante de cada campo, para diferenciarlas del resto.
Uc. Campo1 uc.campo2 ... etc
Si no sabes programar veo difícil que llegues a nada. Primero aprende un poco de las instrucciones básicas y luego te podré ayudar mejor. Es como quien te quiere enseñar a caminar... pero no tienes piernas.
Tienes razón, tendría que aprender las instrucciones básicas, pero necesito hacer esa modificación para poder entregar el trabajo y no dispongo de mucho tiempo.
De todas formas la aclaración que me diste ayer uc.campo1 uc.campo2 ... etc me sirvió para darme cuenta intuitivamente de como puede ir el tema más o menos.
Ya hice algunas modificaciones, pero no funciona por un error en una columna.
Prometo aprender PHP, pero necesitaría de la ayuda de un experto como vos, por el momento (si es posible).
En el archivo /includes/boxes/categories.php
figura esto:
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c,
" . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
y yo lo modifique asi :
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c,
" . TABLE_CATEGORIES_DESCRIPTION . " cd, " . TABLE_USERS_CATEGORIES . " uc where c.parent_id = '0' and c.categories_id =
cd.categories_id and c.categories_id = uc.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
Mas abajo dice:
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "' and c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
Y yo lo modifique asi:
$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c,
" . TABLE_CATEGORIES_DESCRIPTION . " cd, " . TABLE_USERS_CATEGORIES . " uc where c.parent_id = '" . (int)$value . "' and
c.categories_id = cd.categories_id and c.categories_id = uc.categories_id and cd.language_id='" . (int)$languages_id ."' order by sort_order, cd.categories_name");
Pero el tema es que en la página me dice lo siguiente:
1052 - La columna: 'sort_order' en order clause es ambigua
select c.categories_id, cd.categories_name, c.parent_id from categories c, categories_description cd, users.categories uc where c.parent_id = '0' and c.categories_id = cd.categories_id and c.categories_id = uc.categories_id and cd.language_id='3' order by sort_order, cd.categories_name
[TEP STOP]
¿Qué puede ser?, ¿O qué cambios debo hacer?
No se si este código que te pase es suficiente, cualquier cosa avisame que te lo paso completo.
Saludos ;)
order by sort_order ...
¿El campo pertenece a cual de las 3 tablas? Has deponerle el prefijo de una de las tres si se repite, ya que hiciste una copia. Ponle order by 1, o order by uc.sort_order

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas