Foros del Web » Programando para Internet » PHP »

no inicializa session

Estas en el tema de no inicializa session en el foro de PHP en Foros del Web. estoy intentando obtener la nota de diferentes alumnos entonces envio la consulta y creo la session total, pero al momento de ejecutarse me indica q ...
  #1 (permalink)  
Antiguo 26/03/2013, 16:45
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 15 años, 4 meses
Puntos: 2
Pregunta no inicializa session

estoy intentando obtener la nota de diferentes alumnos entonces envio la consulta y creo la session total, pero al momento de ejecutarse me indica q la variable total no esta creada y me arroja error, acaso no puedo crear una session dentro de un while?
Cita:
function obtenerReporte03AD($idAlumno,$idcursoasig,$idnivel ) {
//obtengo los aciertos
$resultado = mysql_query("select examen.idExamen, examen.examen, count(*) as cuenta
from preguntaxalumnoe

inner join alumno
on alumno.idAlumno = preguntaxalumnoe.idAlumno
inner join preguntaxexamen
on preguntaxalumnoe.idPreguntaxExamen = preguntaxexamen.idPreguntaxExamen
inner join examen
on preguntaxexamen.idExamen = examen.idExamen
inner join leccionxnivel
on leccionxnivel.idLeccionxNivel=examen.idLeccionxNiv el
inner join cursoasig
on examen.idCursoAsig = cursoasig.idCursoAsig
inner join anioxsemestre
on cursoasig.idAnioxSemestre = anioxsemestre.idAnioxSemestre
inner join anio
on anioxsemestre.idAnio = anio.idAnio
inner join semestre
on anioxsemestre.idSemestre = semestre.idSemestre
where alumno.idAlumno = '$idAlumno' and cursoasig.idCursoAsig = '$idcursoasig' and leccionxnivel.idNivel = '$idnivel' and idAcierto='1'
group by examen.idExamen");

$listadoDatosReporte03 = 0;
while ($fila = mysql_fetch_assoc($resultado)) {
$idExamen = $fila["idExamen"];

//obtengo el total de preguntas x examen
$resultado2 = mysql_query("select count(*) as tp from preguntaxexamen inner join examen on examen.idExamen=preguntaxexamen.idExamen inner join leccionxnivel on leccionxnivel.idLeccionxNivel=examen.idLeccionxNiv el where preguntaxexamen.idExamen='$idExamen' and leccionxnivel.idNivel='$idnivel' group by preguntaxExamen.idExamen");
$fila2 = mysql_fetch_assoc($resultado2);

$_SESSION['total'] = $fila2["tp"];
}
$listadoDatosReporte03=round((($fila["cuenta"]*20)/$_SESSION['total']),2);
return $listadoDatosReporte03;
//unset($_SESSION['total']);
pero la estrucutra de la consulta pues quizas no se entienda sin eso pero mi inconveniente esta en $_SESSION['total'].
gracias por la ayuda
  #2 (permalink)  
Antiguo 26/03/2013, 16:49
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: no inicializa session

Estas ocupando session_start()?? porque debes colocarlo al inicio de tu script.
No podes hacer unset si no has setiado la sesion, me refiero a que antes hayas refrescado la pagina o traigas la sesion de otro script...
  #3 (permalink)  
Antiguo 26/03/2013, 16:50
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 18 años, 1 mes
Puntos: 22
Respuesta: no inicializa session

Deberías crear la sesión fuera del While y dentro del While solo asignar valores, puedes usar print_r($_SESSION); para revisar que datos se están almacenando en la sesión.
  #4 (permalink)  
Antiguo 26/03/2013, 16:52
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: no inicializa session

la session si esta declarada, si la pongo start_session(); al inicio del script me arroja un mensaje de error, diciendo q ya se inicio la session y q esa session a sido ignorada.
por eso he comentado el unset. si intento imprimir la session en otro pagina tambien me sale q no ha sido declarada
  #5 (permalink)  
Antiguo 26/03/2013, 16:54
Avatar de kalvinman  
Fecha de Ingreso: octubre-2006
Ubicación: Bogota Colombia
Mensajes: 849
Antigüedad: 18 años, 1 mes
Puntos: 22
Respuesta: no inicializa session

en ese caso puedes usar una condicional

Código PHP:
Ver original
  1. if(isset($_SESSION)) {} else { session_start(); }
  #6 (permalink)  
Antiguo 26/03/2013, 17:03
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: no inicializa session

modificando me quedaria asi:
Código PHP:
$listadoDatosReporte03 0;
        while (
$fila mysql_fetch_assoc($resultado)) {
            
$idExamen $fila["idExamen"];
            
            
//obtengo el total de preguntas x examen
                    
$resultado2 mysql_query("select count(*) as tp from preguntaxexamen inner join examen on examen.idExamen=preguntaxexamen.idExamen inner join leccionxnivel on  leccionxnivel.idLeccionxNivel=examen.idLeccionxNivel where preguntaxexamen.idExamen='$idExamen' and leccionxnivel.idNivel='$idnivel' group by preguntaxExamen.idExamen");
                    
$fila2 mysql_fetch_assoc($resultado2);
                    
                    if(isset(
$total)) { $total $fila2["tp"]; } else { $total $fila2["tp"]; }
                    
        }
        if (empty(
$total))
            {
                
$listadoDatosReporte03=0;
            }
        else
            {
                
$listadoDatosReporte03=round((($fila["cuenta"]*20)/$total),2);
            }
        return 
$listadoDatosReporte03
pero ahi no me da mas de 1 solo registro cuando son 13 alumnos, estoy utilizando el firebug pero no me arroja nada
  #7 (permalink)  
Antiguo 26/03/2013, 17:04
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: no inicializa session

donde invoco a la consulta es aqui
Código PHP:
foreach ($listadoAlumnosxCursoXML as $objNotas) {
        ?>
        <tr>
            <td><?php echo $numeracion?></td>
            <td><?php echo $objNotas->getObjAlumno()->getApellidosAlu().', '.$objNotas->getObjAlumno()->getNombresAlu(); ?></td>
            <td align='right'>
                <?php 

                
/*busco examenes por niveles*/
                
$nota1 $objPreguntaxAlumnoAD->obtenerReporte03AD($objNotas->getObjAlumno()->getIdAlumno(),$idCursoAsig,1);
                    return 
$nota1;
                echo 
"$nota1";
                
                
?>
            </td>
            <td align='right'>
                <?php 

                $nota2 
$objPreguntaxAlumnoAD->obtenerReporte03AD($objNotas->getObjAlumno()->getIdAlumno(),$idCursoAsig,2);
                    return 
$nota2;
                echo 
"$nota2";
                
?>
            </td>
            <td align='right'>
                <?php 

                $nota3 
$objPreguntaxAlumnoAD->obtenerReporte03AD($objNotas->getObjAlumno()->getIdAlumno(),$idCursoAsig,3);
                    return 
$nota3;
                echo 
"$nota3";
            
/*fin*/
                
?>
            </td>
            <td align='right'>
                <?php echo round(($nota1+$nota2+$nota3)/3,2); ?>
            </td>
        </tr>
        <?php
        $numeracion
++;
  #8 (permalink)  
Antiguo 28/03/2013, 09:31
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: no inicializa session

gracias lo pude solucionar; tenia q quitar el return.

Etiquetas: mysql, select, session
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:08.