Jump to content

Consulta sql con id_cart


Recommended Posts

BUENAS TARDES A TODOS.

 

Soy nuevo en prestashop y tuve que realizar una consulta para que me muestre algunos datos en un archivo php.

 

La consulta en mysql ya la tengo la verdad como soy super nuevo en este sistema la he realizado fuera del smarty, simplemente es un enlace ubicado en el tpl de order-address el cual me direcciona a una pagina prueba.php en el cual esta la sentencia sql.

 

El problema radica en que necesito una variable id_cart para realizar la consulta.

 

Como haría para tomar esta variable del carrito que estoy viendo en este momento.

 

Si alguien puede ayudar por favor, ya que he estado varios días tratando de solucionar este problema.

 

La versión de prestashop es 1.5

 

Y disculpas si no es el lugar correcto para esta consulta.

Link to comment
Share on other sites

Buenas, te dejo el manual de desarrollador que ofrece prestashop para desarrolladores, supongo que te vendrá bien aunque está en inglés. 

 

http://doc.prestashop.com/display/PS15/Developer+Guide

 

El código sql nunca tiene que estar en un fichero tpl(smarty) osea que lo que has hecho es lo correcto. Como tu explicación es bastante genérica pues tampoco se qué mas decirte. Sería bueno que conozcas la estructura de prestashop y revises las guías antes de empezar a tocar cosas. Posiblemente ya hay una clase donde debería ir la consulta que estás realizando y ya tendrías el contexto para recuperar el id_cart. 

Link to comment
Share on other sites

Hola jesa.

 

Gracias por responder el problema es que la verdad no soy desarrollador, soy diseñador grafico, y esta pagina la estaba realizando otra persona que la verdad nos abandono en esto, asi que básicamente no entiendo la programación de prestashop.

 

Lo que comentaba de la consulta la hice buscando en foros y todo y lo logre pero es completamente ajeno a la estructura de prestashop, incluso la conexión la tengo dentro del archivo prueba.php e incluso es funcional, pero con datos fijos y necesito que estos sean variables.

 

Les pongo el código que utilice para la consulta:

 

<?php

include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/header.php');
/*include(dirname(__FILE__).'/themes/default/js/order-opc.js');*/
/*include(dirname(__FILE__).'/footer.php');*/

// Conectando, seleccionando la base de datos
$link = mysql_connect('localhost', '***', '****')
    or die('No se pudo conectar: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('******') or die('No se pudo seleccionar la base de datos');

//EJECUTAR OPERACIONES PARA OBTENER LAS VARIABLES DIRECCIÓN Y CART

$cart2=89;
$id_category2=11;

 

 

//$cart3 = Cart::getCart((int)($cookie->id_lang), true, false);

//EJECUTAR SENTENCIA SQL QUE PERMITE VERIFICAR LOS MONTOS CONSUMIDOS
$query ="SELECT C.name As categoria,
D.sv_monto As Monto_Maximo,
SUM(A.quantity) As Cantidad_Productos,
SUM(A.quantity * B.price) as valor_compra,
(D.sv_monto - SUM(A.quantity * B.price)) AS Saldo,
A.id_cart,
A.id_product,
A.id_address_delivery,
A.date_add,
B.id_category_default,
B.price
FROM ps_cart_product as A, ps_product as B, ps_category_lang as C, sv_address_categories as D
WHERE (A.id_product = B.id_product)
and (B.id_category_default = C.id_category
and C.id_lang = 2)
and (D.sv_categories_id = C.id_category
and B.id_category_default = D.sv_categories_id)
and A.id_cart = '.$cart2'
and D.sv_address_id = '$id_category2'
GROUP BY C.name
;";

$result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());

// Imprimir los resultados en HTML

echo "<table border='1' align='center'>";
echo "<tr bgcolor='#cccccc'>";
echo "<td><br>Categoría</br></td>";
echo "<td>Monto</td>";
echo "<td>Productos</td>";
echo "<td>Valor Comprado</td>";
echo "<td>Saldo</td>";
echo "</tr>";

 

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "<tr>";
    echo "<td>".$line[categoria]."</td>";
    echo "<td>".$line[Monto_Maximo]."</td>";
    echo "<td>".$line[Cantidad_Productos]."</td>";
    echo "<td>".$line[valor_compra]."</td>";
    echo "<td>".$line[saldo]."</td>";
    echo "</tr>";
}
echo "<table>";

foreach ($categorias as $categoria){
echo '<option value="'.$categoria['id_category'].'>'.$categoria['name'].'</option>';
}

// Liberar resultados
mysql_free_result($result);

// Cerrar la conexión
mysql_close($link);
?>

 

Como pueden ver en el where tengo una variable  '.$cart2' esa variable necesito tomarla del resumen del carrito que estoy viendo.

 

Por eso quería ver si alguien me podría ayudar para poder obtener esa variable y no sea fija.

 

Esto es urgente por lo que necesito resolverlo asi por el momento, posteriormente investigaría para usar las condiciones de prestashop.

 

 

Alguien que me pueda ayudar con esto, por favor.

Link to comment
Share on other sites

Para empezar, llamar $link a la conexión....miedo da.

 

Personalmente creo que te sería más sencillo hacerlo bien de una vez que hacer estas chapucillas. Básicamente porque si lo hicieras en la case que corresponda, tendrás accesible el carrito y demás variables de entorno con lo que te resultaría mucho más sencillo hacerlo. 

 

Así tal cual lo dices, un php tirado ahí pues es complicado, el contexto lo habrás perdido y la otra opción es que pases el id al hacer la llamada, pero tampoco se sabe como lo llamas ni desde donde. 

Link to comment
Share on other sites

Hola jesa gracias por responder.

 

Como te decía eso de ahí lo hice buscando en foros, jeje y el problema es que ya no tengo tiempo para investigar y hacerlo como se debe (al menos por el momento). Por eso lo tengo asi y sobre el id la verdad no te entendí si terefieres al id_cart pues de hecho ese lo tome de la base de datos de la tabla cart para que me diera datos y probar la sentencia sql y me funciona porque me da los datos que son la cuestión es que eso debería ser una variable ya que según lo que vi cuando añades un primer producto al carrito este guarda un registro en la tabla cart y ese id es el que necesito.

 

Como dije no soy programador asi que les agradecería que me tengan paciencia jeje.

Link to comment
Share on other sites

Pues sin tiempo para mirarlo y urgencia en hacerlo mala combinación...

 

Te entendí lo que me dices, entiendo tú problema, pero como digo, sería más sencillo que alguien te ayudara haciendo las cosas bien que de esta otra manera. Como te decía antes, has creado un php que no se sabe como se llama ni desde donde...con lo que es un tanto complicado. 

 

Piensa que mucha gente que te puede ayudar es porque ha tenido una experiencia parecida a la tuya con prestashop pero que tampoco es desarrollador. Con el tiempo vas conociendo como funciona, pero si te sales de ahí la cosa se complica. 

Link to comment
Share on other sites

Jesa te agradesco los consejos vere como lo puedo solucionar.

 

Quisiera hacer una consulta es sobre el resumen del carro de compras en la parte donde me salen las direcciónes quisiera saber donde lo puedo modificar para que me salga por ejemplo duplicada la dirección de entrega ¿para que es esto?, ya que en esa sección es donde debería salir la tabla que te mostre y quisiera analizar ese código y ver si puedo poner la consulta en ese archivo, logre quitar la dirección de facturación para que no se vea en el archivo tpl comentando una línea pero no encuentro de donde llama esos datos o como lo hace.

 

Te agradecería si me podrias dar una guía de que archivos debería modificar.

 

Y si alguien ha tenido un tema similar al que tengo y existe una guía que me pueda ayudar les agradecería.

Link to comment
Share on other sites

Guias para esto no creo que encuentres, lo que tienes es la documentación de prestashop que la puedes encontrar en el foro que está en un hilo fijo.

 

La idea es que cada tabla tiene su clase, por lo tanto si quieres hacer una consulta sobre la tabla cart_product tendrás que buscar la clase que se llama así y poner ahí el método. No te pongo el nombre porque no me lo se de memoria y no quiero confundirte. 

Lo suyo sería que si es un método nuevo crees el override de la clase para no pisar el core. Supongo que tendrás que tocar algún controller y también deberías de hacer el override. Todas estas cosas te vienen en la documentación. 

 

Si sigues el flujo te aseguras que tienes el contexto y de ahí puedes coger el id del carrito. 

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...