Como enviar varios tipos de datos con ajax
Publicado por JR (2 intervenciones) el 25/01/2019 19:52:15
Hola de nuevo gente. Tengo un problemilla de novato que llevo días intentando resolver pero no doy con la llave a pesar de ver mil artículos y tutoriales sobre el tema. Tanto es así, que estoy empezando a pensar que soy bastante muñón para esto de la programación. :(
Estoy haciendo un ejercicio para clase que no es más que la típica tienda online con un carrito de la compra. La página donde salen los artículos es php y el botón para añadir al carrito lo hice con un evento onclick de javascript, que según vas dándole click al botón de cada artículo, ese artículo se va añadiendo al carrito, es decir, a un array bidimensional.
Os dejo el código para que lo podáis ver.
Inicio de sesión y variables de sesión importadas de la página anterior:
Parte PHP:
Función para añadir artículos:
Función para quitar artículos:
Hasta aquí todo bien. Bueno, supongo que el código será mejorable, pero funcionar funciona. Los artículos se van añadiendo al carrito y el array se crea correctamente.
El problema que me encuentro ahora es que no sé como enviar ese array, o mejor dicho, algunos de los elementos de ese array, (porque "descripción" y "características" no los necesito) a otra página php donde pueda pillarlos para meterlos a la tabla "compra", porque además, para más lío, esa tabla "compra", no solo lleva los elementos del array, sino que además, lleva otro campo que es el id del usuario. Este dato está guardado en una variable de sesión, (se puede ver en las primeras líneas $_SESSION["idusuario"];) o sea que, además del array, también tengo que llevarme lo que contiene esta variable de sesión, y la verdad, no tengo ni idea de como hacerlo. Así que, si alguien me ayudara y me aportara un poco de luz con esto, de verdad que le estaría enormemente agradecido. :D
Espero haberme explicado de manera que se me haya entendido algo.
Gracias a todos por vuestro tiempo y saludos desde Asturias.
Estoy haciendo un ejercicio para clase que no es más que la típica tienda online con un carrito de la compra. La página donde salen los artículos es php y el botón para añadir al carrito lo hice con un evento onclick de javascript, que según vas dándole click al botón de cada artículo, ese artículo se va añadiendo al carrito, es decir, a un array bidimensional.
Os dejo el código para que lo podáis ver.
Inicio de sesión y variables de sesión importadas de la página anterior:
1
2
3
4
5
6
<?php
session_start();
$nombre=$_SESSION["usuario"];
$rol=$_SESSION["role"];
$iu=$_SESSION["idusuario"];
?>
Parte PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
echo "<p class='bienvenida'>Hola " . $nombre . " esta es la lista de artículos.</p>";
$consulta='SELECT ID_ARTICULO, DESCRIPCION, PRECIO, CARACTERISTICAS FROM ARTICULOS';
$resultado=mysqli_query($conexion, $consulta);
echo "<div class='contenedorGeneral'>";
echo "<div class='listaArticulos'>";
while($row=mysqli_fetch_assoc($resultado)){
echo "<div class='articulo'>";
echo "<div class='id_articulo'>" . $row["ID_ARTICULO"] . "</div>";
echo "<div class='descripcion'>" . $row["DESCRIPCION"] . "</div>";
echo "<div class='caract'>" . $row["CARACTERISTICAS"] . "</div>";
echo "<div class='preAniadi'>";
echo "<div class='precio'>" . $row["PRECIO"] . "€</div>";
?>
<button class='botonaco' name='boton' onclick='agregar(0, <?php echo $row["ID_ARTICULO"] ?>, "<?php echo $row["DESCRIPCION"] ?>", <?php echo $row["PRECIO"] ?>)'>Añadir al carrito</button>
<?php
echo "</div>";
echo "</div>";
}
echo "</div>";
echo "<div id='carroYTotal'>
<div id='carro'></div>
<div id='total'></div>
</div>";
echo "</div>";
echo "<p id='parrafo'></p>";
?>
Función para añadir artículos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function agregar(cant, id, descr, precio){
cant++;
total+=precio;
for(i=0;i<carrito.length;i++){
if(carrito[i][1]==id){
carrito[i][0]+=1;
break;
}
}
if(i==carrito.length){
carrito.push([cant, id, descr, precio]);
}
document.getElementById("carro").innerHTML="";
for(i=0; i<carrito.length;i++){
document.getElementById('carro').innerHTML+=carrito[i][0] + " - " + carrito[i][1] + " - " + carrito[i][2] + "<button onclick='quitar("+i+")'>Quitar</button><br>";
}
document.getElementById("total").innerHTML="Total "+total.toFixed(2)+"€"+"<button id='btComprar' onclick='enviaDatos()'>Comprar</button>";
}
Función para quitar artículos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function quitar(i){
if(carrito[i][0]>0){
carrito[i][0]-=1;
}
total-=carrito[i][3];
document.getElementById("carro").innerHTML="";
for(j=0;j<carrito.length;j++){
if(carrito[j][0]==0){
carrito.splice(j, 1);
}
if(carrito.length==0){
document.getElementById("total").innerHTML="";
}else {
document.getElementById("total").innerHTML="Total " + total.toFixed(2)+"€";
}
document.getElementById('carro').innerHTML+=carrito[j][0] + " - " + carrito[j][1] + " - " + carrito[j][2] + "<button onclick='quitar("+j+")'>Quitar</button><br>";
}
}
Hasta aquí todo bien. Bueno, supongo que el código será mejorable, pero funcionar funciona. Los artículos se van añadiendo al carrito y el array se crea correctamente.
El problema que me encuentro ahora es que no sé como enviar ese array, o mejor dicho, algunos de los elementos de ese array, (porque "descripción" y "características" no los necesito) a otra página php donde pueda pillarlos para meterlos a la tabla "compra", porque además, para más lío, esa tabla "compra", no solo lleva los elementos del array, sino que además, lleva otro campo que es el id del usuario. Este dato está guardado en una variable de sesión, (se puede ver en las primeras líneas $_SESSION["idusuario"];) o sea que, además del array, también tengo que llevarme lo que contiene esta variable de sesión, y la verdad, no tengo ni idea de como hacerlo. Así que, si alguien me ayudara y me aportara un poco de luz con esto, de verdad que le estaría enormemente agradecido. :D
Espero haberme explicado de manera que se me haya entendido algo.
Gracias a todos por vuestro tiempo y saludos desde Asturias.
Valora esta pregunta
0