Hola amigos, espero que me puedan ayudar y también que esté bien puesto en tema Mysql dentro del foro.
Trabajo con PHP. Tengo el siguiente problema, tengo un conjunto de datos, donde se utilizan 3 tablas, una la principal, llamada "sesiones_ints". esta tabla tiene dos tablas relacionadas (FK) sesiones_ints_has_idiomas y sesiones_ints_has_servicios. Estoy haciendo el proceso en que modifico la actividad, como tengo los datos de la tabla principal, esos puedo hacer un simple UPDATE, pero cómo hago para actualizar si el usuario sacó un idioma del <select> o si desmarcó un checkbox de la lista de servicios disponibles.
La solución que le quiero dar es un proceso donde:
1) UPDATE los datos de la tabla 'sesiones_ints'.
2) DELETE los registros relacionados al 'id_sesion_int' en la tabla 'sesiones_ints_has_idiomas'.
3) INSERT los valores transmitidos por $_POST en la tabla 'sesiones_ints_has_idiomas'.
Y así sucesivamente con el otro proceso relativo a los servicios.
Pero me da el error
"Unknown column 'id_sesion_int' in 'where clause'". (Cosa que está correcto y si elimino el resto de los SQL funciona perfecto).
Intenté probando con mysqli_multi_query, pero creo que es solo para SELECTS.
Me imagino que debería ir algún tipo de transacción, la cual no se cual puede ser
¿Cómo han hecho ustedes el mismo proceso?
Les dejo el código.
Saludos y muchas gracias.
Código PHP:
Ver originalfunction actualizar {
// todos los $_POST respectivos, esta función es llamada del programa principal
$sql="UPDATE sesiones_ints SET
nombre_corto = '$ncorto',
nombre_largo = '$nlargo',
nro_int = '$canint',
tematica = '$tema',
fecha = '$fechactividad',
recinto = '$lugar',
direccion_recinto = '$direccion',
id_comuna = '$idcomuna',
id_region = '$idregion',
id_jornada = '$jornada',
tarifa_cliente = '$precioint',
id_moneda = '$moneda',
fecha_modificacion = now(),
id_idioma_destino = '$idiomadestino'
WHERE id_sesion_int = $id";
//2) delete idiomas de sesiones_ints_has_idiomas con id_sesion_int
$sqldel = "DELETE FROM sesiones_ints_has_idiomas WHERE id_sesion_int = $id";
//2.1) insert en sesiones_int_has_idiomas los actuales idiomas
$idiomaorigen = $_POST['recibeidioma'];
foreach ($idiomaorigen as $x){
$sqlidioma=("INSERT INTO sesiones_ints_has_idiomas (
sesiones_ints_id_sesion_int, idiomas_id_idiomaç
) VALUES (
'$id','$x'
)"
);
}
//3) delete sesiones_ints_has_servicios con id_sesion_int
$sqldel2 = "DELETE FROM sesiones_ints_has_servicios WHERE id_sesion_int = $id";
//3.1) insert en sesiones_ints_has_servicios los nuevos valores
$servelej=$_POST['chkSeleccionar'];
$cant=$_POST['cantServicio'];
for($i = 0; $i<count($servelej); $i++) {
$sqlserv=("INSERT INTO sesiones_ints_has_servicios (
id_sesion_int,
id_servs_provs_ses,
cant
) VALUES (
'$id',
'$servelej[$i]',
'$cant[$i]')");
}
}