Foros del Web » Programando para Internet » PHP »

Carrito compras Consultar 2 tablas igual id

Estas en el tema de Carrito compras Consultar 2 tablas igual id en el foro de PHP en Foros del Web. Buenos días a todos, soy nuevo en el Foro, y estoy aquí por una gran inquietud a mi problema, disculpen pero iré directo al grano ...
  #1 (permalink)  
Antiguo 06/03/2015, 03:20
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Busqueda Carrito compras Consultar 2 tablas igual id

Buenos días a todos, soy nuevo en el Foro, y estoy aquí por una gran inquietud a mi problema, disculpen pero iré directo al grano sobre lo que necesito, desde ya muchas gracias a todos por su tiempo.

El problema es el siguiente,

Tengo una tienda online (venta de ropa), que contiene 2 hojas (2 categorías) una de ellas (la primera) de ropa llamada X1 y la otra (la segunda) de ropa llamada X2 y por supuesto la tienda con su respectivo carrito de compras único.

Al inicio de todo, sólo tenía 1 categoría llamada X1 y la tienda andaba perfectamente bien junto a su carrito de compras. Pero el problema nace al querer agregar una 2 categoría la llamada X2.

Cuando adjunto al carrito de compras algún producto de la 1 categoría llamada X1 se agrega perfectamente, pero al adjuntar también un producto de la 2 categoría llamada X2 el producto agregado simplemente no aparece.

Un dato importante es que en mi Base de Datos, ambas tablas (hojas de una y otra categoría) tienen dentro las mismas 'id' y mismos campos. Ambas tablas fueron duplicadas y simplemente renombradas como: Categoría X1 y Categoría X2 así de muy sencillo.

Únicamente deseo que en la hoja del carrito de compras único, aparezcan todos los productos que adjunto de una y otra categoría. Espero me puedan ayudar, les adjunto todo el código posible, he intentado ya con Google y no encuentro una solución. Gracias.

---CODIGO CARRITO DE COMPRAS INICIA EN LA PARTE SUPERIOR DE TODA LA HOJA PHP---El detalle resaltado es la tabla llamada Categoría X1 que se encuentra en la base de datos, como puedo agregar aquí la Categoría X2? Manteniendo todo el código restante---Cabe recordar que cada producto tiene las opciones de sumar cantidades y restarlas, así como también de eliminar productos del mismo carrito de compras---

<?php
session_start();
include './conexion.php';
if(isset($_SESSION['carrito'])){
if(isset($_GET['id'])){
$arreglo=$_SESSION['carrito'];
$encontro=false;
$numero=0;
for($i=0;$i<count($arreglo);$i++){
if($arreglo[$i]['Id']==$_GET['id']){
$encontro=true;
$numero=$i;
}
}
if($encontro==true){
$arreglo[$numero]['Cantidad']=$arreglo[$numero]['Cantidad']+1;
$_SESSION['carrito']=$arreglo;
}else{
$nombre="";
$precio=0;
$imagen="";
$re=mysql_query("select * from CATEGORIAX1 where id=".$_GET['id']);
while ($f=mysql_fetch_array($re)) {
$nombre=$f['nombre'];
$precio=$f['precio'];
$imagen=$f['imagen'];
}
$datosNuevos=array('Id'=>$_GET['id'],
'Nombre'=>$nombre,
'Precio'=>$precio,
'Imagen'=>$imagen,
'Cantidad'=>1);

array_push($arreglo, $datosNuevos);
$_SESSION['carrito']=$arreglo;

}
}




}else{
if(isset($_GET['id'])){
$nombre="";
$precio=0;
$imagen="";
$re=mysql_query("select * from CATEGORIAX1 where id=".$_GET['id']);
while ($f=mysql_fetch_array($re)) {
$nombre=$f['nombre'];
$precio=$f['precio'];
$imagen=$f['imagen'];
}
$arreglo[]=array('Id'=>$_GET['id'],
'Nombre'=>$nombre,
'Precio'=>$precio,
'Imagen'=>$imagen,
'Cantidad'=>1);
$_SESSION['carrito']=$arreglo;
}
}
?>

---EN MI HOJA PHP SE ENCUENTRA UN CÓDIGO DIV DONDE SE AGREGAN AUTOMÁTICAMENTE LOS PRODUCTOS EN EL CARRITO---El detalle resaltado es la carpeta donde se encuentran las fotos de los productos de la Categoría X1, Como puedo agregar aquí también la Categoría X2? Si duplico los DIV y simplemente cambio de Categoría, se duplican todos los productos adjuntos dando como resultado error---Cabe recordar que cada producto tiene las opciones de sumar cantidades y restarlas, así como también de eliminar productos del mismo carrito de compras---

<div class="producto">
<center>
<img src="./CATEGORIAX1/<?php echo $datos[$i]['Imagen'];?>" />
<p></p>
<span><?php echo $datos[$i]['Nombre'];?></span>
<p></p>
<span class="tituloweb">Precio $: <?php echo $datos[$i]['Precio'];?></span>
<p></p>
<span>Cantidad de Productos:
<input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"
data-precio="<?php echo $datos[$i]['Precio'];?>"
data-id="<?php echo $datos[$i]['Id'];?>"
class="cantidad" />
</span>
<p></p>
<span class="subtotal">Subtotal $: <?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span>
<p></p>
<a href="#" class="eliminar" data-id="<?php echo $datos[$i]['Id']?>">Eliminar</a>
</center>
<br />
</div>

---

Si necesitan algunos más detalles para resolver la inquietud pueden preguntarme sin problemas, espero de ante mano me puedan ayudar ya que tengo algunos días con ésto y después de intentar algunas cosas, no encuentro una solución adecuada a lo que necesito.

Muchas gracias nuevamente por todo. Saludos.
  #2 (permalink)  
Antiguo 06/03/2015, 05:38
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Carrito compras Consultar 2 tablas igual id

Primero te voy a hacer una observación en cuanto a estructura de datos:
Cita:
Tengo una tienda online (venta de ropa), que contiene 2 hojas (2 categorías) una de ellas (la primera) de ropa llamada X1 y la otra (la segunda) de ropa llamada X2 y por supuesto la tienda con su respectivo carrito de compras único.

Al inicio de todo, sólo tenía 1 categoría llamada X1 y la tienda andaba perfectamente bien junto a su carrito de compras. Pero el problema nace al querer agregar una 2 categoría la llamada X2.

[...]

Un dato importante es que en mi Base de Datos, ambas tablas (hojas de una y otra categoría) tienen dentro las mismas 'id' y mismos campos. Ambas tablas fueron duplicadas y simplemente renombradas como: Categoría X1 y Categoría X2 así de muy sencillo.
Eso que describes es un error desde el punto de vista de la arquitectura de datos. Y un error de los MUY malos.
Si tienes una tabla estructuralmente duplicada, porque la entidad representada en ellas se diferencian en un atributo y sólo un atributo (una categoría en este caso), eso no justifica de ningún modo que se replique una estructura. Es una diferenciación de tipo de dato, no de entidades.
Lo que deberías haber hecho es o establecer un atributo que diferencie las categorías si el objeto representado sólo puede pertenecer a una única, o bien crear una tabla para definir la relación entre productos y categorías, cuando el mismo producto puede pertenecer a más de una (relacion de cardinalidad N:N).
Es decir, tienes un defecto de estructura de datos que está repercutiendo en la aplicación...

Por otro lado, a nivel de aplicación, como tu carrito se carga con un identificador basado en el nombre del producto, y no en su ID y categoría de pertenencia, no estás definiendo un esquema de identificación consistente de los productos que carga el carrito...
En otras palabras, estás almacenando datos basura (inconsistentes), cuando el mismo producto aparece en ambas tablas.

En mi opinión deberías manejar una sola tabla de productos, relacionada a otra de categorías (requerirías tres tablas, una de ellas relacional), y en el carrito deberías almacenar el ID del producto y también su ID de cateogría. DE ese modo sí podrías gestionar todo de modo consistente.


PD: Posteaste este mismo mensaje en tres foros diferentes. Te recomiendo que leas las Politicas de Uso de Foros del Web, porque esa acción está totalmente prohibida. Y en al menos uno de ellos (MySQL) lo hiciste transgrediendo las reglas del subforo respectivo.
No repitas posts.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/03/2015, 08:24
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Carrito compras Consultar 2 tablas igual id

Hola gracias por tu tiempo y la molestia de responder al problema.

Bueno voy directo al grano,

No entendí en nada tu respuesta, si tuvieses la amabilidad de contestar y responder de una maneja simple, gráfica con códigos y directa te lo agradecería mucho.

Por otro lado entiendo que las 2 tablas que tengo son duplicadas, pero llamadas con distinto nombre así como hago referencia y ya he explicado con detenimiento y absoluto detalle.

También, dentro de cada tabla, los id y/o campos son los mismos en una y otra tabla. Pienso que no tiene nada que ver ésto si hablamos ya de dos tablas llamadas con diferentes nombres.

Lo único que pregunté, es como puedo resolver la duda de llamar y/o consultar 2 tablas desde una database a una única hoja php (es decir, un carrito de compras).

El código es el siguiente, te agradecería sólo concentrarte en el código que adjunto y puedas resolver en código para llamar las 2 tablas.

*La tabla resaltada es la TABLA1, ahora deseo llamar a la TABLA2*

---

<?php
session_start();
include './conexion.php';
if(isset($_SESSION['carrito'])){
if(isset($_GET['id'])){
$arreglo=$_SESSION['carrito'];
$encontro=false;
$numero=0;
for($i=0;$i<count($arreglo);$i++){
if($arreglo[$i]['Id']==$_GET['id']){
$encontro=true;
$numero=$i;
}
}
if($encontro==true){
$arreglo[$numero]['Cantidad']=$arreglo[$numero]['Cantidad']+1;
$_SESSION['carrito']=$arreglo;
}else{
$nombre="";
$precio=0;
$imagen="";
$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);
while ($f=mysql_fetch_array($re)) {
$nombre=$f['nombre'];
$precio=$f['precio'];
$imagen=$f['imagen'];
}
$datosNuevos=array('Id'=>$_GET['id'],
'Nombre'=>$nombre,
'Precio'=>$precio,
'Imagen'=>$imagen,
'Cantidad'=>1);

array_push($arreglo, $datosNuevos);
$_SESSION['carrito']=$arreglo;

}
}




}else{
if(isset($_GET['id'])){
$nombre="";
$precio=0;
$imagen="";
$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);
while ($f=mysql_fetch_array($re)) {
$nombre=$f['nombre'];
$precio=$f['precio'];
$imagen=$f['imagen'];
}
$arreglo[]=array('Id'=>$_GET['id'],
'Nombre'=>$nombre,
'Precio'=>$precio,
'Imagen'=>$imagen,
'Cantidad'=>1);
$_SESSION['carrito']=$arreglo;
}
}
?>

---

Nuevamente muchas gracias por tu tiempo y respuesta.

Saludos.
  #4 (permalink)  
Antiguo 06/03/2015, 08:29
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Carrito compras Consultar 2 tablas igual id



1) Codifica dinámicamente el nombre de la tabla.
2) Crea la lectura de la tabla en una función que reciba como parámetro el nombre de la tabla a consultar, además del resto de los datos necesarios.

Cita:
No entendí en nada tu respuesta, si tuvieses la amabilidad de contestar y responder de una maneja simple, gráfica con códigos y directa te lo agradecería mucho.
Yo te hice un planteo en función de estructura de datos, porque lo que estás haciendo es incorrecto, y lo terminarás pagando con inconsistencia de datos y consultas ineficientes y confusas.
Es un tema para desarrollar en el foro de Bases de Datos. Este es de PHP, pero simplemente te dejo el aviso de que tarde o temprano te verás obligado a modificar tu base de datos. No es si tienes que hacerlo, sino cuándo. Con ese diseño, será inevitable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 06/03/2015, 08:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Respuesta: Carrito compras Consultar 2 tablas igual id

Hola gracias por tu respuesta nuevamente,

Tienes razón quizá sea un problema de base de datos y no de php, pero en código php, sólo deseo saber lo siguiente,

Como puedo llamar en código 2 tablas, nuevamente te explico, en éste código, como puedo llamar una segunda tabla?

$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);

Entiendo que en Google, pude encontrar algunas razones, y sé que existen algunos códigos para poder llamar, consultar o unir dos tablas de una base de datos, como por ejemplo:

$re=mysql_query("select * from TABLA1, TABLA2 where id=".$_GET['id']);

Ó

$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);
UNION
$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);

Y ecc..

No entiendo mucho eso claro está, pero sólo deseo resolver ese dilema. En tanto a la base de datos y todo, no necesito modificar nada, pues como pude explicar más arriba, éste carrito de compras puede agregar automáticamente productos, modificar precios y nombres o descripción, funciona perfectamente, pues en ambas TABLA1 y TABLA2 puedo agregar productos y modificar sus datos en el carrito, y funciona perfectamente bien, no tengo problemas de duplicado de productos o problemas de id, al contrario, me va bien en todo.

Simplemente deseo llamar esas dos tablas, para que cuando una persona, de clic en 'MI CARRITO DE COMPRAS' puedan ver los productos que van adjuntando, de una y otra tabla, es decir productos de la TABLA1 y TABLA2 en una sola hoja, es decir nuevamente, el carrito de compras.

Saludos nuevamente.
  #6 (permalink)  
Antiguo 06/03/2015, 09:05
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Carrito compras Consultar 2 tablas igual id

Ya te dije el camino:
Cita:
2) Crea la lectura de la tabla en una función que reciba como parámetro el nombre de la tabla a consultar, además del resto de los datos necesarios.
Ejemplos de ese caso, en este foro encontrarás muchos.

Usa el buscador del foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 06/03/2015, 09:13
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Desacuerdo Respuesta: Carrito compras Consultar 2 tablas igual id

Gracias a tu respuesta,

Pero deseo una solución directa por código y explicado al detalle, ya que buscando por Google o aquí es más tiempo perdido, pues de todas formas no encuentro algún código que se adecue a mi código ya estructurado.

Deseo resolver la duda o consulta por código realizado desde cero que se ajuste al que ya tengo desarrollado.

Pero de todas formas gracias por la intención de querer ayudar.

Saludos y gracias nuevamente.
  #8 (permalink)  
Antiguo 06/03/2015, 09:32
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Carrito compras Consultar 2 tablas igual id

Hijo prueba con las alternativas que encontraste y utiliza la que mejor se adapte al problema, que de manera personal espero lo consideres como una solución temporal por que tienes un error de diseño en lo que estas haciendo que igual no te das cuenta en este momento pero te va costar a largo plazo.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 06/03/2015, 09:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Carrito compras Consultar 2 tablas igual id

Hola muchas gracias nuevamente por la intención de querer ayudar. Pero pienso que es una mejor ayuda una respuesta directa en código.

Al parecer soy el único que responde con código aquí, en un foro de php y de, seguramente, profesionales y expertos en programación.

Nuevamente pregunto, en el siguiente código, como puedo llamar/consultar 2 tablas desde una base de datos?

El código es el siguiente, y lo resaltado sería la tabla consultada desde la base de datos existente, ahora sólo deseo resolver en código como llamar una segunda tabla. Es todo, gracias.
---

<?php
session_start();
include './conexion.php';
if(isset($_SESSION['carrito'])){
if(isset($_GET['id'])){
$arreglo=$_SESSION['carrito'];
$encontro=false;
$numero=0;
for($i=0;$i<count($arreglo);$i++){
if($arreglo[$i]['Id']==$_GET['id']){
$encontro=true;
$numero=$i;
}
}
if($encontro==true){
$arreglo[$numero]['Cantidad']=$arreglo[$numero]['Cantidad']+1;
$_SESSION['carrito']=$arreglo;
}else{
$nombre="";
$precio=0;
$imagen="";
$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);
while ($f=mysql_fetch_array($re)) {
$nombre=$f['nombre'];
$precio=$f['precio'];
$imagen=$f['imagen'];
}
$datosNuevos=array('Id'=>$_GET['id'],
'Nombre'=>$nombre,
'Precio'=>$precio,
'Imagen'=>$imagen,
'Cantidad'=>1);

array_push($arreglo, $datosNuevos);
$_SESSION['carrito']=$arreglo;

}
}




}else{
if(isset($_GET['id'])){
$nombre="";
$precio=0;
$imagen="";
$re=mysql_query("select * from TABLA1 where id=".$_GET['id']);
while ($f=mysql_fetch_array($re)) {
$nombre=$f['nombre'];
$precio=$f['precio'];
$imagen=$f['imagen'];
}
$arreglo[]=array('Id'=>$_GET['id'],
'Nombre'=>$nombre,
'Precio'=>$precio,
'Imagen'=>$imagen,
'Cantidad'=>1);
$_SESSION['carrito']=$arreglo;
}
}
?>

---

Ps. Espero alguno no se incomode o moleste, pero no deseo respuestas alentadoras o pensamientos, deseo respuestas claras en código que me puedan ayudar en verdad y/o de resolver el problema en conjunto. Si no cuentan con una respuesta así por favor dejar el tema cerrado y dejar a otras personas que tengan un mayor conocimiento consultar y responder a éste tema para así no confundir un objetivo simple como es la pregunta. Muchas gracias.
  #10 (permalink)  
Antiguo 06/03/2015, 10:23
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Carrito compras Consultar 2 tablas igual id

Perdón, pero ¿en serio te cuesta razonar algo como?:

Código PHP:
$id $_GET['id'];
$tabla $_GET['tabla']; 
para luego usarlo así:
Código PHP:
$sql "select * from $tabla where id=$id"
que luego usas en la llamada a la base..


¿Entiendes el concepto de "construcción dinámica"?
Es eso: construir la sentencia en base a parámetros que entran por variable, la cual a su vez toma los datos que llegan del formulario.

¿Te queda clara la idea de "código reutilizable"? Porque también es eso: Un mismo código que se invoca desde diferentes partes, pero con valores diferentes, para diferentes acciones que ejecutan el mismo proceso base.

AL crear dinamicamente, reduces el código necesario y lo vuelves más flexible.
SI con eso no puedes hacer una adpatación de ese "código" que tienes, ya es otro problema,

Posdata: No repostees el mismo código. Ya lo entendimos, y no vamos a volver a leerlo sólo porque lo pongas una y otra vez.
Por otro lado, al menos podrías usar los highlight para resaltarlos, en lugar de ponerlo como texto plano. Así queda ilegible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 06/03/2015, 15:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Carrito compras Consultar 2 tablas igual id

Hola muchas gracias por tu respuesta con código,

Pude realizar las pruebas respectivas con el código que me brindas, y realizados otras opciones con ejemplo a lo que refieres.

Lastimosamente no he podido obtener un resultado adecuado al problema.

En realidad creo que el dilema es que los códigos no se ajustan al código php que tengo ya realizado, te agradecería revisar el código completo y ver en que lugar puede encontrarse el problema, en realidad lo haría muy sólo pero no soy alguien capacitado en el tema, es lógico que es por eso que me encuentro aquí. Si fuera capaz, no tendría necesidad de escribir en el foro.

Espero me puedas ayudar. Yo continuo buscando posibles soluciones en Google para luego, por supuesto, poder compartir todo el código y la solución con la comunidad y le pueda servir así a alguna otra persona.

Un saludo.

Ps. Fuera del código php, tengo en el cuerpo de la misma hoja web (misma hoja del carrito de compras que lleva el código php en discusión) un DIV que 'llama' automáticamente un producto seleccionado en la tienda. Ya sea de una u otra tabla.

El código es el siguiente, el detalle resaltado es el nombre de la carpeta, que contiene las distintas fotos e imágenes de los productos archivados en la tienda de esa categoría llamada en éste caso 'PRODUCTO1' .. Como podría llamar a una segunda carpeta en ese mismo DIV?

---
<div class="producto">
<center>
<img src="./PRODUCTO1/<?php echo $datos[$i]['Imagen'];?>" />
<p></p>
<span><?php echo $datos[$i]['Nombre'];?></span>
<p></p>
<span class="tituloweb">Precio $: <?php echo $datos[$i]['Precio'];?></span>
<p></p>
<span>Cantidad de Productos:
<input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"
data-precio="<?php echo $datos[$i]['Precio'];?>"
data-id="<?php echo $datos[$i]['Id'];?>"
class="cantidad" />
</span>
<p></p>
<span class="subtotal">Subtotal $: <?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span>
<p></p>
<a href="#" class="eliminar" data-id="<?php echo $datos[$i]['Id']?>">Eliminar</a>
</center>
<br />
</div>
---

Muchas gracias nuevamente, y disculpas por no saber utilizar las herramientas del foro para enviar los códigos, como vez soy nuevo aquí.

Saludos.
  #12 (permalink)  
Antiguo 06/03/2015, 16:14
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Carrito compras Consultar 2 tablas igual id

¿Viste ese combobox arriba del area de mensaje que dice "Highlight?
Bueno, úsalo cuando vayas a poner código...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 07/03/2015, 03:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Carrito compras Consultar 2 tablas igual id

Hola muchas gracias por tu respuesta con código,

Pude realizar las pruebas respectivas con el código que me brindas, y realizados otras opciones con ejemplo a lo que refieres.

Lastimosamente no he podido obtener un resultado adecuado al problema.

En realidad creo que el dilema es que los códigos no se ajustan al código php que tengo ya realizado, te agradecería revisar el código completo y ver en que lugar puede encontrarse el problema, en realidad lo haría muy sólo pero no soy alguien capacitado en el tema, es lógico que es por eso que me encuentro aquí. Si fuera capaz, no tendría necesidad de escribir en el foro.

Espero me puedas ayudar. Yo continuo buscando posibles soluciones en Google para luego, por supuesto, poder compartir todo el código y la solución con la comunidad y le pueda servir así a alguna otra persona.

Un saludo.

Ps. Fuera del código php, tengo en el cuerpo de la misma hoja web (misma hoja del carrito de compras que lleva el código php en discusión) un DIV que 'llama' automáticamente un producto seleccionado en la tienda. Ya sea de una u otra tabla.

El código es el siguiente, el detalle resaltado es el nombre de la carpeta, que contiene las distintas fotos e imágenes de los productos archivados en la tienda de esa categoría llamada en éste caso 'PRODUCTO1' .. Como podría llamar a una segunda carpeta en ese mismo DIV?

---
Código PHP:
Ver original
  1. <div class="producto">
  2. <center>
  3. <img src="./PRODUCTO1/<?php echo $datos[$i]['Imagen'];?>" />
  4. <p></p>
  5. <span><?php echo $datos[$i]['Nombre'];?></span>
  6. <p></p>
  7. <span class="tituloweb">Precio $: <?php echo $datos[$i]['Precio'];?></span>
  8. <p></p>
  9. <span>Cantidad de Productos:
  10. <input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"
  11. data-precio="<?php echo $datos[$i]['Precio'];?>"
  12. data-id="<?php echo $datos[$i]['Id'];?>"
  13. class="cantidad" />
  14. </span>
  15. <p></p>
  16. <span class="subtotal">Subtotal $: <?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span>
  17. <p></p>
  18. <a href="#" class="eliminar" data-id="<?php echo $datos[$i]['Id']?>">Eliminar</a>
  19. </center>
  20. <br />
  21. </div>
---

Muchas gracias nuevamente, y disculpas por no saber utilizar las herramientas del foro para enviar los códigos, como vez soy nuevo aquí.

Saludos.
  #14 (permalink)  
Antiguo 07/03/2015, 03:04
 
Fecha de Ingreso: marzo-2015
Mensajes: 15
Antigüedad: 9 años, 1 mes
Puntos: 3
Respuesta: Carrito compras Consultar 2 tablas igual id

el truco al programar es buscar siempre la solucion mas simple. Las tablas duplicadas te van a dar un dolor de cabeza al pedo cuando quieras buscar, quitar o agregar datos a traves del "Id".
¿Porque no agregar una nueva columna para categorias en la misma tabla?

aca limpie un toque el codigo

Código PHP:
session_start();
include 
'./conexion.php';

$_GET['id'] = isset($_GET['id'])? $_GET['id'] : '';
$_SESSION['carrito'] = isset($_SESSION['carrito'])? $_SESSION['carrito'] : '';

if(
$_SESSION['carrito'] && $_GET['id']):

    if(!
agregarCantidad())
        
array_push($_SESSION['carrito'], datosNuevos());

elseif(
$_GET['id']):

    
$_SESSION['carrito'] = datosNuevos();

endif;


function 
datosNuevos(){
    
    
$respuesta mysql_query("select * from TABLA1 where id=".$_GET['id']);
    
$row mysql_fetch_array($respuesta);

    
$datosNuevos = [];
    
$datosNuevos["Id"] = $_GET['id'],
    
$datosNuevos["Nombre"] = $row['nombre'],
    
$datosNuevos["Precio"] = $row['precio'],
    
$datosNuevos["Imagen"] = $row['imagen'],
    
$datosNuevos["Cantidad"] = 1

    
return $datosNuevos;
}

function 
agregarCantidad(){

    foreach(
$_SESSION['carrito'] as $datos){
        if(
$datos['Id'] == $_GET['id']){

            
$datos['Cantidad']++;
            return 
true;

        }
    }
    return 
false;

  #15 (permalink)  
Antiguo 07/03/2015, 03:27
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación Respuesta: Carrito compras Consultar 2 tablas igual id

Hola gracias por tu respuesta,

Puedes explicarme mejor cada parte del código ya limpio? Te lo agradecería mucho.

Sobre agregar en una misma tabla divisiones me parece correcto, pero lastimosamente tengo ya un proceso (código en la web y la base de datos) que va más allá de un simple carrito de compras, es decir, más allá de éste código en discusión ahora.

Tengo ya utilizando un panel de control, donde por supuesto agrego nuevos productos, tan solo subiendo nuevas fotos de algún producto, es decir, agrego un nombre, una descripción y un precio, todo eso más la foto respectiva del producto. Luego hay una sección donde por supuesto también puedo modificar esos datos, así como eliminar el producto de una tienda.

Todo ésto sumado a que tengo la posibilidad, que en el mismo carrito de compras, puedo a cada producto seleccionado (listo para comprar o dentro del carrito) puedo aumentar la cantidad de unidades, y los precios se suman automáticamente dando por resultado una cifra total por la compra de todo.

Como puedes ver, no es simplemente un código, imagino que si modifico una tabla en divisiones (id, tipo, campos o lo que fuera) tendría que hacerlo también de cada hoja (web php) donde ya se encuentran más códigos y muy complejos que llaman por id, campos o lo que fuera a cada producto por cada tienda (categorías) y suman o modifican sus acciones en general.

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.

Pude leer algunas cosas en San Google, pero pude observar algunas aplicaciones de código para consultar tablas utilizando el llamado UNION, y realizar algunas separaciones pero no pude encontrar respuesta de consulta al carrito de compras.

Espero me puedas ayudar a resolver más dudas con respecto al código, de igual forma compartiría todo el código de la tienda para que pueda ser utilizada en la comunidad del foro para quien le pueda servir más adelante.

Lo único que necesito es llamar o consultar esas 2 tablas en una sola hoja web (carrito de compras) y es todo. Aunque como ya explico también más arriba, en el cuerpo del carrito, cuento con un DIV que llama automáticamente cada producto seleccionado de una de las 2 tablas por su foto de carpeta.

Si necesitas saber con detenimiento algo o algún detalle puedes pedirlo así te pago el código y quizá pueda ayudarte a resolver cualquier duda, estoy dispuesto a entenderte y a compartir lo que fuese necesario para resolver la duda.

Gracias.
  #16 (permalink)  
Antiguo 18/03/2015, 01:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 9
Antigüedad: 15 años, 4 meses
Puntos: 0
Desacuerdo Respuesta: Carrito compras Consultar 2 tablas igual id

Ninguna respuesta?
  #17 (permalink)  
Antiguo 18/03/2015, 05:29
Avatar de 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, 4 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)

Etiquetas: carritodecompras, database, phpmyadmin, webmaster
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:20.