Your IP : 18.222.182.191


Current Path : /data/web/virtuals/51568/virtual/www/knihovna/lidi/
Upload File :
Current File : /data/web/virtuals/51568/virtual/www/knihovna/lidi/nacti.php

<?php
 
if (isSet($_POST["typ"])){$typ = trim($_POST["typ"]);} else {$typ = 'xxx';}  ?>
<div class="card m-2">
    <div class="card-header bg-primary h5 text-white">
        <?php echo ($typ == 'u') ? "Aktualizace seznamu učitelů" : "Aktualizace seznamu žáků";?>   
    </div>
    <div class="card-body">
      <form id="formSelectData" action="" method="POST" enctype="multipart/form-data" typ-souboru="<?= $typ?>">
        <input type="hidden" name="typ" value="<?= $typ?>">
        <div class="form-group">
            <label for="fileCSV">Načtení dat z externího souboru (kódování UTF-8)<br>
            Očekávaná struktura: 
            <?php if ($typ == 'u'){ ?>
                 <strong>intern_kod, prijmeni, jmeno</strong>
               <?php } else {             ?>
                 <strong>intern_kod, prijmeni, jmeno, trida</strong> 
               <?php }?>            
            </label>
            <div class="custom-file">
                <input type="file" accept=".csv" class="custom-file-input" name="fileCSV" id="fileCSV"
                    onchange="loadFile()"> <label id="fileCSVname" class="custom-file-label" for="fileCSV">
                    vyber CSV soubor s daty</label>
            </div>
        </div>        
        <div class="row">
          <div class="col-8">
             <button id="btnSubmit" class="btn btn-primary mt-3 mb-2 d-none" type="submit" >Ulož níže zobrazené do databáze</button>  
          </div>
          <div class="col-4 text-right pt-4" id="idPocetCSV"></div>
        </div>
        <div class="alert alert-info d-none" id="idJakSeNacte">
           <?php if ($typ == 'u') {?>
               Pokud se některý z učitelů v nově importované tabulce nevyskytuje, bude jeho stávající záznam označen jako neaktivní.  
           <?php } else {?>
               Pokud se některý z žáků v nově importované tabulce nevyskytuje, bude jeho stávající záznam označen jako neaktivní.<br>
               Pokud došlo ke změně označení třídy (jiný školní rok), projeví se u žáků tato změna.  
           <?php } ?> 
        </div>
        
        
        <!--div id="rbJakNaplnit" class="form-group row d-none">
            <label class="col-4">Jak přidat záznamy do databáze</label>
            <div class="col-8">
                <div class="custom-control custom-radio custom-control-inline">
                    <input name="jakNaplnit" id="jakNaplnit0" type="radio" class="custom-control-input" value="0">
                    <label for="jakNaplnit0" class="custom-control-label">existující ponechat</label>
                </div>
                <div class="custom-control custom-radio custom-control-inline">
                    <input name="jakNaplnit" id="jakNaplnit1" type="radio" class="custom-control-input" value="1">
                    <label for="jakNaplnit1" class="custom-control-label">existující přepsat</label>
                </div>
                <div class="custom-control custom-radio custom-control-inline">
                    <input name="jakNaplnit" id="jakNaplnit2" type="radio" class="custom-control-input" value="2"
                        checked>
                    <label for="jakNaplnit2" class="custom-control-label">nejprve vyprázdnit</label>
                </div>
            </div>
        </div-->
        <div id="file"></div>
        </form>

    </div>

</div>

<script src="js/jquery.csv.min.js"></script>
<script>
    async function loadFile() {
        let soubory = document.getElementById("fileCSV"),
            soubor = soubory.files[0],
            typ = $("#formSelectData").attr("typ-souboru");
        $("#idJakSeNacte").removeClass("d-none");
        if (soubory.files.length < 1) {
            $("#file").html('');
            $("#btnSubmit").addClass("d-none");
            $("#rbJakNaplnit").addClass("d-none");
            $("#fileCSVname").html("");
        } else {
            $("#btnSubmit").removeClass("d-none");
            $("#rbJakNaplnit").removeClass("d-none");
            
            
            $("#fileCSVname").html(soubor.name);
            let obsah = await soubor.text(),
                data = $.csv.toObjects(obsah, {
                    separator: ';'
                }),
                propertyNames = Object.getOwnPropertyNames(data[0]), 
                zobrazData = '';
                if  (propertyNames[1].toLowerCase() != 'prijmeni'){
                  zobrazData += `<div class="alert alert-danger">Zdá se, že zvolený soubor nemá očekávanou strukturu.</div>`;
                }
                
                if (typ == 'u'){
                  zobrazData += 
                  `<span class="text-muted form-text">První řádek by měl obsahovat názvy polí (<strong>intern_kod, prijmeni, jmeno</strong>)</span>`;
                } else {
                  zobrazData += 
                `<span class="text-muted form-text">První řádek by měl obsahovat názvy polí (<strong>intern_kod, prijmeni, jmeno, trida</strong>)</span>`; 
                }
                zobrazData += 
                `<small class="text-muted form-text">Pokud v zobrazené tabulce jsou místo nabodeníčkových znaků jiné, není kódování CSV souboru UTF8 (kódování nastavíš v exportu v Bakalářích).</small>`; 
                zobrazData +=
                `<div class="mt-4 " style="max-height: 360px; overflow-y: auto !important; "> 
                <table class="table table-striped table-sm">`;
            zobrazData += '<tr style="background-color: rgba(102, 204, 255, 0.5)"><td>#</td>';
            for (let i = 0; i < propertyNames.length; i++) {
                zobrazData += '<td>' + propertyNames[i] + '</td>';
            }
            zobrazData += '</tr>';
            for (let i = 0; i < data.length; i++) {
                zobrazData += `<tr><td>${i+1}</td>`;
                for (let j = 0; j < propertyNames.length; j++) {
                    zobrazData += '<td>' + data[i][propertyNames[j]] + '</td>';
                }
                zobrazData += '</tr>';
            }
            zobrazData += `</table>
            </div>`;
            $("#idPocetCSV").html('Záznamů: ' + data.length);
            $("#file").html(zobrazData);
        }
    }
 
    $("#formSelectData").on('submit', function (e) {
        e.preventDefault();
        $("#file").html(`<div class="alert alert-success">Provádím aktualizaci ...</div>`); 
        let typ = $("#formSelectData").attr("typ-souboru");
        $.ajax({
            url: "lidi/lidi-uloz-DB.php",
            type: "POST",
            data: new FormData(this),
            contentType: false,
            cache: false,
            processData: false,
            success: function (result) {
                if (result.length < 5) {
                  $("#btnSubmit").addClass("d-none");
                  $("#rbJakNaplnit").addClass("d-none");
                  $("#fileCSVname").html("");
                  $("#idJakSeNacte").addClass("d-none");
                  $("#idPocetCSV").html("");                  
                  $("#file").html(`<div class="alert alert-success">Aktualizace dokončena.</div>`); 
                  if (typ == 'u'){
                    $.ajax({
                      url: "lidi/ucitele-seznam.php",
                      type: 'POST',
                      dataType: 'HTML',
                      data: {},
                      success: function (result) {
                          $("#tabulkaUcitele").html(result);
                      }
                    }); 
                  }
                  if (typ == 'z'){
                    $.ajax({
                      url: "lidi/zaci-seznam.php",
                      type: 'POST',
                      dataType: 'HTML',
                      data: {},
                      success: function (result) {
                          $("#tabulkaZaci").html(result);
                      }
                    }); 
                  }                  
              
                }
            }
        });
    });

</script>
</body>

</html>