PHP - Multi select con los registros selected cargados

   
Vista:

Multi select con los registros selected cargados

Publicado por Bauer (6 intervenciones) el 28/05/2015 21:08:37
Buenas tarde noches! Qué tal? Ante la desesperación por algo que pensaba que no me llevaría ningún problema acudo a vuestra ayuda, por la cual os doy de antemano las gracias. Un saludo.


Mi idea es que al cargar la pagina me cargue un multiselect con todos los valores de la tabla ASIGNATURAS y que me ponga el SELECTED en los valores que coincida de la tabla ASIGNATURAS_ALUMN. el valor que hay en el where de la segunda tabla es una variable PHP que me ha venido por post y en la que almaceno el id del alumno. Lo tengo que hacer con select por necesidad. Sé que quedaría mas estético con checkboxes por ejemplo.

Gracias una vez más.


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
29
30
<select multiple id="select_asignaturas" name="select_asignaturas">
<?php
	$SQL_asignaturas_disponibles="SELECT id, asignatura FROM asignaturas";
	$result=$Conexion->query($SQL_asignaturas_disponibles);
 
	$SQL_asignaturas_alumn="SELECT id_asignatura, id_alumn FROM asignaturas_alumn  WHERE id_alumn=".$id_alumno" ;
	$result2=$Conexion->query($SQL_asignaturas_alumn);


	while ($row=$result->fetch())
	{

		while($row2=$result2->fetch())
		{ 
			$n=$row2['id_asignatura'];


			if ($n == $row['id']) 
			{
				$sel= " selected ";
			}
			else 
			{         $sel="";           }
		}

		echo "<option value='".$row['id']."' ".$sel." > ".$row['asignatura']."</option>";

	} ?>

</select>


Lo he probado de mil maneras. Y aunque parezca increible, al menos para mi, si pongo un if en el segundo while me hace más que como lo tengo ahora mismo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Multi select con los registros selected cargados

Publicado por xve (5523 intervenciones) el 28/05/2015 21:52:52
Hola Bauer, creo que lo que estas haciendo no esta del todo bien...

La manera correcta de hacerlo, seria vinculando las dos tablas, para de esta manera, solo recorrer un listado. No se muy bien la estructura de dichas tablas, pero creo que podría ser algo así:

1
2
$SQL="SELECT a.id, a.asignatura,aa.id_asignatura,aa.id_alumn
FROM asignaturas a LEFT JOIN asignaturas_alumn aa ON a.id=aa.id_alumn AND a.asignatura=aa.id_asignatura";

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Multi select con los registros selected cargados

Publicado por Bauer (6 intervenciones) el 28/05/2015 22:08:06
Mmmmmh, no lo veo del todo. quizas no entiendo tu idea o no me expliqué bien. De cualquiet manera gracias.

Lo que pretendo hacer es q en el <select multiple> se cargue toda la tabla de todas las asinaturas disponibles en la tabla asinatura y en ese mismo select multiple señalizar los seleccionados cargados de la tabla asinaturas-alumnos con el atributo selected de los <option> del <select> q indica las asignaturas que tiene el alumno que ponia en el WHERE de la segunda consulta mysql.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Multi select con los registros selected cargados

Publicado por Bauer (6 intervenciones) el 29/05/2015 23:22:41
Buenas noches. Te escribo para comentarte que al final si que lo conseguí. Me quería complicar mucho y no era necesario. Tenías razón. Vinculé las dos tablas con una subconsulta y pintando un 0 con un IFNULL para los registros que no tuvieran valor y funciona a la perfección. Gracias por todo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Multi select con los registros selected cargados

Publicado por xve (5523 intervenciones) el 30/05/2015 08:06:41
Gracias por comentarlos Bauer!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar