Ver Mensaje Individual
  #17 (permalink)  
Antiguo 18/03/2015, 05:29
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Carrito compras Consultar 2 tablas igual id

Mira, ya se te han dado respuestas adecuadas al caso que se pueden resumir en que:
- Tienes un modelo de datos inadecuado para lo que quieres desarrollar. No he sido el único que te lo ha dicho, así que deberías meditar al respecto.
- Se puede crear una única función re-usable que permita leer diferentes tablas en diferentes llamadas. Incluso se te aportó código de como cambiar de tabla y cómo crear la función misma. Si no puedes adaptar la lógica a tus necesidades (considerando que la lógica explicada es universal), ya es un problema de tu capacitación, no de nuestras soluciones, y allí no es fácil que podamos ayudarte.
- Nosotros no nos ponemos a debuggear código ajeno. No sólo porque no es nuestro, y no nos vamos a poner a crear bases con datos para hacer las pruebas necesarias, sino que fundamentalmente el debuggeo es parte necesaria de tu aprendizaje, por lo que eres tu el que debe encontrar los errores, así como aprender a implementar las soluciones. La meta del foro es ayudarte guiándote, no hacer análisis funcional y escribiendo el código competo por ti. Ya tenemos nuestros propios proyectos y problemas de desarrollo para solucionar. Te imaginarás que FDW es nuestra afición, no nuestro trabajo.

Cita:
No soy alguien capaz de resolver un caso similar, pues soy Consultor Creativo Profesional y de Marketing Online, se de programación y algo de base de datos, me defiendo muy bien, pero no soy un experto en el tema de tiendas, registros, php o database y si inicio a modificar todo y a preguntar todo para resolver cada duda aquí es muy claro que no terminaríamos nunca.
Eso es interesante, porque con tal rimbombante título también nos estás aclarando que te has metido en un área que no es de tu competencia profesional, y ahora el problema es que te encuentras con temas de la capa de negocio para la que no estás preparado a resolver.
No eres el primero que viene con este tipo de complicaciones, y en general este tipo de casos termina siempre con soluciones como las que ya te indicaron, o bien teniendo que modificar todo el codigo para hacerlo bien...
Pero eso es una decisión que deberás tomar.
Puedes ponernos sólo el segmento de codigo relevante de las llamadas a la base (casi todo lo que posteas es superfluo), y vemos como hacer para que entiendas que lo que se te sugirió es muy sencillo de implementar. A mi entender, te estás complicando la vida no solo en el diseño del sistema, sino porque estás haciend una codificación desordenada, un "código chorizo" como decimos acá, que será imposible de mantener y depurar.

Yo, de inicio, te sugiero que comiences separando de ese código chorizo todas las funciones que se pueden integrar como reusables (caso lectura de tablas) en un script PHP independiente, y que en ese caso éste reciba parámetros.
Algo como:
Código PHP:
<?php

function openDB($b$p$u) {
    
$db mysql_connect($b$u$p);
    
mysql_select_db($b$db);
    if (
mysql_errno () == 0) {
        return 
TRUE;
    } else {
        return 
false;
    }
}

function 
setLog($acc$log$unm$db$tb) {
    
$qry "INSERT IGNORE INTO `$db`.`$tb`(`campo1`,\n";
    
$qry .= "    `campo2`,\n";
    
$qry .= "    `timeline`)\n";
    
$qry .= "VALUES('" $unm "',\n";
    
$qry .= "    '" $log "',\n";
    
$qry .= "    now());";
    
// -----------------------------------------------------------------------------------
    
$result $db->query($qry);
    
// -----------------------------------------------------------------------------------
    
if ($result) {
        return 
TRUE;
    } else {
        return 
FALSE;
    }
}

function 
get_tree($id) {
    
// buscar las categorías
    
$result mysql_query("SELECT * FROM categorias WHERE parent_id='$id'");
    
// Declarar una variable numerica
    
if ($result) {
        if (!isset(
$level)) {
            
$level 0;
        }
        
// Por cada registro obtenido
        
if (mysql_num_rows($result) > 0) {
            while (
$row mysql_fetch_array($result)) {
                
// DEvolvio registros, tiene hijos y los busca
                
$level $level get_tree($row['id']);
            }
            return 
$level;
        } else
        
// No devolvio registros. {
            
return 0;
    }
    else
    
// Generó error. Sale con cero (esto puede corregirse para detectar errores de MySQL {
        
return 0;
}

?>
Con cosas asi puedes llamar a la tabla siempre que le pases los datos adecuados (¡Cuidado, el código que te acabo de poner no te servirá porque tiene inconsistencias, es sólo para ejemplo!).
¿Y de donde saca el nombre de la tabla?
Bueno, lo puedes harcodear en el mismo formulario, poniendolo en un hidden. Es una solución tosca, pero es de manual...
AL menos de manual de principiantes.

Lo que si te sugiero también es que reconsideres recodificar todo, porque lo vas a tener que hacer de todos modos tarde o temprano. Los parches que puedas aplicar a algo que está mal definido desde el inicio, terminan en verdaderos desastres de performance.
Pero, como ya dije, es TU decisión.
Nosotros ya te expresamos lo que te conviene de acuerdo a nuestra experiencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)