$section) { foreach ($section->childs as $kk => $field) { // find the field if ($field->nam == $fkey) { $values = array(); // human readble values if select (comma separated) if ($field->typ == 'select') { $multi = true; if ($inp !='') { $codes = explode(",", $inp); // split coded values foreach ($field->opt as $kkk => $v) { if (in_array($v->id, $codes)) { // check if option is in array $values[] = ($field->nam == 'ccode') ? ($v->id.": ".$v->tag) : $v->tag; } } } } else $multi = false; // return everything in an array return array( 'label' => $field->lab, 'multi' => $multi, 'value' => ($multi ? $values : $inp) ); } } } // if not escaped already, then name return same return array('label' => $fkey, 'multi' => false, 'value' => $inp ); } // Parse anythig from ccode public static function parse_ccode($ckey) { $ccARRAY = json_decode(CODEJSON); foreach ($ccARRAY as $key => $val) { // find the field if ($val->id == $ckey) { // return everything in an array return $val; } } } // Get totals of alla categories ///////////////////////////////////////////// // RETURN array of items (value) per category (array key) // --------------------------------------------------------------------------- public static function get_totals() { $result = array(); $sum = 0; $dbc = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_DBMS); if ($dbc->connect_errno) { echo "Database connection failed; Please try in a few minutes. "; if (TESTING) echo $dbc->connect_error; $dbc->close(); die(); } $dbc->set_charset("utf8"); // prepare statemet $stm = $dbc->prepare("SELECT ccode, count(id) total FROM `items` GROUP BY ccode"); $stm->execute(); // execute query $stm->store_result(); // store result $stm->bind_result($c, $tot); while ($stm->fetch()) { // using md5() you can have any unicode string as key ;) // credit: https://stackoverflow.com/questions/10696067/characters-allowed-in-php-array-keys -> Rob's answer // but newer versions of php (v7+) seem to handle unicide keys nicely $result[$c] = $tot; $sum += $tot; } $result['all'] = $sum; return $result; } // Preview Local Datetime //////////////////////////////////////////////////// // (in Greek format and names ) // --------------------------------------------------------------------------- public static function local_dt($t) { $day = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); $dayL = array("Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"); $mon = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); $monL = array("Ιαν", "Φεβ", "Μαρ", "Απρ", "Μαϊ", "Ιουν", "Ιουλ", "Αυγ", "Σεπ", "Οκτ", "Νοε", "Δεκ"); $tm = array("am", "pm"); $tmL = array("πμ", "μμ"); $r = date("D. j M. Y, h:i:sa", $t); $r = str_replace($day, $dayL, $r); $r = str_replace($mon, $monL, $r); $r = str_replace($tm, $tmL, $r); return $r; } // Part of string // UTF-8 SAFE public static function str_part($str, $len) { return (mb_strlen($str) > $len) ? mb_substr($str, 0, $len-1) ."…" : $str; } public static function make_a_form() { // Script Workflow: // --------------------------------------------------------------------------- // 1. read fields options // 2. generate HTML // 3. generate JS needed // the UI // --------------------------------------------------------------------------- // Fields are grouped in sections // These sections presented in tabs (or accordion if mobile device) // Two (2) sections incduded to inform the user of empty fields or errors // Libraries and FrameWorks used // --------------------------------------------------------------------------- // Bootstrap 4.3 is used for easy responsive HTML code // JQuery 3.3 is used to handle user interation // Select2 is used to make select-boxes (single or multiple) easier to use // read fields options (json format) ///////////////////////////////////////// // --------------------------------------------------------------------------- $formJSON = file_get_contents('config/kallassa.json'); $formARRAY = json_decode($formJSON); // Init strigns for JS generator (needed to handle everything) /////////////// // --------------------------------------------------------------------------- $checkFilledJS = ""; // JS for checking empty fields $ref2Select2JS = ""; // references to Select2-controls Javascript $initSelectsJS = ""; // js to initialize select fields (single or multiple) $html = '