Ver Mensaje Individual
  #52 (permalink)  
Antiguo 14/01/2014, 16:49
Avatar de Briss
Briss
 
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 4 meses
Puntos: 12
Respuesta: Ajustar codigo

Cita:
Iniciado por Alexis88 Ver Mensaje
Ya no es necesario utilizar el constructor foreach porque con el implode, transformas el array en una cadena y como le insertas comas y comillas simples, queda lista para ser insertada en la consulta. No hagas esto: echo $materias_elegidas, así no se imprimen los valores de un array y no es necesario hacerlo en este caso.

Si quisieras verificar que alguno de los cursos tiene un requisito en la lista de cursos seleccionados, por ejemplo:

Cursos seleccionados:
- Mat3 (Requisito: Mat2) [Suponiendo que NO se aprobó Mat2]
- Len5 (Requisito: Len4) [Suponiendo que se aprobó Len4]
- Fis2 (Requisito: Fis1) [Suponiendo que se aprobó Fis1]
- Mat2 (Requisito: Mat1) [Suponiendo que se aprobó Mat1]

Código PHP:
Ver original
  1. $cursosSeleccionados = array(
  2.                                 array("Cur" => "Mat3", "Req" => "Mat2"),
  3.                                 array("Cur" => "Len5", "Req" => "Len4"),
  4.                                 array("Cur" => "Fis2", "Req" => "Fis1"),
  5.                                 array("Cur" => "Mat2", "Req" => "Mat1"),
  6.                             );
  7.                            
  8. foreach ($cursosSeleccionados as $curso){
  9.     $req = $curso["Cur"];
  10.     foreach ($cursosSeleccionados as $c){
  11.         if ($c["Req"] == $req){
  12.             echo $req . " es requisito de " . $c["Cur"];
  13.             break;
  14.         }
  15.     }
  16. }

Esto imprimiría lo siguiente:

Código HTML:
Ver original
  1. Mat2 es requisito de Mat3

De este modo, verificas curso por curso si alguno de ellos es requisito de otro que esté en lista. Ten en cuenta que también tendrás que verificar que se haya aprobado el curso requisito de uno que esté en lista y cuyo requisito no se encuentre en lista, por ejemplo, que se haya aprobado Len4 para poder llevar Len5, a pesar de que Len4 no está en lista.

Y antes de que me lo preguntes, los requisitos de los cursos los obtienes con la query que te dio dashtrash.

Saludos
Gracias Alexis por los datos.... mira con esto
Código PHP:
 $listaMaterias "('" implode("','"$materias_elegidas) . "')";
 echo 
$listaMaterias;
$query="SELECT 
                r.NOMBRE, r.ID_MATERIA, m.NOMBRE, m.ID_MATERIA 
        FROM 
                materia2 m LEFT JOIN materia2 r 
        ON 
                m.REQUISITO = r.ID_MATERIA
        WHERE 
                m.ID_MATERIA IN $listaMaterias 
        AND 
                (r.ID_MATERIA IS NOT NULL AND r.ID_MATERIA NOT IN $listaMaterias)"
;

    
$consulta = @mysql_query($query$conexion) or die(mysql_error());
 
if (
mysql_num_rows($consulta)){
    echo 
"Estas son las materias requisito encontradas en su selección: <br />";
 
    while (
$row mysql_fetch_array($consulta))
     
        echo 
$row["NOMBRE"] .  "<br />";
        


Ya me arroja lo que quiero es decir si no se selecciono el requisito ... manda el mensaje... ahora intentaba hacer la otra consulta para ver los q selecciono el usuario.... por eso preguntaba... no hay una manera para comparar mis dos consultas.... y por ejemplo el valor en comun... se omita al mostrar mis datos de la segunda consulta.... es decir por ejemplo la primera me arrojo taller II... la segunda query muestra los que seleccione... por ejemplo matematizas y taller II... aca tendria que quitar taller II.... y si tienes razon en lo que dices tendria que checar con otra tabla en este caso calificaciones para que el requisito halla sido aprobado....