
INSERT a tablas relacionales ¿¿como??
Publicado por cotarejo (12 intervenciones) el 05/08/2015 19:42:39
Buenas tardes, tengo 4 tablas relacinadas entre sí. que son estas:
CREATE TABLE IF NOT EXISTS `tablaplatos` (
`id_plato` int(15) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`primerprimero` varchar(100) NOT NULL,
`segundoprimero` varchar(100) NOT NULL,
`tercerprimero` varchar(100) NOT NULL,
`primersegundo` varchar(100) NOT NULL,
`segundosegundo` varchar(100) NOT NULL,
`tercersegundo` varchar(100) NOT NULL,
`primerpostre` varchar(100) NOT NULL,
`segundopostre` varchar(100) NOT NULL,
`tercerpostre` varchar(100) NOT NULL,
`cafe` bit(1) NOT NULL,
`pan` bit(1) NOT NULL,
`id_restaurante` int(11) NOT NULL,
PRIMARY KEY (`id_plato`),
KEY `id_restaurante` (`id_restaurante`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;
CREATE TABLE IF NOT EXISTS `tablaprecios` (
`id_precio` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`precio` int(15) NOT NULL,
`id_restaurante` int(11) NOT NULL,
PRIMARY KEY (`id_precio`),
KEY `id_restaurante` (`id_restaurante`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;
CREATE TABLE IF NOT EXISTS `tablarestaurantes` (
`id_restaurante` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`telefono` int(9) NOT NULL,
`localidad` varchar(50) NOT NULL,
`latitud` float NOT NULL,
`longitud` float NOT NULL,
PRIMARY KEY (`id_restaurante`),
KEY `nombre` (`nombre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;
CREATE TABLE IF NOT EXISTS `tablausuarios` (
`id_usuario` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id_usuario`),
KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=230 ;
-- Filtros para la tabla `tablaplatos`
--
ALTER TABLE `tablaplatos`
ADD CONSTRAINT `tablaplatos_ibfk_1` FOREIGN KEY (`id_restaurante`) REFERENCES `tablarestaurantes` (`id_restaurante`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Filtros para la tabla `tablaprecios`
--
ALTER TABLE `tablaprecios`
ADD CONSTRAINT `tablaprecios_ibfk_1` FOREIGN KEY (`id_restaurante`) REFERENCES `tablarestaurantes` (`id_restaurante`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Filtros para la tabla `tablarestaurantes`
--
ALTER TABLE `tablarestaurantes`
ADD CONSTRAINT `tablarestaurantes_ibfk_2` FOREIGN KEY (`nombre`) REFERENCES `tablausuarios` (`login`) ON DELETE NO ACTION ON UPDATE NO ACTION;
Ahora necesito hacer un INSERT a todas las tablas, lo tenía hecho tal que así:
function alta($pdo, $altanombre, $altalocalidad, $altatelefono, $altaprimerprimero, $altasegundoprimero, $altatercerprimero, $altaprimersegundo, $altasegundosegundo, $altatercersegundo, $altaprimerpostre, $altasegundopostre, $altatercerpostre, $altacafe, $altapan, $altaprecio, $altalatitud, $altalongitud, $altapassword){
$sentencia = $pdo->prepare("INSERT INTO `tablarestaurantes`(`nombre`, `telefono`, `localidad`, `latitud`, `longitud`) VALUES ('".$altanombre."',".$altatelefono.",'".$altalocalidad."',".$altalatitud.",".$altalongitud.")");
$sentencia->execute();
$sentencia2 = $pdo->prepare("INSERT INTO `tablaplatos`(`nombre`, `primerprimero`, `segundoprimero`, `tercerprimero`, `primersegundo`, `segundosegundo`, `tercersegundo`, `primerpostre`, `segundopostre`, `tercerpostre`, `cafe`, `pan`) VALUES ('".$altanombre."','".$altaprimerprimero."','".$altasegundoprimero."','".$altatercerprimero."','".$altaprimersegundo."','".$altasegundosegundo."','".$altatercersegundo."','".$altaprimerpostre."','".$altasegundopostre."','".$altatercerpostre."','".$altacafe."',".$altapan.")");
$sentencia2->execute();
$sentencia3 = $pdo->prepare("INSERT INTO `tablaprecios`(`nombre`, `precio`) VALUES ('".$altanombre."',".$altaprecio.")");
$sentencia3->execute();
$sentencia4 = $pdo->prepare("INSERT INTO `tablausuarios`(`login`, `password`) VALUES ('".$altanombre."','".$altapassword."')");
$sentencia4->execute();
}
Pero en el momento de hacer la relacion con las tablas me dice esto:

Sé que antes me dejaba porq no estaban las tablas relacionadas, y ahora no me deja por eso mismo...
¿¿Cómo debería de ser la consulta???
Gracias.
CREATE TABLE IF NOT EXISTS `tablaplatos` (
`id_plato` int(15) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`primerprimero` varchar(100) NOT NULL,
`segundoprimero` varchar(100) NOT NULL,
`tercerprimero` varchar(100) NOT NULL,
`primersegundo` varchar(100) NOT NULL,
`segundosegundo` varchar(100) NOT NULL,
`tercersegundo` varchar(100) NOT NULL,
`primerpostre` varchar(100) NOT NULL,
`segundopostre` varchar(100) NOT NULL,
`tercerpostre` varchar(100) NOT NULL,
`cafe` bit(1) NOT NULL,
`pan` bit(1) NOT NULL,
`id_restaurante` int(11) NOT NULL,
PRIMARY KEY (`id_plato`),
KEY `id_restaurante` (`id_restaurante`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;
CREATE TABLE IF NOT EXISTS `tablaprecios` (
`id_precio` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`precio` int(15) NOT NULL,
`id_restaurante` int(11) NOT NULL,
PRIMARY KEY (`id_precio`),
KEY `id_restaurante` (`id_restaurante`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;
CREATE TABLE IF NOT EXISTS `tablarestaurantes` (
`id_restaurante` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(50) NOT NULL,
`telefono` int(9) NOT NULL,
`localidad` varchar(50) NOT NULL,
`latitud` float NOT NULL,
`longitud` float NOT NULL,
PRIMARY KEY (`id_restaurante`),
KEY `nombre` (`nombre`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;
CREATE TABLE IF NOT EXISTS `tablausuarios` (
`id_usuario` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id_usuario`),
KEY `login` (`login`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=230 ;
-- Filtros para la tabla `tablaplatos`
--
ALTER TABLE `tablaplatos`
ADD CONSTRAINT `tablaplatos_ibfk_1` FOREIGN KEY (`id_restaurante`) REFERENCES `tablarestaurantes` (`id_restaurante`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Filtros para la tabla `tablaprecios`
--
ALTER TABLE `tablaprecios`
ADD CONSTRAINT `tablaprecios_ibfk_1` FOREIGN KEY (`id_restaurante`) REFERENCES `tablarestaurantes` (`id_restaurante`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Filtros para la tabla `tablarestaurantes`
--
ALTER TABLE `tablarestaurantes`
ADD CONSTRAINT `tablarestaurantes_ibfk_2` FOREIGN KEY (`nombre`) REFERENCES `tablausuarios` (`login`) ON DELETE NO ACTION ON UPDATE NO ACTION;
Ahora necesito hacer un INSERT a todas las tablas, lo tenía hecho tal que así:
function alta($pdo, $altanombre, $altalocalidad, $altatelefono, $altaprimerprimero, $altasegundoprimero, $altatercerprimero, $altaprimersegundo, $altasegundosegundo, $altatercersegundo, $altaprimerpostre, $altasegundopostre, $altatercerpostre, $altacafe, $altapan, $altaprecio, $altalatitud, $altalongitud, $altapassword){
$sentencia = $pdo->prepare("INSERT INTO `tablarestaurantes`(`nombre`, `telefono`, `localidad`, `latitud`, `longitud`) VALUES ('".$altanombre."',".$altatelefono.",'".$altalocalidad."',".$altalatitud.",".$altalongitud.")");
$sentencia->execute();
$sentencia2 = $pdo->prepare("INSERT INTO `tablaplatos`(`nombre`, `primerprimero`, `segundoprimero`, `tercerprimero`, `primersegundo`, `segundosegundo`, `tercersegundo`, `primerpostre`, `segundopostre`, `tercerpostre`, `cafe`, `pan`) VALUES ('".$altanombre."','".$altaprimerprimero."','".$altasegundoprimero."','".$altatercerprimero."','".$altaprimersegundo."','".$altasegundosegundo."','".$altatercersegundo."','".$altaprimerpostre."','".$altasegundopostre."','".$altatercerpostre."','".$altacafe."',".$altapan.")");
$sentencia2->execute();
$sentencia3 = $pdo->prepare("INSERT INTO `tablaprecios`(`nombre`, `precio`) VALUES ('".$altanombre."',".$altaprecio.")");
$sentencia3->execute();
$sentencia4 = $pdo->prepare("INSERT INTO `tablausuarios`(`login`, `password`) VALUES ('".$altanombre."','".$altapassword."')");
$sentencia4->execute();
}
Pero en el momento de hacer la relacion con las tablas me dice esto:
Sé que antes me dejaba porq no estaban las tablas relacionadas, y ahora no me deja por eso mismo...
¿¿Cómo debería de ser la consulta???
Gracias.
Valora esta pregunta


0