Current Path : /data/web/virtuals/51568/virtual/www/knihovna/lidi/ |
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>