Insertar datos en tablas relacionadas
O una duda enorme!
Veréis tengo 3 tablas así:
Categorías:
categoria_id, categoria_nombre, categoria_imagen
productos:
producto_id,
producto_nombre,
producto_imagen,
producto_precio
y una tercera tabla que relaciona a las 2:
productos_categorias
categoria_id,
producto_id
Con FOREIGN KEY categorias. Categoria_id y FOREIGN KEY productos.producto_id
Con esto lo que hago es que un producto pertenezca a muchas categorías y una categoría tenga muchos productos. Una relación muchos a muchos.
Bien. Insertanto datos a mano, desde el PHPmyadmin, no tengo problema ninguno en ninguna tabla.
El problema viene cuando lo hago desde el formulario.
El archivo se llama: producto_alta.php y en ese archivo cargo los datos y los envío.
Lo hago todo en el mismo archivo, no envío los datos a otro archivo, no sé si me explico.
Bien, en este archivo, a su vez listo las categorías que están disponibles con un checkbox, y después vienen los campos a rellenar para introducir el producto.
El código que tengo generado donde hago la inserción es este:
$query=mysql_query("INSERT INTO $tabla_productos (producto_id, producto_nombre, producto_descripcion, producto_precio, producto_imagen1)
VALUES ('', '$fnombre', '$fdescripcion', '$fprecio', '$fimagen1')") or die (mysql_error());
//aqui inserto los datos del producto
$rsx=mysql_query("SELECT producto_id FROM $tabla_productos ORDER BY producto_id DESC") or die (mysql_error());
$ix=0;
$quant=mysql_num_rows($rsx);
$producto_id=mysql_result($rsx, $ix, 'producto_id');
//Aquí lo que hago es sacar la última id insertada, ya se que se puede hacer de otra manera pero como es lo mismo me aclaro mejor así.
$query2=mysql_query("INSERT INTO $tabla_productos_categorias(categoria_id,producto_id) VALUES ('$fcategoria_id','$producto_id')") or die (mysql_error());
//Y aquí lo que hago es insertar en la tabla que relaciona el id del producto que se acaba de insertar y el id de la categoría que ha sido seleccionada en el formulario.
El error que me tira es este:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(categoria_id, producto_id) VALUES ('4','429')' at line 1
Como podeis ver si que me recoge los valores: 4 es la categoria y 429 es la id del producto que acabo de insertar.
Y lo más gracioso es que si me introduce el producto en la tabla productos, pero no me mete esos valores de id en la tabla productos_categorias, que es la que los relacionada.
Necesito hacer esto para que luego se vean los productos, a la hora de listarlos con su respectiva relación.
Si me podéis echar una mano os lo agradecería porque no se muy bien como hacerlo.
He probado de todo y no chuta nada más que la inserción del producto..
Veréis tengo 3 tablas así:
Categorías:
categoria_id, categoria_nombre, categoria_imagen
productos:
producto_id,
producto_nombre,
producto_imagen,
producto_precio
y una tercera tabla que relaciona a las 2:
productos_categorias
categoria_id,
producto_id
Con FOREIGN KEY categorias. Categoria_id y FOREIGN KEY productos.producto_id
Con esto lo que hago es que un producto pertenezca a muchas categorías y una categoría tenga muchos productos. Una relación muchos a muchos.
Bien. Insertanto datos a mano, desde el PHPmyadmin, no tengo problema ninguno en ninguna tabla.
El problema viene cuando lo hago desde el formulario.
El archivo se llama: producto_alta.php y en ese archivo cargo los datos y los envío.
Lo hago todo en el mismo archivo, no envío los datos a otro archivo, no sé si me explico.
Bien, en este archivo, a su vez listo las categorías que están disponibles con un checkbox, y después vienen los campos a rellenar para introducir el producto.
El código que tengo generado donde hago la inserción es este:
$query=mysql_query("INSERT INTO $tabla_productos (producto_id, producto_nombre, producto_descripcion, producto_precio, producto_imagen1)
VALUES ('', '$fnombre', '$fdescripcion', '$fprecio', '$fimagen1')") or die (mysql_error());
//aqui inserto los datos del producto
$rsx=mysql_query("SELECT producto_id FROM $tabla_productos ORDER BY producto_id DESC") or die (mysql_error());
$ix=0;
$quant=mysql_num_rows($rsx);
$producto_id=mysql_result($rsx, $ix, 'producto_id');
//Aquí lo que hago es sacar la última id insertada, ya se que se puede hacer de otra manera pero como es lo mismo me aclaro mejor así.
$query2=mysql_query("INSERT INTO $tabla_productos_categorias(categoria_id,producto_id) VALUES ('$fcategoria_id','$producto_id')") or die (mysql_error());
//Y aquí lo que hago es insertar en la tabla que relaciona el id del producto que se acaba de insertar y el id de la categoría que ha sido seleccionada en el formulario.
El error que me tira es este:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(categoria_id, producto_id) VALUES ('4','429')' at line 1
Como podeis ver si que me recoge los valores: 4 es la categoria y 429 es la id del producto que acabo de insertar.
Y lo más gracioso es que si me introduce el producto en la tabla productos, pero no me mete esos valores de id en la tabla productos_categorias, que es la que los relacionada.
Necesito hacer esto para que luego se vean los productos, a la hora de listarlos con su respectiva relación.
Si me podéis echar una mano os lo agradecería porque no se muy bien como hacerlo.
He probado de todo y no chuta nada más que la inserción del producto..
1 Respuesta
Respuesta de davidcortesb
1