tieneAcceso()){ $return["error"] = "No tienes permisos para acceder a esa sección o la sesión caducó."; }else if(!isset($_FILES['archivo']['name'][0])){ $return["error"] = "No se recibieron los datos de los alumnos."; }else{ //$inputFileName =__DIR__. '/tmp/alumnos_tmp.xlsx'; $archivo = $_FILES['archivo']['name'][0]; // Check file size if ($_FILES["archivo"]["size"][0] > 10 * 1024 * 1024) {//en bytes $return["error"] = "El archivo supera los 10MB y no se puede cargar."; $return["json"] = json_encode($return); echo json_encode($return); exit(); } $exts_arr = array("csv"); $dot_arr = explode('.', $archivo); $ext = end($dot_arr); if(!in_array($ext, $exts_arr)){ $return["error"] = "No es una extensión válida. Solo se permiten archivos CSV."; $return["json"] = json_encode($return); echo json_encode($return); exit(); } //-------- $stmt = $pdo->prepare('Select DISTINCT "Carrera_prefijo", "Carrera_id" from fs_planestudio(:nivel, NULL, NULL, true, 0, NULL) ORDER BY "Carrera_prefijo"'); $stmt->bindParam(":nivel", $_SESSION["nivel_id"]); if(!$stmt->execute()){ $return["error"] = "Ocurrió un error al cargar los planes de estudios"; $return["json"] = json_encode($return); echo json_encode($return); exit(); }else{ $plan_rs = $stmt->fetchAll(); } $stmt->closeCursor(); //--------- //$newfilename = "tmp_al_".$_SESSION["gpo_id"].".".$ext; $inputFileName = $_FILES["archivo"]["tmp_name"][0]; /*$alumnoData=array(); $al_old = ""; $i=-1; $file_to_read = fopen($inputFileName, 'r'); while (!feof($file_to_read) ) { $row = fgetcsv($file_to_read, 100, ','); if($row[0]!="" && $row[1]!=""){ if($row[0] != $al_old){ if($al_old != ""){ $alumnoData[$i]["mat_list"] = substr($alumnoData[$i]["mat_list"],0,-1); } if(strpos($row[0],'al')===false) $clave = $row[0];//OK else $clave = substr($row[0],2); $i++; $alumnoData[$i] = array("clave"=>$clave, "mat_list"=>""); $grupoMat = ""; $al_old = $row[0]; } if(stripos( $row[1], "ELECTIVA") === false){ $tmpArr = explode("-", $row[1]); if(count($tmpArr) >= 4){ $shortname = $tmpArr[0]; $mat_id = $tmpArr[3];//OK $grupo = quitaCarrera($plan_rs, $shortname );//OK $alumnoData[$i]["mat_list"] .= $grupo.",".$mat_id.";"; } } } } if($al_old != ""){ $alumnoData[$i]["mat_list"] = substr($alumnoData[$i]["mat_list"],0,-1); } fclose($file_to_read); $return["alumnoData"] = $alumnoData;*/ /*$return["json"] = json_encode($return); echo json_encode($return); exit();*/ try { $pdo->beginTransaction(); $alumnoArr = array(); $row = 1; $omitidoArr = array(); $insertada = 0; $debug = ""; //$debug .= "SELECT * from fi_alumnomaterias_csv(".$data["clave"].", ".$_SESSION["periodo_id"].", ".$data["mat_list"].") ||"; $stmt = $pdo->prepare('SELECT * from fi_alumnomaterias_csv(:clave, :per, :gpo, :mat)'); $stmt->bindParam(":per", $_SESSION["periodo_id"]); $file_to_read = fopen($inputFileName, 'r'); while (!feof($file_to_read) ) { $row = fgetcsv($file_to_read, 100, ','); if($row[0] != "" && $row[1] != ""){ if(stripos( $row[1], "ELECTIVA") === false){ $tmpArr = explode("-", $row[1]); if(count($tmpArr) >= 4){ $shortname = trim($tmpArr[0]); $mat_id = trim($tmpArr[3]);//OK $grupo = trim(quitaCarrera($plan_rs, $shortname ));//OK } if(strpos($row[0],'al')===false) $clave = trim($row[0]);//OK else $clave = substr(trim($row[0]),2); $stmt->bindParam(":clave", $clave); $stmt->bindParam(":gpo", $grupo); $stmt->bindParam(":mat", $mat_id); if(!$stmt->execute()){ $pdo->rollBack(); $return["debug"] = "SELECT * from fi_alumnomaterias_csv(".$clave.", ".$_SESSION["periodo_id"].", '".$grupo."', $mat_id) ||"; $return["error"] = "Ocurrió un error al cargar los planes de estudios"; $return["json"] = json_encode($return); echo json_encode($return); exit(); }else{ $mat_rs = $stmt->fetch(); } switch($mat_rs["fi_alumnomaterias_csv"]){ case 0: $insertada++; break; case 1: $omitidoArr[] = array("clave"=>$clave, "desc"=> "No existe la clave de alumno"); break; case 2: $omitidoArr[] = array("clave"=>$clave, "desc"=> "La materia ".$row[1]." ya está asignada para el alumno"); break; case 3: $omitidoArr[] = array("clave"=>$clave, "desc"=> "No existe la materia o el grupo ".$row[1]." en el periodo ".$_SESSION["periodo_id"]); break; //$debug .= 'SELECT * from fi_alumnomaterias_excel(\''.$clave.'\', '.$_SESSION["periodo_id"].', '.$grupo.', '.$mat_id.')'." |"; } } } } fclose($file_to_read); /*$stmt = $pdo->prepare('SELECT * from fi_alumnomaterias_csv(:clave, :per, :gpo, :mat)'); $stmt->bindParam(":per", $_SESSION["periodo_id"]); foreach($alumnoData as $data){//Carrera / Clave / Nombre completo if(!empty($data["mat_list"])){ $stmt->bindParam(":clave", $data["clave"]); $stmt->bindParam(":gpo", $data["mat_list"]); $stmt->bindParam(":mat", $data["mat_list"]); if(!$stmt->execute()){ $pdo->rollBack(); $return["error"] = "Ocurrió un error al cargar los planes de estudios"; $return["json"] = json_encode($return); echo json_encode($return); exit(); }else{ $mat_rs = $stmt->fetch(); } if($mat_rs["Materia_insertada"]){ $insertada++; }else{ if($mat_rs["Materia_repetida"]){ $omitidoArr[] = array("clave"=>$data["clave"], "desc"=> "Algunas materias ya estaban asignadas"); }else{ $omitidoArr[] = array("clave"=>$data["clave"], "desc"=> "Error al insertar materias para el alumno"); } //$debug .= 'SELECT * from fi_alumnomaterias_excel(\''.$clave.'\', '.$_SESSION["periodo_id"].', '.$grupo.', '.$mat_id.')'." |"; } } }*/ $stmt->closeCursor(); $pdo->commit(); $return["insertados"] = $insertada; $return["omitidosArr"] = $omitidoArr; $return["debug"] = $debug; } catch(PDOException $e) { //$pdo->rollBack(); //header("Location:".$pag."?error=1"); $return["debug"] = "SELECT * from fi_alumnomaterias_csv(".$clave.", ".$_SESSION["periodo_id"].", '".$grupo."', $mat_id) ||"; $return["error"] = $e->getMessage(); //print_r($e); } } $return["json"] = json_encode($return); echo json_encode($return);