使用ajax,javascript和PHPExcel将数据保存在.xls文件中

时间:2018-04-19 20:41:16

标签: javascript ajax phpexcel

我正在练习ajax和javascript,并出现以下问题。 我需要通过POST发送2个文本输入和1个下拉列表(选择)的值,并将该数据保存在我在服务器上创建的excel文件中。 .php文件使用PHPExcel提供的类。 我点击提交按钮,它什么也没做。

的index.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Final</title>
    <link rel="stylesheet" href="/css/styles.css" media="all">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
</head>
<body>
<form action="/participantes/participantes.php" method="post" enctype="multipart/form-data">
    <div class="main-data">
        <p>
        <label for="nombre">NOMBRE:</label>
        <input type="text" name="nombre" id="nombre" placeholder="Escrib&iacute; tu nombre" value="" required />
        </p>
        <p>
        <label for="apellido">APELLIDO:</label>
        <input type="text" name="apellido" id="apellido" placeholder="Escrib&iacute; tu nombre" value="" required />
        </p>
        <p>
        <label for="oficina">OFICINA:</label>
        <select name="oficina" id="oficina" class="cajas" required>
        <option value="">Seleccion&aacute; tu oficina</option>
        <option value="1">SG</option>
        <option value="2">SRIC</option>
        <option value="3">SCAL</option>
        </select>
        </p>
        <input type="submit" value="Guardar" id="save" name="save" onclick="save();"/>
    </div>
</form>
    <script src="/js/scripts.js"></script>
    <script src="/js/md5.js"></script>
</body>
</html>

scripts.js中

    function save() {
    // Recogemos los datos del formulario
    var nombre = document.getElementById('nombre').value.toUpperCase();
    var apellido = document.getElementById('apellido').value.toUpperCase();
    var oficina = document.getElementById('oficina').value.toUpperCase();

    // Definimos los parámetros que vamos a enviar
    var parametros = "nombre="+nombre+"&apellido="+apellido+"&oficina="+oficina;

    // Definimos la URL que vamos a solicitar via Ajax
    var url = "http://localhost/participantes/participantes.php";

    // Creamos un nuevo objeto encargado de la comunicación
    var xhttp = new XMLHttpRequest();

    // xhttp.onreadystatechange = function() {
    //     if (this.readyState == 4 && this.status == 200) {
    //         console.log(this.response);
    //    }
    // };

    // Definimos como queremos realizar la comunicación
    xhttp.open("POST", url, true);
    // Ponemos las cabeceras de la solicitud como si fuera un formulario, necesario si se utiliza POST
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    //Enviamos la solicitud junto con los parámetros
    xhttp.send(parametros);
    console.log(url+parametros);
}

participantes.php

<?php
    // Función para limpiar strings
    function cleanFields($string) {
        // Elimina espacios en blanco (u otro tipo de caracteres) del inicio y el final de la cadena
        $string = trim($string);
        // Retira las etiquetas HTML y PHP de una cadena
        $string = strip_tags($string);
        // Convierte caracteres especiales en entidades HTML
        $string = htmlspecialchars($string);
        // Si están activas las magic_quotes revierte su acción mediante stripslashes
        if(get_magic_quotes_gpc()){
          $string = stripslashes($string);
        }
        return($string);
    }

    if(isset($_POST["save"])) {
        //Limpiar todos los campos recibidos
        $fecha = date('d/m/Y');
        $nombre = strtoupper(cleanFields($_POST["nombre"]));
        $apellido = strtoupper(cleanFields($_POST["apellido"]));
        $oficina = strtoupper(cleanFields($_POST["oficina"]));
        $codigo = md5($nombre.$apellido);

        /** Include PHPExcel */
        require_once '../Classes/PHPExcel.php';
        require_once '../Classes/PHPExcel/IOFactory.php';

        $objPHPExcel = PHPExcel_IOFactory::load("participantes.xlsx");
        $objPHPExcel->setActiveSheetIndex(0);
        $row = $objPHPExcel->getActiveSheet()->getHighestRow()+1;
        //echo $row;
        $objPHPExcel->getActiveSheet()->SetCellValue('A'.$row, $fecha);
        $objPHPExcel->getActiveSheet()->SetCellValue('B'.$row, $nombre);
        $objPHPExcel->getActiveSheet()->SetCellValue('C'.$row, $apellido);
        $objPHPExcel->getActiveSheet()->SetCellValue('D'.$row, $oficina);
        $objPHPExcel->getActiveSheet()->SetCellValue('E'.$row, $codigo);
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
        $objWriter->save('participantes.xlsx');
    }
?>

0 个答案:

没有答案