Ver Mensaje Individual
  #9 (permalink)  
Antiguo 09/03/2018, 11:08
rafret
 
Fecha de Ingreso: junio-2010
Mensajes: 221
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: implementar carrito de compras, borrar linea de pedido

Hola mortiprogramador gracias nuevamente.

Estoy empezando a implementar la aplicación con la guía que me enviaste, pero salta el primer problema, aunque ya había empezado a usar ésta -para mi- nueva forma de petición a la base sin llamar a todas la filas en otro proyecto aplicándolo con éxito a una galería de imágenes con resultado óptimo, en la del carrito me da el error que la imagen del elemento 1 de la tabla se repite en todos los resultados.

Proyecto con resultado óptimo:

Código PHP:
$peticion="SELECT id, imagen, alt FROM galery";
                    
$resultado=mysqli_query($conexion,$peticion); 
                    while(
$fila=mysqli_fetch_array($resultado)){ 
                    
                        echo
'<div class="item">';
                        echo
'    <div class="madre">';
                        echo
'        <a class="fancybox" href="images/galery/big/'.$fila['imagen'].'.jpg" 
                                    data-fancybox-group="galery" title="'
.$fila['alt'].'">';
                        echo
'            <div>';
                        echo
'                <img  src="images/galery/'.$fila['imagen'].'.jpg"
                                            itemprop="image"
                                            alt="'
.$fila['imagen'].'" />';
                        echo
'            </div>';
                        echo
'            <div class="fondoEfecto">
                                        </div>'
;
                        echo
'        </a>';
                        echo
'    </div>';
                        echo
'</div>';
                    } 
Hasta aquí íbamos bien:


Cita:
1. En el index haces dos consultas a la base de datos,
cuando puedes hacer solo una
agregando el query de images como una subconsulta a la consulta principal
(además ambos querys traen todos los datos resultantes de las filas,
cuando solo se necesitan algunos campos solamente, es decir, el * es mejor evitarlo)

(este punto aplica para index.php y productos.php)
Código PHP:
Ver original
$peticion="SELECT p.id, p.descripcion, p.nombre_productos,
p.precio, (SELECT imagen FROM images WHERE id_producto= p.id LIMIT 1) imagen
FROM productos p";
El código me queda asi:

Código PHP:
<?php
    
include("php/cabecera.php");

/*el usuario hace la busqueda solicitando paquetes de viaje en america el cual tendía el siguiente id 'america'*/
 
$conexion mysqli_connect("localhost","root","","carritocompras");
 
mysqli_set_charset($conexion,"utf8");
 
                
$peticion="SELECT id, descripcion, nombre_productos,
                precio, (SELECT imagen FROM images WHERE id_producto=id LIMIT 1) imagen
                FROM productos"
;
                
//$peticion="SELECT * FROM productos";
                
$resultado=mysqli_query($conexion,$peticion);
                while(
$fila=mysqli_fetch_array($resultado)){

                    echo
"<div style='border-bottom:1px solid; padding:2%; width:30%'>";
                    echo 
"<h2>".$fila["nombre_productos"]."</h2>";
                    echo 
$fila["descripcion"]."<br />";
                    echo
"<p><strong>Precio: s/ ".$fila["precio"]."</strong><br /></p>";
                    
//lo que era segunda peticion    
                    
echo "<img src='images/".$fila["imagen"].".jpg' width=100% /><br />";
                    
                    echo
"<a href='productos.php?id=".$fila["id"]."'><button>más información</button></a>";
                    echo
" <button value=".$fila["id"]." class='boton_compra'>comprar ahora</button>";
                    echo
"</div>";
     }
            
mysqli_close($conexion);
                 
            

    
    include(
"php/pie.php");
    
?>
Que hago mal o que omito? // esa "p" tal vez, pero como hacerla funcionar correctamente o como trabaja?

Sé que debes estar ocupado, así que esperare paciente tus comentarios. Saludos

Última edición por rafret; 09/03/2018 a las 11:15 Razón: añadir footer