La verdad es que no sé que estás haciendo (o mejor.. para qué sirve)... lo que te puedo decir son algunas cosas ahora que ví tu código:
-Creo que ese if ($row["id_tipo"]==1) no es necesario, pues puedes incluirlo en la consulta sql con un "AND" así:
"select id_eval,id_tipo,id_curso from evaluaciones where id_curso='".$curso."'
and id_tipo=1 order by id_eval";
-Otra: si $post_cert est,a inicializado en 0, no hace falta que escribas
$id_cert[$post_cert]=$row["id_eval"];
$post_cert=$post_cert+1;
Bastará con que pongas:
$id_cert[]=$row["id_eval"];
Porque el índice del array definido así se autoincrementa.
-También creo que debes sacar el implode del bucle while para que se ejecute sólo al final.
Yo haría tu código así:
Código PHP:
$sql="select id_eval,id_tipo,id_curso from evaluaciones where id_curso='".$curso."' and id_tipo='1' order by id_eval");
$consulta=mysql_query($sql) or die ("Error en la consulta: ".mysql_error());//Así verificas si se produce error a la hora de la consulta.
$certamen=mysql_num_rows($consulta);//Te devuelve el total de registros encontrados.
while($row=mysql_fetch_array($consulta)){
$cc=1;//para qué sirve??.. si es para indicar que se encontró al menos un registro, puedes verificar que $certamen > 0
$id_cert[]=$row["id_eval"];
}
if($certamen>$maximo){
$maximo=$certamen;
}
$eval_cert=implode("-",$id_cert);
Aunque se puede optimizar más, utilizando count(*) en lugar de num_rows... etc..
Saludos