Nueva pregunta

Pregunta:

Fecha: 29-07-2018 10:16:24 (En Español)

Problema de Conexion a Base de datos[Resuelta]

hola estoy intentando hacer un carrito de compras pero tengo un problema el cual es que al momento de traer el producto para seleccionar la cantidad no esta tomando la información de la base datos quisiera saber si me podrían oriental ya que lo he revisado de arriba abajo y no doy con el problema.

Dejo el código, la conexión a la base de datos esta bien hasta este punto ya que cuando llego al llamado de los datos del producto en el Arreglo allí falla la conexión y no me trae los datos que estoy llamando pienso que mi error puede estar en el arreglo o el llamado de conexión la verdad cualquier ayuda es buena gracias

<?php
	session_start();
	include 'conexion.php';
	if(isset($_SESSION['carrito'])){
		$arreglo=$_SESSION['carrito'];
		$encontro=false;
		$numero=0;

	}else{
		if(isset($_GET['id'])){
			$nombre="";
			$precio=0;
			$imagen="";
			$re=mysqli_query($con,"select * from productos where id=".$_GET['id']);
			while ($f=mysqli_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;
		}
	}
?>

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="uft-8">
	<title>PlayStantion arena</title>
	<link rel="stylesheet" type="text/css" href="css/estilos.css">
	<script type="text/javascript" href="js/script.js"></script>
	
</head>
<body>
	<header>
		<h1>Carrito de Compras</h1>
		<a href="carritodecompras.php" title="ver carrito de compras">
			<img src="img/carrito.jpg">
	</header>
	<section>
		
		<?php
			$total=0;
			if(isset($_SESSION['carrito'])){
				$datos=$_SESSION['carrito'];
				$total=0;
				for ($i=0; $i <count($datos) ; $i++){ 
		?>
			<div class="producto">
				<center>
					<img src="productos/<?php echo $datos[$i]['Imagen'];?>"><br>
				</center>
				<span><?php echo $datos[$i]['Nombre'];?></span><br>
				<span>Precio: <?php echo $datos[$i]['Precio'];?></span><br>
				<span>Cantidad <input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"></span><br>
				<span>Subtotal: <?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span><br>


			</div>
		<?php

			$total=($datos[$i]['Cantidad']*$datos[$i]['Precio'])+$total;

			}

			}else{
				echo'<center><h2>El Carrito de compras esta vacio</h2></center>';
			}
			echo '<center><h2>Total: '.$total.'<h2></center>';

		?><br>
		<center><a href="index.php ?>">Ver Catalogo</a></center>

	</section>
</body>
</html>



Etiquetas: Base de Datos - MySQL - PHP - Pregunta Votos: 0 - Respuestas: 5 - Vistas: 15 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 29-07-2018 15:21:32 Yerlin
    Buenas noches

    Aparentemente en el segundo scipt te esta faltando
    <?php
    require('conexion.php');

    blablabla

    Prueba con eso

    Un saludo y suerte
      Votos: 1 - Link respuesta
     
  • Fecha: 05-08-2018 04:57:30 Parece como si tu consulta SQL esta mal estructurada. Si expandes tu variable (digamos que $_GET['id'] es igual a 46, por ejemplo) lo que tienes es esto:
    $re=mysqli_query($con,"select * from productos where id="46;
    

    O sea, te faltan las comillas sencillas alrededor del '46' y cerrar las comillas dobles que empiezan antes de "select... Además, al faltar el cierre de las comillas dobles, el paréntesis final también crea un error.

    Prueba esto:
    $re=mysqli_query($con,"select * from productos where id=  '$_GET[id]' ");
    

    Nota las comillas dobles para toda la consulta y las comillas sencillas alrededor de $_GET, además de que no uso las comillas sencillas dentro de los paréntesis cuadrados.
    Otro consejo: no uses la variable $_GET['id'] directamente, es mejor sanitizar tu entrada con algo asi:
    $id = filter_input(INPUT_GET, 'id');
    $re=mysqli_query($con,"select * from productos where id =  '$id' ");
    


    Recuerda que cambiar una variable GET por un valor malintencionado es tan sencillo como escribir su nuevo valor en la barra de navegación y enviarla.

    Suerte,
      Votos: 1 - Link respuesta
     
  • Fecha: 08-08-2018 21:25:41 Segun tu código, debería de ser así
    $id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
    
    if(is_null($id) or empty($id))
    {
    	header('Location: mipagina.php');
    	exit();
    }
    
    $re=mysqli_query($con,"select * from productos where id =  '{$id}' ");

    tienes que ponerle mas seguridad a tu código, y olvidarte de la programación estructurada
      Votos: 0 - Link respuesta
     
  • Fecha: 12-08-2018 08:41:12 Hola sus respuestas ayudaron de cierto modo un porque ya agregue el REQUIRE "CONEXION.PHP" en el segundo script y corregi lo de la comillas por lo cual ahora si me muestra los datos de la base de datos peeeero se me presenta el problema ahora que los datos q trae de la base datos de UN producto me los colocas en TODOS lo demas producto que llamo por ejemplo:

    Producto 1: imagen1,nombre 1, precio1
    Producto 2: imagen1,nombre 1, precio1
    Producto 3: imagen1,nombre 1, precio1

    y asi con todos los demas productos que llamo me siguen trayendo los datos del primer producto tengo que borrar el historial y cerrar el navegador para que tome los Datos de Segundo productos y despues pasa lo mismo los datos de Segundo producto salen en todos dejo el codigo corregido



    <?php
    session_start();
    if(isset($_SESSION['carrito'])){
    $arreglo=$_SESSION['carrito'];
    $encontro=false;
    $numero=0;

    }else{
    if(isset($_GET['id'])){
    require "conexion.php";
    $nombre="";
    $precio=0;
    $imagen="";
    $re=mysqli_query($con,"select * from productos where id='$_GET[id]'");
    while ($f=mysqli_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;
    }
    }
    ?>

    <!DOCTYPE html>
    <html lang="es">
    <head>
    <meta charset="uft-8">
    <title>PlayStantion arena</title>
    <link rel="stylesheet" type="text/css" href="css/estilos.css">
    <script type="text/javascript" href="js/script.js"></script>

    </head>
    <body>
    <header>
    <h1>Carrito de Compras</h1>
    <a href="carritodecompras.php" title="ver carrito de compras">
    <img src="img/carrito.jpg">
    </header>
    <section>

    <?php
    $total=0;
    if(isset($_SESSION['carrito'])){
    $datos=$_SESSION['carrito'];
    $total=0;
    for ($i=0; $i <count($datos) ; $i++){
    ?>
    <div class="producto">
    <center>
    <img src="productos/<?php echo $datos[$i]['Imagen'];?>"><br>
    </center>
    <span><?php echo $datos[$i]['Nombre'];?></span><br>
    <span>Precio: <?php echo $datos[$i]['Precio'];?></span><br>
    <span>Cantidad <input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"></span><br>
    <span>Subtotal: <?php echo $datos[$i]['Cantidad']*$datos[$i]['Precio'];?></span><br>


    </div>
    <?php

    $total=($datos[$i]['Cantidad']*$datos[$i]['Precio'])+$total;

    }

    }else{
    echo'<center><h2>El Carrito de compras esta vacio</h2></center>';
    }
    echo '<center><h2>Total: '.$total.'<h2></center>';

    ?><br>
    <center><a href="index.php ?>">Ver Catalogo</a></center>

    </section>
    </body>

    tambien tengo el problema de que alli mismo tengo que poder seleccionar la cantidad osea yo coloco la cantidad de veces que quiero el producto pero el cuadro de ingreso de texto (imput type="tex") no me deja editar sale con valor 1 y no me permite editar dejo el codigo de ingreso de texto:

    <span>Cantidad <input type="text" value="<?php echo $datos[$i]['Cantidad'];?>"></span><br>

    Dejo tambien la linea donde hago el llamado de la variable cantidad



    $arreglo[]=array('Id'=>$_GET['id'],
    'Nombre'=>$nombre,
    'Precio'=>$precio,
    'Imagen'=>$imagen,
    ----------------->'Cantidad'=>1);<--------------------
    $_SESSION['carrito']=$arreglo;
      Votos: 0 - Link respuesta
     
  • Fecha: 12-08-2018 19:41:29 Tienes mucho código espagueti, y no usas correctamente las comillas, ya que lo que hacen las comillas dobles es reemplazar las variables por su valor. En cambio las comillas simples no leen el valor, solo entregan texto plano.

    por ejemplo:
    $nombre = "Luis";
    
    // Mi nombre es Luis
    echo "Mi nombre es $nombre";
    
    // Mi nombre es Luis
    echo "Mi nombre es {$nombre}";
    
    // Mi nombre es $nombre
    echo 'Mi nombre es $nombre';


    y como lo deberias de hacer con tu codigo es asi

    $re=mysqli_query($con,"select * from productos where id =  '{$id}' ");
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com