consulta sql en switch
Publicado por Susana (16 intervenciones) el 27/03/2008 10:08:09
Hola,
estoy trabjando con mysql y php y estoy atascada desde hace dias con una aplicacion,tengo que sacar una tabla con los 10 ultimos movimientos de los usuarios(son alumnos que realizan cursos)tengo un campo llamado accion donde tengo un switch que depende de lo que sea pone una cosa u otra:
switch($registro["action"])
{
case "pre-view":
$ver="INDICE DEL CURSO";
echo "<td>".$ver."</td>";
break 1;
case "view":
if($registro["action"]=="view" and $registro["id"]=="1")
{
$vertema="PAGINA DE INICIO";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="resource")
{
$vertema="DESCARGANDO FICHERO";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="feedback")
{
$vertema="ENCUESTA";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="assignment")
{
$vertema="EJERCICIOS";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="quiz")
{
$vertema="EXAMEN";
echo "<td>".$vertema."</td>";
}
else
{
$vertema="TEMA";
echo "<td>".$vertema."</td>";
}
break 1;
case "logout":
$desc="PAGINA DE INICIO:
DESCONECTANDO";
echo "<td>".$desc."</td>";
break 1;
case "user report":
$informe="INFORME DE USUARIO";
echo "<td>".$informe."</td>";
break 1;
}
Hasta aqui bien porque esto me lo hace perfectamente,el problema es que tengo otro campo llamado module y necesito sacar con consultas sql datos para que me los ponga dependiendo tambien de este campo (nombre del tema,nombre del examen,nombre del ejercicio...) y tengo esto(pongo solo tres cases porque son un monton y nos eternizariamos:)):
switch($registro["module"])
{
case "course":
$nombre_curso="SELECT DISTINCT
`ocho_course`.`fullname`
FROM
`ocho_log`
Inner Join `ocho_user` ON `ocho_log`.`userid` = `ocho_user`.`id`
Inner Join `ocho_course` ON `ocho_course`.`id` = `ocho_log`.`course`
WHERE
`ocho_user`.`id`=".$registro["usuario"]." and
`ocho_course`.`id` <> 1";
$resultado=mysql_query($nombre_curso);
$curso=mysql_fetch_array($resultado);
echo "<td>".$curso["fullname"]."</td>";
break 1;
case "scorm":
$nombre_tema="SELECT DISTINCT
`ocho_scorm`.`name`
FROM
`ocho_log`
Inner Join `ocho_user` ON `ocho_log`.`userid` = `ocho_user`.`id`
Inner Join `ocho_course` ON `ocho_log`.`course` = `ocho_course`.`id`
Inner Join `ocho_scorm` ON `ocho_log`.`info` = `ocho_scorm`.`id` AND `ocho_scorm`.`course` = `ocho_course`.`id`
where
`ocho_user`.`id`=".$registro["usuario"]."
order by
`ocho_log`.`time` desc limit 1";
$result=mysql_query($nombre_tema);
$tema=mysql_fetch_array($result);
echo "<td>".$tema["name"]."</td>";
break 1;
case "quiz":
$nombre_examen="SELECT DISTINCT
`ocho_quiz`.`name`
FROM
`ocho_log`
Inner Join `ocho_user` ON `ocho_log`.`userid` = `ocho_user`.`id`
Inner Join `ocho_course` ON `ocho_log`.`course` = `ocho_course`.`id`
Inner Join `ocho_quiz` ON `ocho_course`.`id` = `ocho_quiz`.`course` AND `ocho_log`.`info` = `ocho_quiz`.`id`
where
`ocho_user`.`id`=".$registro["usuario"]."
order by
`ocho_log`.`time` desc limit 1";
$resulta=mysql_query($nombre_examen);
$examen=mysql_fetch_array($resulta);
echo "<td>".$examen["name"]."</td>";
break 1;
}
Todo esto lo tengo dentro de un while claro para que me vaya sacando los registros en una tabla pero solo me saca 3 registros o 1 dependiendo del alumno,se que es un poco lio,espero haberme explicado bien,me podriais ayudar??
Muchisimas gracias por adelantado:))
estoy trabjando con mysql y php y estoy atascada desde hace dias con una aplicacion,tengo que sacar una tabla con los 10 ultimos movimientos de los usuarios(son alumnos que realizan cursos)tengo un campo llamado accion donde tengo un switch que depende de lo que sea pone una cosa u otra:
switch($registro["action"])
{
case "pre-view":
$ver="INDICE DEL CURSO";
echo "<td>".$ver."</td>";
break 1;
case "view":
if($registro["action"]=="view" and $registro["id"]=="1")
{
$vertema="PAGINA DE INICIO";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="resource")
{
$vertema="DESCARGANDO FICHERO";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="feedback")
{
$vertema="ENCUESTA";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="assignment")
{
$vertema="EJERCICIOS";
echo "<td>".$vertema."</td>";
}
elseif($registro["action"]=="view" and $registro["module"]=="quiz")
{
$vertema="EXAMEN";
echo "<td>".$vertema."</td>";
}
else
{
$vertema="TEMA";
echo "<td>".$vertema."</td>";
}
break 1;
case "logout":
$desc="PAGINA DE INICIO:
DESCONECTANDO";
echo "<td>".$desc."</td>";
break 1;
case "user report":
$informe="INFORME DE USUARIO";
echo "<td>".$informe."</td>";
break 1;
}
Hasta aqui bien porque esto me lo hace perfectamente,el problema es que tengo otro campo llamado module y necesito sacar con consultas sql datos para que me los ponga dependiendo tambien de este campo (nombre del tema,nombre del examen,nombre del ejercicio...) y tengo esto(pongo solo tres cases porque son un monton y nos eternizariamos:)):
switch($registro["module"])
{
case "course":
$nombre_curso="SELECT DISTINCT
`ocho_course`.`fullname`
FROM
`ocho_log`
Inner Join `ocho_user` ON `ocho_log`.`userid` = `ocho_user`.`id`
Inner Join `ocho_course` ON `ocho_course`.`id` = `ocho_log`.`course`
WHERE
`ocho_user`.`id`=".$registro["usuario"]." and
`ocho_course`.`id` <> 1";
$resultado=mysql_query($nombre_curso);
$curso=mysql_fetch_array($resultado);
echo "<td>".$curso["fullname"]."</td>";
break 1;
case "scorm":
$nombre_tema="SELECT DISTINCT
`ocho_scorm`.`name`
FROM
`ocho_log`
Inner Join `ocho_user` ON `ocho_log`.`userid` = `ocho_user`.`id`
Inner Join `ocho_course` ON `ocho_log`.`course` = `ocho_course`.`id`
Inner Join `ocho_scorm` ON `ocho_log`.`info` = `ocho_scorm`.`id` AND `ocho_scorm`.`course` = `ocho_course`.`id`
where
`ocho_user`.`id`=".$registro["usuario"]."
order by
`ocho_log`.`time` desc limit 1";
$result=mysql_query($nombre_tema);
$tema=mysql_fetch_array($result);
echo "<td>".$tema["name"]."</td>";
break 1;
case "quiz":
$nombre_examen="SELECT DISTINCT
`ocho_quiz`.`name`
FROM
`ocho_log`
Inner Join `ocho_user` ON `ocho_log`.`userid` = `ocho_user`.`id`
Inner Join `ocho_course` ON `ocho_log`.`course` = `ocho_course`.`id`
Inner Join `ocho_quiz` ON `ocho_course`.`id` = `ocho_quiz`.`course` AND `ocho_log`.`info` = `ocho_quiz`.`id`
where
`ocho_user`.`id`=".$registro["usuario"]."
order by
`ocho_log`.`time` desc limit 1";
$resulta=mysql_query($nombre_examen);
$examen=mysql_fetch_array($resulta);
echo "<td>".$examen["name"]."</td>";
break 1;
}
Todo esto lo tengo dentro de un while claro para que me vaya sacando los registros en una tabla pero solo me saca 3 registros o 1 dependiendo del alumno,se que es un poco lio,espero haberme explicado bien,me podriais ayudar??
Muchisimas gracias por adelantado:))
Valora esta pregunta


0