function sestavFormular($connect,$tabulka,$cislo=1,$exid="",$ident="",$dataset="",$additional=0) { /* tabulka -- konkretni formular, sada polozek z tabulky formular cislo -- poradove cislo prvni polozky (nekdy se potlacuje) exid -- ident v externich datech (klíč) ident -- hodnota exidu dataset -- tabulka, v niz jsou externi data (napr. soubory) 13 12 11 10 9 8 7 6 5 4 3 2 1 0- disabled select pro selecty, implicitni 'neuvedeno' pro textova pole | | | | | | | | | | | | |--- pouze pro neanglicke vysledky (drive jazyk !eng), S nasobny vyber s checkboxy | | | | | | | | | | | |----- kontrola syntaxe po opusteni pole, S ciselnik podle promenne + 'staty', pokud promenna zacina na 'stat_', S jmena pouze domaci, S s typem prenos nazvu promenne | | | | | | | | | | |------- S ZOBRAZOVAT tecky pri sestavovani roletky | | | | | | | | | |--------- letopocet v RIV syntaxi, jinak typ=nazevpromenne | | | | | | | | |----------- S katedry a organizace pouze zkratku, S jazyky pouze s locales, S jmena povoli zalozit noveho cloveka, T indikuje 1:N (do pole group_concat z tabulky, klic je ciselnik) | | | | | | | |------------- nepovinne pole | | | | | | |--------------- tlacitko UCFirst, S prvni polozka prazdna a resetuje, F nabidne nahled | | | | | |----------------- tlacitko hledejIdent, S operuje s obsahem textpole jako s hodnotou | | | | |------------------- handler | | | |--------------------- polozka ma display=none | | |------------------------ sestavit jako horizontalni | |--------------------------- zobrazovat i pro predbezne zaznamy |------------------------------ pouze pro spravu PDV */ global $langnazev; $tabulka=safestring($tabulka,8); $cislo=intval($cislo); $exid=safestring($exid); $dataset=safestring($dataset,8); $additional=intval($additional); if ($dataset=="") $dataset=$tabulka; $cislo=1; $jentabulka=preg_replace("/^[^.]*\./","",$tabulka); $vysledek=mysqli_query($connect,"select id,promenna,typ,flags,blok,radek,sloupec,delka,if (databaze!='',concat(databaze,'.',tabulka),tabulka) as tabulka,onblur,textformat,ciselnik,placeholder,nazev from formular left join formtexty on formid=id and jazyk='".$_SESSION['lang']."' where tabulka='".$jentabulka."' order by radek,sloupec") or die (mysqli_error($connect)); //die ("select formular.*,placeholder,nazev from formular left join formtexty on formid=id and jazyk='".$_SESSION['lang']."' where tabulka='".$tabulka."' order by radek,sloupec"); while ($zaznam=mysqli_fetch_assoc($vysledek)) { // $dataset=$tabulka; unset($txtparms,$jsparms,$onchange,$onblur,$onfocus,$dotaz); // $dataset=$tabulka; foreach ((array)$zaznam as $klic=>$hodnota) { $$klic=$hodnota; } preg_match("/^(\d*)([A-Z])(\d*)([A-Z]?)(\d*)/",$zaznam['typ'],$typ); if ($typ[2]=="N") $onblur="naCislo"; $minimum=intval($typ[1])>0?$typ[1]:""; if ($delka>0 && $typ[2]=="S") $delka+=2; $delka=intval($delka)>0?" style='width:".$delka."px'":""; $nepov=$flags&64?" class=nepov":""; //if ($dataset==$tabulka) $dataset=!empty($databaze)?$databaze.".".$dataset:$dataset; if (preg_match("/^(\w+)\.(\w+)$/",$promenna,$pole)) { $fullfrom=preg_match("/^(\w+)\.(\w+)$/",$tabulka,$cesta)?$cesta[1].".".$pole[1]:$pole[1]; //if ($databaze!="") $fullfrom=$databaze.".".$fullfrom; $dotaz="select group_concat(".$pole[2].") from ".$fullfrom." where ".$ciselnik."='".$formular[$ciselnik]."'"; } elseif ($exid!="") $dotaz="select ".$promenna." from ".$dataset." where ".$exid."='".$ident."'"; if (!empty($dotaz)) { $vysledek1=mysqli_query($connect,$dotaz) or die ($dotaz); if ($zaznam=mysqli_fetch_row($vysledek1)) $obsah=$zaznam[0]; } else $obsah=""; $formular[$promenna]=$obsah; switch($typ[2]) { case "R": $buttons=""; $vysledek1=mysqli_query($connect,"select obsah,".$langnazev." as nazev,onchange from radio where promenna='".$promenna."'") or die (mysqli_error($connect)); while ($zaznam=mysqli_fetch_assoc($vysledek1)) { $append=$zaznam['obsah']==$obsah?" checked":""; $onchange=!empty($zaznam['onchange'])?" onChange='".$zaznam['onchange']."(this)'":""; $buttons.=""; } $formpole="
"; break; case "C": $checkboxes=""; $citac=0; $modul=intval($typ[3]); switch ($promenna) { // standardni promenne se berou ze specifickych ciselniku case "fakulta": $dotaz="select 1<<(ident-1) as obsah, zkratka as nazev, '' as onchange, 0 as disabled, 'fakulta' as promenna from personal.fakulty where kod>0 order by ident"; break; default: $dotaz="select obsah, ".$langnazev." as nazev, onchange,promenna,disabled from checkbox where promenna='".$promenna."' and tabulka='".$tabulka."'"; } //if ($promenna=='atributysouboru') die ($dotaz); $vysledek1=mysqli_query($connect,$dotaz) or die (mysqli_error($connect)); while ($zaznam=mysqli_fetch_assoc($vysledek1)) { $citac++; if ($exid!="" && $dataset!="") { $obsah=@fromDataset($connect,$zaznam['promenna'],$dataset,$exid,$ident); $append=$zaznam['obsah']==$obsah || ((int)$zaznam['obsah']&(int)$obsah)==(int)$zaznam['obsah']?" checked":""; } else $append=""; $onchange=!empty($zaznam['onchange'])?" onChange='".$zaznam['onchange']."(this)'":""; $prefix=$modul>0&&$citac%$modul==0?"