Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:258:4dbc:3838:5a25:f2e0...–

peter
Offtopic › Jak se vytváří výherní autom…
29. 7. 2020   #386394

zacinam mit cim dal tim vetsi pocit, ze tohle tema bylo zalozeno zamerne, aby zde mohli ilegalne prezentovat stranky s kasiny a pritom to byl obhajitelne :)

peter
Hry › V čem vytvářet online hry?
29. 7. 2020   #386390
peter
Hry › V čem vytvářet online hry?
29. 7. 2020   #386389
peter
Hry › V čem vytvářet online hry?
29. 7. 2020   #386388

Zalezi na tom, jakou slozitost chces.
- Pokud jde o gta a pod, tak na to jsou unreal enginy a jine. Vyrobis exe soubor.
- Pokud ti jde jen o jednoduchou webovou klikacku, tak staci html, css, js.
- Pokud to ma byt online, potrebujes jeste php, sql pro ukladani uziv. uctu na serveru.
Pro online komunikaci u web stranek se pouziva http/https, ale u gta her se pouzivaji udp sockety, ktere jsou uspornejsi. To je jen program, ktery spustis na serveru a nastavis mu, jaky ma spustit program, kdyz prijde message, zprava. U webovych stranek se to pouziva spise pro chat. Na klikaci hry to moc neni treba.
Grafika web her se resi 3d programy nebo programy na vektorovou grafiku. Ale treba ti staci jen gifiky.

Treba si ale vystacis jen s javascriptem, bud pohyb divu na strance nebo muzes kreslit do canvasu.
https://mlich.zam.slu.cz/…/sokoban.htm
https://mlich.zam.slu.cz/…xample5.html
https://mlich.zam.slu.cz/x/hry/index.htm

peter
PHP › export dat z csv do xml pouz…
26. 6. 2020   #386296

   

// --- array to XML ---

// function defination to convert array to xml
public function arrayToXml( &$data_xml, $data_list=array() ) {
    foreach( $data_list as $key => $value ) {
        if (trim($key)=='')
       {continue;}
        if( is_array($value) ) {
            if( is_numeric($key) ){
                $key = "item".$key; //dealing with <0/>..<n/> issues
            }
        $new_child = $data_xml->addChild($key);
            $this->arrayToXml($new_child, $value);
        } else {
            
            if (is_numeric($key)) {// if the key is an integer, it needs text
                $key = "key".$key;
            }
            $new_child = $data_xml->addChild("$key", htmlspecialchars("$value"));
        }
     }
}

// array to csv / json
public function csvStrToCsv($input=array(), $delimiter = ',', $enclosure = '"')
    {
	if (!is_array($input))
		{return false;}
	foreach($input as $key=>$value)
		{
		if (is_array($value))
			{
			$input[$key] = $this->csvStrToCsv($value, $delimiter, $enclosure);
			}
		}
        $fp = fopen('php://temp', 'r+');	// Open a memory "file" for read/write...
        fputcsv($fp, $input, $delimiter, $enclosure);
        rewind($fp);
        $data = fread($fp, 1048576);
        fclose($fp);
        return rtrim($data, "\n");
    }


public function format($data=array(), $format='')	// output format php array (/ json / xml / csv - not implement)
	{
	if ($format=='')
		{
		return $data;
		}
	elseif ($format=='csv')
		{
		$content = '';
		$valenc = "\"";
		$coldel = ";";
		$rowdel = "\n";
//		$rowdel = "<br>";	// for html/text
		foreach ($data as $row)
			{
			$content .= $this->csvStrToCsv($row, $coldel) . $rowdel;	// excel csv, del=; enc=" row=\n
			}
		return $content;
		}
	elseif ($format=='json')
		{
		return json_encode($data);
		}
	elseif ($format=='xml')
		{
		$xml = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
		$this->arrayToXml($xml, $data);
		return $xml->asXML();
		}
	}

// --- csv content to array ---
// https://www.php.net/…r-getcsv.php
public function import($content='')
	{
	$p = $this->parse;
	list($row, $col, $enc, $esc) = array($p['row'], $p['col'], $p['enc'], $p['esc']);
	$row_list = str_getcsv($content, $row); // parse the rows
	$content  = null;
	foreach($row_list as &$row)
		{
		$row = str_getcsv($row, $col, $enc, $esc); //parse the items in rows
		}
	return $row_list;
	}

peter
JavaScript, AJAX, jQuery › Chrome Extension
12. 6. 2020   #386234

Hele, je zbytecne to rozebirat, pokud sem nedas celu svuj kod. Idealne ocesany na jednostrankovy jednochuchy priklad. Ty tam neco mas, ale nikdo netusi, co vlastne. Mozna jsi neotevrel pripojeni.
Ja si treba zkousel hrat v mozile s RTC a WebSockety, ta tam se to resi takto nejak 

WS = {};
	WS.conn = new WS.api(WS.server_url, WS.server_opt);
	WS.conn.onopen    = WS.onopen;
	WS.conn.onclose   = WS.onclose;
	WS.conn.onerror   = WS.onerror;
	WS.conn.onmessage = WS.receiveMessage;
// vsechny udalosti z connection jsem si presmeroval do vlastni funkce

WS.onopen   = function(event)
	{
	var i, li, key, msg;
	WS.status('connection opened');
	CHAT.msgSend('join');
	CHAT.msgSend('userlist');
	if (WS.close_buff == true)
		{
		WS.conn.close();
		return;
		}
	li = WS.send_buff.length;
	if (li>0)
		{
		for (i=0;i<li;i++)
			{
			msg  = WS.send_buff[i];
			type = msg.type ? msg.type : '???';
			WS.status('send ' + type);
			WS.conn.send(WS.encode(msg));
			}
		}
	};
WS.onclose = function(event)
	{
	WS.status('connection closed');
	WS.close_buff = false;
	};
WS.onerror = function(event)
	{
	event = event || window.event;
	WS.error(WS.encode(event.data || event));
	};
WS.receiveMessage = function(event)
	{
WS.status('receive');
	var msg, key;
	event = event || window.event;
	msg = event && event.data ? (event.data!='' ? WS.decode(event.data) : '') : '';
// zachytim zpravu ze socketu a presmeruji jeji obsah na CHAT.receive, 
// nejakou mou funkci, ktera zobrazuje zpravu uzivateli
	CHAT.receive(msg);
	};
peter
JavaScript, AJAX, jQuery › Chrome Extension
12. 6. 2020   #386233

jo, jenze ty pises, ze tam mas, ale o ni tam maji neco jineho
addEventListener('message', function(event)
chrome.runtime.onMessage.addListener(

https://developer.chrome.com/…ns/messaging#…

var port = chrome.runtime.connect({name: "knockknock"});
port.postMessage({joke: "Knock knock"});
port.onMessage.addListener(function(msg) {
  if (msg.question == "Who's there?")
    port.postMessage({answer: "Madame"});
  else if (msg.question == "Madame who?")
    port.postMessage({answer: "Madame... Bovary"});
});
peter
Python › python - jednoduchá úloha
8. 6. 2020   #386195

"informatika a pocitace idu uplne mimo mna, takze to aj tak vyzera..."

To je jen hloupa vymluva. Proc by sis vybiral obor, kde je programovani, kdyz pak mas takovehle vymluvy?
Navic, dneska, clovek, co neovlada zaklady programovani, tak vypada jako clovek z pralesa. Opice tam skacou po strome a ji brouky. Mobil je pro ne cizi zla oskliva vec, se kterou se nebudou ani zabyvat. Viz tva vlastni slova " idu uplne mimo mna" :)
Kdyz nepochopis, jak naprogramovat tohle, jak muzes resit nejaky problem pomoci pocitace? Neco ti tam nepujde a vubec nebudes chapat, co by mohlo byt pricinou. Reseni ukolu se ti protahne tak na mesic. Pak budes rikat, jak zle a oslive veci ty pocitace jsou, ikdyz jenom ta obsluha je uplne k nicemu :)

peter
PHP › Jak ověřit checkboxy a nové…
5. 6. 2020   #386187

Html form ti odesila jen zaskrtnute checkboxy.
Co si predstavujes pod overovanim? Jakoze mi dotaz nedava smysl. Pridavam ukazku formulare a cteni pro sql dotazy.
V tom, co sem psal predtim, tam
a) smazes vsechno zaskrtnute pro zvolene id_formulare a pridas jen zaskrtnute. Pokud budes chtit vypsat checkboxy do html, tak nejakym selectem musis s db, kde mas ulozeny seznam checkboxu, vytahnout ten seznam. SELECT * FROM pracoviste. (id_pracoviste, textovy_nazev_pracoviste) -> z toho geneujes html select nebo html checkboxy nebo radiobutony...
b) nebo prepises vsechny na false a prepises jen zaskrtnute na true a ulozis do db jednim inserten nebo updatem

<form>
<label><input type=checkbox name="autor[]" value="1">Ales</label>
<label><input type=checkbox name="autor[]" value="2">Tomas</label>
<label><input type=checkbox name="autor[]" value="3">Pepa</label>
<label><input type=checkbox name="autor[]" value="4">Franta</label>
<label><input type=checkbox name="autor[]" value="5">Jenda</label>
<label><input type=checkbox name="autor2[]" value="Ales">Ales</label>
<label><input type=checkbox name="autor2[]" value="Tomas">Tomas</label>
<label><input type=checkbox name="autor2[]" value="Pepa">Pepa</label>
<input type=submit>
</form>
<?php var_dump($_REUEST); ?>

<form>
<label><input type=checkbox name="autor[0]" value="1">Ales</label>
<label><input type=checkbox name="autor[1]" value="2">Tomas</label>
<label><input type=checkbox name="autor[2]" value="3">Pepa</label>
<label><input type=checkbox name="autor[3]" value="4">Franta</label>
<label><input type=checkbox name="autor[4]" value="5">Jenda</label>
<input type=submit>
</form>
<?php var_dump($_REUEST); ?>

<?php
// Pro insert sql dotazy to preci zjistujes takhle, ne?
$list = isset($REQUEST['autor']) ? $REQUEST['autor'] : '';
foreach ($list as $id)
    {
    echo '<br>id ='. $id;
    }

$list = isset($REQUEST['autor2']) ? $REQUEST['autor2'] : '';
foreach ($list as $name)
    {
    echo '<br>name ='. $name;
    }
?>
peter
Typografie › Musím vyhledat partnera
28. 5. 2020   #386156

Slovo, ktere bys mohl hledat googlem je bootstrap.
Stahnes, rozbalis, upravis webstranku podle templatu. Pokud nepotrebujes js, tak ti  z templatu staci nalinkovat jen css.
https://getbootstrap.com/…ntroduction/#…
a dal kodujes uz podle prikladu v dokumentaci
https://getbootstrap.com/…ut/overview/
https://getbootstrap.com/…tent/tables/

Takova jednoducha ukazka, treba rar.cz

Pokud budes chtit nejake vlastni styly, tak doporucuji prilinkovat si to jako dalsi soubor, kterym prepisujes bootstrapove. Prohlizece umeji podle hash souboru kesovat nektere zname css knihovny, takze ti web ani nemusi stahovat css :) Ale to se resi tusim nejakym spesl zapisem tagu <link>, to sem zatim nepouzil

peter
Matematika › Geometrická postupnosť
21. 5. 2020   #386126

Jo, samozrejme tam musi byt zavorky, vsude, od 45 - x / 33 - x = q a dal.
45 - x / 33 - x = q ... spatne
(45 - x) / (33 - x) = q ... spravne

peter
Matematika › Geometrická postupnosť
21. 5. 2020   #386125

--- zadani ---
S5 = ?
a2 = 33 - x
a3 = 45 - x
a4 = 63 - x
--- pokus o reseni ---
vzorecky https://cs.wikipedia.org/…_posloupnost
Sn = a1 + a2 + ...
S5 = a1 + a2 + s3 + a4 + a5
---
a[n+1] = an * q
a1 = a1
a2 = a1 * q
a3 = a2 * q = a1 * q * q
a4 = a3 * q = a1 * q * q * q
---
a2 = a2
a3 = a2 * q
a4 = a2 * q * q
---
dosadim
a2 = 33 - x
---
45 - x = (33 - x) * q
63 - x = (33 - x) * q * q
Dve rovnice o 2 neznamych
---
45 - x / 33 - x = q
63 - x / 33 - x = q * q | bud to odmocnis nebo predchozi rovnici umocnis a pak je spojis
---
(45 - x / 33 - x) * (45 - x / 33 - x) = q * q
63 - x / 33 - x = q * q
---
(45 - x / 33 - x) * (45 - x / 33 - x) = 63 - x / 33 - x
Jedna rovnice, jedna neznama. Obe strany rovnice vynasobis (33 - x) * (33 - x)
---
(45 - x) * (45 - x) = (63 - x) * (33 - x)
Roznasobis, prevedes na jednu stranu a neco vyjde.

Ale urcite se i jednodussi reseni :) Treba se jeste nekdo ozve behem 14 dni.

peter
JavaScript, AJAX, jQuery › Uložení obrázku ajaxem
21. 5. 2020   #386124

Mam to teda v iframu, takze odesilam form a po obnoveni mi tam php doda seznam souboru propojenych s idform nebo idtmp (podle toho, zda uz uzivatel klikl na  ulozit projekt nebo jeste je teprve v editaci v casti NEW).

peter
JavaScript, AJAX, jQuery › Uložení obrázku ajaxem
21. 5. 2020   #386123

   

Tohle pouzivam pro upload souboru v poslednim projektu

<a id="pril_add"></a>
<h2>Seznam příloh</h2>

<div><small class="form-text text-muted">Rozhodnutí, dodatky k rozhodnutí, interní smlouva, Memorandum, dodatky</small></div>

  <div class="card-header">
    <ul class="nav nav-tabs card-header-tabs" id="pril2_nav">
      <li class="nav-item"><a class="nav-link active" href="#file" onclick="FL.buttonFileInsert(); return false;">Soubor</a></li>
      <li class="nav-item"><a class="nav-link" href="#link" onclick="FL.buttonLinkInsert(); return false;">Odkaz</a></li>
    </ul>
  </div>

  <div class="card-body">

    <div id="insert_file">
      <form action="{program}" method="post" enctype="multipart/form-data" id="uploadfileform">
        <input type="hidden" name="MAX_FILE_SIZE" value="{upload_max_size}"> 
        <input type="hidden" name="what"   value="{what}">
        <input type="hidden" name="do"     value="insert">
        <input type="hidden" name="idform" value="{form_idform}">
        <input type="hidden" name="idtmp"  value="{form_idtmp}">
        <input type="hidden" name="type"   value="file">
        <div id="dropzone" class="alert">
          <div class="message"><b>Drag and drop</b> files here<br> or <a href="" id="triggerFile">browse</a> to begin the upload</div>
          <input type="file" multiple="multiple" name="files_to_upload[]">
        </div>
        <div class="list-files">
        </div>
      </form>
    </div>

    <div id="update_file">
      <form action="{program}" method="post" enctype="multipart/form-data" id="updatefileform">
        <input type="hidden" name="what"   value="{what}">
        <input type="hidden" name="do"     value="update">
        <input type="hidden" name="idpril" value="{form_idpril}">
        <input type="hidden" name="idform" value="{form_idform}">
        <input type="hidden" name="idtmp"  value="{form_idtmp}">
        <input type="hidden" name="type"   value="file">
      
        <table class="table-sm">
          <colgroup>
            <col style="width:160px;">
            <col>
            <col>
          </colgroup>
          <tbody valign="top">
            <tr>
              <td><label for="name">Název</label></td>
              <td><input value="{form_name}" id="name" name="name" size="47" type="text" class="form-control form-control-sm {err_input_name}"></td>
              <td>{err_name}</td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input value=" Uložit " type="submit" class="submit btn btn-secondary"></td>
              <td>&nbsp;</td>
            </tr>
          </tbody>
        </table>
      </form>
    </div>

    <div id="insert_link">
      <form action="{program}" method="post" enctype="multipart/form-data" id="insertlinkform">
        <input type="hidden" name="what"   value="{what}">
        <input type="hidden" name="do"     value="{do}">
        <input type="hidden" name="idpril" value="{form_idpril}">
        <input type="hidden" name="idform" value="{form_idform}">
        <input type="hidden" name="idtmp"  value="{form_idtmp}">
        <input type="hidden" name="type"   value="link">
      
        <table class="table-sm">
          <colgroup>
            <col style="width:160px;">
            <col>
            <col>
          </colgroup>
          <tbody valign="top">
            <tr>
              <td><label for="name">Název</label></td>
              <td><input value="{form_name}" id="name" name="name" size="47" type="text" class="form-control form-control-sm {err_input_name}"></td>
              <td>{err_name}</td>
            </tr>
            <tr>
              <td><label for="link">Url</label></td>
              <td><input value="{form_link}" id="link" name="link" size="47" type="text" class="form-control form-control-sm {err_input_link}"></td>
              <td>{err_link}</td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td><input value=" Uložit " type="submit" class="submit btn btn-secondary"></td>
              <td>&nbsp;</td>
            </tr>
          </tbody>
        </table>
      </form>
    </div>

  </div>






<!-- list -->
{content_list}



<style>
#insert_file #dropzone {border:2px dashed #818182;  background-color:#e2e3e5;}	/*#004085 #b8daff*/
#insert_file #dropzone div.message {color:#383d41;}
#insert_file #dropzone.active {border-color:#155724; background-color:#d4edda;}
#insert_file #dropzone.active div.message {color:#155724;}
#insert_file #dropzone input {visibility: hidden;}
</style>

<script>
//
//#dropzone {border:3px dotted #155724;  background-color:#d4edda;}	/*#004085 #b8daff*/
//#dropzone div.message {color:#155724;}
//#dropzone.active {border-color:#856404; background-color:#fff3cd;}
//#dropzone.active div.message {color:#856404;}
//#dropzone input {visibility: hidden;}

//DOM
const $ = document.querySelector.bind(document);

UPLOAD = {};
UPLOAD.vars = {};
UPLOAD.showFileList = function (files)
	{
/*
	var i, files, d, div, item;
	for (i=0; i<files.length; i++)
		{
		div  = document.createElement("div");
		item = files[i];
		d    = item.lastModifiedDate ? item.lastModifiedDate : (item.lastModified ? new Date(item.lastModified) : '');
		d    = d!=='' ? (d.toLocaleDateString ? d.toLocaleDateString() : d) : 'n/a';
		div.innerHTML = item.name +' (' + 
				(item.type || 'n/a') + ', ' +
				item.size + ' bytes, last modified: ' +
				d + ')';
		$(UPLOAD.id.list_files).appendChild(div);
		}
*/
	}

UPLOAD.handleFileSelect = function (event)
	{
	var files, form;
	files = event.target.files; // FileList object
	event.preventDefault();
	form = UPLOAD.vars.form;
	form['do'].value = 'insert';
	form.submit();
//	UPLOAD.showFileList(files);
	}

UPLOAD.init = function()
	{
	var id = {
		form: "#uploadfileform",
		link_browse: "#triggerFile",
		input_file: "input[type=file]",
		drop_zone: "#dropzone",
		list_files: ".list-files"
		};
//for (i in id)	{alert($(id[i]))}
	UPLOAD.id = id;
	UPLOAD.vars.form = $(id.form);
	// trigger input
	$(id.link_browse).onclick = function (event)
		{
		event.preventDefault();
		$(id.input_file).click();
		};
	// input change
	$(id.input_file).onchange = UPLOAD.handleFileSelect;

	// drop events
	var dropzone = $(id.drop_zone);
	dropzone.ondragleave = function (event)
		{
		event.preventDefault();
		dropzone.classList.remove("active");
		};
	dropzone.ondragenter = function (event)
		{
		event.preventDefault();
		dropzone.classList.add("active");
		};
	dropzone.ondragover = dropzone.ondragenter;
	dropzone.ondrop = function (event)
		{
		var form;
		event.preventDefault();
		dropzone.classList.remove("active");
		$(id.input_file).files = event.dataTransfer.files;
		form = UPLOAD.vars.form;
		form['do'].value = 'insert';
		form.submit();
//		UPLOAD.showFileList(event.dataTransfer.files);
		};
	UPLOAD.vars.dropzone = dropzone;
	}




var FL = {};
FL.vars = {};
FL.show = function(id)
	{
	var id_list, id_nav, type, query;
	id_nav  = FL.vars.id['nav'];
	id_list = FL.vars.id_list;
	for (i in id_list)
		{
		if (typeof $('#'+id_list[i])==null)
			{continue;}
		$('#'+id_list[i]).style.display = "none";
		type  = id_list[i].replace(/^.*?_/g,'');
		query = '#'+id_nav+' a[href="#'+type+'"]';
		$(query).classList.remove('active');
		}
	if (typeof id_list[id]!='undefined' && $('#'+id_list[id])!=null)
		{
		$('#'+id_list[id]).style.display = "";
		type  = id_list[id].replace(/^.*?_/g,'');
		query = '#'+id_nav+' a[href="#'+type+'"]';
		$(query).classList.add('active');
		return $('#'+id_list[id]);
		}
	return false;
	}

FL.buttonUpdate = function(type, a, b, c)
	{
	if (type=='link')
		{
		FL.buttonLinkUpdate(a, b, c);
		}
	if (type=='file')
		{
		FL.buttonFileUpdate(a, b, c);
		}
	}

FL.buttonLinkInsert = function()
	{
	var el, code, type, query;
	type = 'link_insert';
	el = FL.show(type);
//	code = FL.vars.code['link_insert']
//		.replace('{form_idpril}', '')
//		.replace('{form_name}'  , '')
//		.replace('{form_link}'  , '');
//	el.innerHTML = code;
	query = '#'+FL.vars.id_list[type]+ ' input[name="';
	$(query+'do'+'"]'    ).value = 'insert';
	$(query+'idpril'+'"]').value = '';
	$(query+'name'  +'"]').value = '';
	$(query+'link'  +'"]').value = '';
	}

FL.buttonLinkUpdate = function(id, name, url)
	{
	var el, code, query, type;
	type = 'link_update';
	el   = FL.show(type);
//	code = FL.vars.code['link_update']
//		.replace('{form_idpril}', id)
//		.replace('{form_name}'  , name)
//		.replace('{form_link}'  , url);
//	el.innerHTML = code;
	query = '#'+FL.vars.id_list[type]+ ' input[name="';
	$(query+'do'+'"]'    ).value = 'update';
	$(query+'idpril'+'"]').value = id;
	$(query+'name'  +'"]').value = name;
	$(query+'link'  +'"]').value = url;
	}

FL.buttonFileInsert = function()
	{
	FL.show('file_insert');
	}

FL.buttonFileUpdate = function(id, name, none)
	{
	var el, code, query, type;
	type = 'file_update';
	el   = FL.show(type);
//	code = FL.vars.code['file_update']
//		.replace('{form_idpril}', id)
//		.replace('{form_name}'  , name);
//	el.innerHTML = code;
	query = '#'+FL.vars.id_list[type]+ ' input[name="';
//alert([$(query+'name'  +'"]'), name])
	$(query+'idpril'+'"]').value = id;
	$(query+'name'  +'"]').value = name;
	}




/*
FL.buttonClose = function()
	{
	$(FL.vars.id.FL).innerHTML = '';
	}

FL.buttonSave = function(form1)
	{
	form1.submit();
//		form2 = UPLOAD.vars.form;
//		form2['do'].value = 'update';
//		form2.submit();
	}
*/
FL.init = function()
	{
	var id_list, code_list;
	id_list = {
		'link_insert': 'insert_link',
		'link_update': 'insert_link',
		'file_insert': 'insert_file',
		'file_update': 'update_file'
		};
//	for (i in id_list)
//		{
//		if (typeof $('#'+id_list[i])==null)
//			{continue;}
//		code_list[i] = $('#'+id_list[i]).innerHTML;
//		}
	FL.vars.id_list   = id_list;
	FL.vars.id   = {
		'nav': 'pril2_nav'
		};
//	FL.vars.code = code_list;
	
	FL.show('file_insert');
	}


UPLOAD.init();
FL.init();

</script>

peter
PHP › omezení vnořených IF
19. 5. 2020   #386100

Priste dej kod, idealne spustitelny. Neni problem najit chybu parsovani.

Ja to edituji v textovem editoru, tak mam s hledanim chyb bohate zkusenosti. Nejcastejsi problemy:
- zapomenuty strednik (protoze z js jsem zvyknuty, ze js strednik odpusti)
- zapomenuta nebo navic slozena zavorka }
- v podmince if zapomenuta kulata zavorka ). To pak hlasi error  na konci souboru, treba, velmi blbe se to hleda :)
- chyba v zapise ternalnich operaci, takove to if-else psane pomoci ? a :, x = a ? : 1 : 0. Zapomenuty ? nebo : nebo spatne ozavorkovane.
- pri prepisovani nazvu promenych na nekterou zapomenu (ale uz jsem se naucil pouzivat pri tom vyhledavani a nahrazovani textu, F7 ve Faru)
- zapomnuty apostrof, nebo chybne apostrofy pri spojovani stringu. Ale to mi resi casto obarvovani syntaxe.
A dalsi chyby mne ted nenapadaji.

peter
MySQL › Datum od do v PHP
11. 3. 2020   #385630

navišovat datum o jeden a přeskakovat so + ne
navYšovat datum o jeden a přeskakovat so + ne

Hele, ale ty soboty a nedele nemuzes preskakovat. Do db ukladas casove razitko. Pokud tam to casove razitko (timestamp, datetime) ulozis v den mimo sobotu, nedeli, tak je to ok. Pokud ho ulozis ale v sobotu, tak musis vypsat i to v sobotu, ne?
Jako, muzes pridat php/sql prikaz, ktery urcuje den v tydnu. Ale, to mi prijde jako zbytecne, ne? Nebo to zkus mozna vic rozepsat, co mas a proc potrebujes prave tohle.

Treba, jako, kdyz mas tabulku s rozvrhem hodin skoly, tak ten, kdo zadava, to nezadava na so, ne. A kdyz jo, tak to pak chces videt. Takze te zajima interval po-pa v tydnu, ve kterem je datum xyz (treba uterni). To by slo napsat. Ale mozna bude jednodussi sql prikaz, ktery vybere cely mesic a ty z nej pak vypises konkretni tyden. Protoze casto potrebujes vypsat cely mesic. Ale, slo by to i sql prikazem. Da se najit googlem nebo v dokumentaci date/time funkci.
Treba, vysoka skola zadava rozvrh na pul roku (pro 1 semestr). Kdyz ma dalkove/duchodove studium, tak vetsinou se to uci koncem tydne v ct, pa nebo pa, so. A pak ma dny, kdy porada nejake akce, obsadi ucebny. A to vsechno chces v tom rozvrhu videt, preci. Samozrejme pro denni studium te nezajiji vyjimecne udalosti jako dalkove studium a akce, konference, tak to z db odfiltrujes podle typu rozvrhove akce. A pri vypisu mu so,ne nezobrazis, pokud tam nic neni.
Ale treba ucitel, ktery tu akci porada nebo uci jako deenne dochazejici, tak dalkove studium, tak to chce videt, co je jeho.
No, a rozvrhar nebo ten, kdo chce rezervovat mistnost, take chce videt vsechno, co neni zablokovane.

Cili, tehle tvuj pozadavek mi prijde zatim nelogicky, tak jsem ti k nemu nehledal vic info googlem. Casove razitko pro mesic se vytvari snadneji nez pro den v tydnu.

A to jsi jeste neuvazil svatky, velikonoce, osvobozeni republiky vanoce a pod. :)

peter
MySQL › Datum od do v PHP
11. 3. 2020   #385629

Zkousel jsi google?
google = ms sql date interval example now
google = ms sql time interval example
google = php date interval example now
google = php time between two dates example

"how to get the 30 days before date from Todays Date - Stack Overflow" 

SELECT DATE_ADD(NOW(), INTERVAL -30 DAY) -- mysql
SELECT getdate() - 30; -- mssql

"mssql 30 minute time intervals beteen 2 datetime - Stack Overflow"

declare @DateTime1 datetime = '2016/11/24 18:00:00'
    , @DateTime2 datetime = '2016/11/25 06:00:00'

select FORMAT(DATEADD(minute, (t.N - 1) * 30, @DateTime1), 'dd-HH:mm')
from cteTally t
where t.N <= (DATEDIFF(hour, @DateTime1, @DateTime2) * 2) + 1

--- 

DATEADD(MINUTE,30,@DateTime1) <= @DateTime2
-- to mi prijde lepsi, primo pouzit casove razitko

Tech 30 minut bys mel pricist nebo odecist od datumu, ktery bude konstantou. Cili, ne pro sloupec v db.
DATEADD(MINUTE,30,datum) <= tab.datum2
tab.datum1<=datum AND datum<=tab.datum2

PHP, google vetsinou vede do dokumentace php.net
https://www.php.net/…ime.diff.php
 

// Example #1 DateTime::diff() example

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>
<?php
// Example #2 DateTime object comparison
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");

var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>


Hele, jestli ti mame kopirovat examply z manualu, tak je mozna neco spatne :)

peter
PHP › PHP odosielanie multi emailo…
11. 3. 2020   #385628

4b. tip
Mozna mas v databazi jinak pojmenovanou tabulku nebo sloupec. Ale to by ti mel vypis chyb napsat
$mysqli -> error

peter
PHP › PHP odosielanie multi emailo…
11. 3. 2020   #385627

1. Zapni si error_reporting a pridej si tam ten prikaz do kodu, google = php error_reporting 
2. Pridej si tam vypis mysqli chyb, google = php mysqli error
Pak ti zacne php a sql vypisovat chyby. To, co mas v kodu, to neni vypis chyb, to je pouze vypis vysledku funkci (return). Ty ti vypisi obvykle jen false nebo true/data.
3. "vypíše No data found"
No, ale, to je chybova hlaska tveho kodu. To snad dokaze najit i male dite...
echo "No data found";
Proc to pise tu hlasku? Protoze if funkce vratila false.
Ktery if vratil false? if(mysqli_num_rows($res)>0)
A proc vratil if false? Protoze nebyla splnena podminka mysqli_num_rows($res)>0
A proc nebyla splnena podminka? Protoze SQL prikaz vratil 0 radku, sql dotazu nevyhovuje zadny radek v tabulce. Nebo je sql prikaz spatny.
a) Co s tim? Pustis si dbadmin, phpmyadmin, na serveru, otevres tam databazi, tabulku, kliknez na zalozku sql a vlozis tam kod tveho prikazu a kliknes Odeslat nebo, Proved nebo, co tam je za formularove tlacitko pro vykonani sql prikazu
select * from users where send_email=1
A bud to vrati tabulku s radny nebo napise 0 radku odpovida sql prikazu.
b) Pak mozna selhal radek
$res=mysqli_query($conn,$sql);
Viz a), otestujes sql prikaz. V tomto pripade ti to vrati bud a) nebo vypise sql chybu v prikazu. Treba chybna syntaxe na radku 1 blizko kodu "...". V druhem pripade spravis sql prikaz, v prvnim je sql prikaz dobre, chyba je tedy nekde drive, asi selhalo sql pripojeni.
$res=mysqli_query($conn,$sql); // var_dump($conn);
... tim padem zadna dalsi sql funkce pozdeji nemuze fungovat, kdyz se nepripoji k databazi.
$conn=mysqli_connect("localhost","root","","mailer");
... prikaz vypada v poradku, ale mozna nemas zapnuty sql server? To se da testnout treba i tim phpmyadminem, jestli se doklikas do databaze, tabulek, pak se phpmyadmin pripojil.

No, ale, kdyby jsi tam mel 1. a 2., tak ti to php vetsinou vypise. ale samozrejme tam muzes misto toho pridat var_dumpy.
var_dump($sql); // zkontrolujes si sql prikaz
var_dump($con); // zkontrolujes, zda je $con null nebo to vypise neco jineho
var_dump($res); // zkontrolujes, zda je $res null nebo obvykle vypise resource
Pokud je resource, pak sql prikaz sql server prijal jako spravny a pravdepoddobne vratil 0 radku. Cili, sql prikaz je spatne napsany, ale neobsahuje chybu, kvuli ktere by to server nedokazal prepsat na program vyhledavajici data z databaze.
 

if(mysqli_num_rows($res)>0)
{
    $mail->addReplyTo("#");
    while($x=mysqli_fetch_assoc($res))
    {
        $mail->addBCC($x['email']);
    }

    if($mail->send())
    {
        echo "Success";
    }
    else
        echo "Failure";
}
else
{
    echo "No data found";
}
?>

4. tip
Sql prikaz se jmenuje $query ne $sql.

Fetchem ziskavas data, radek, $row ne $x.

google = php mysqli error

 <?php
$mysqli = new mysqli("localhost","my_user","my_password","my_db");

if ($mysqli -> connect_errno) {
  echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
  exit();
}

// Perform a query, check for error
if (!$mysqli -> query("INSERT INTO Persons (FirstName) VALUES ('Glenn')")) {
  echo("Error description: " . $mysqli -> error);
}

$mysqli -> close();
?> 

google = php error_reporting (pred vsemi include, require, na zacatku kodu)

 <?php
// Turn off error reporting
error_reporting(0);

// Report runtime errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Report all errors
error_reporting(E_ALL);

// Same as error_reporting(E_ALL);
ini_set("error_reporting", E_ALL);

// Report all errors except E_NOTICE
error_reporting(E_ALL & ~E_NOTICE);
?> 

No, a zkus opravit jeste v kodu vypisy echo, texty chyb a oznameni tak, aby vypisovali takovy problem, jakemu odpovida podminka.
  

echo "No data found"; // (mysqli_num_rows($res)>0) a protoze 
// nekontrolujes, zda je res null, tak soucasne do te 
// podminky zahrnujes i $res=mysqli_query($conn,$sql);
echo "sql: Nalezeno 0 radku nebo je res null"; // nejak vic uzivatelsky privetivejsi text, No data found nevystihuje druh selhani, spis je tak pro proste uzivatele

echo "Success"; // $mail->send())
echo "funkce PHPMailer vratila true, mail byl poslan uspene mail serveru"; // a mail server ho jeste nemusi odeslat, kdyz je to true

echo "Failure";
Odeslani mailu selhalo. class PHPMailer / mail() false, protoze v mailu jsou chyby nebo se nepodarilo kontaktovat mail server


Vis, ono, zkopirovat neco z internetu, copy, paste, jeste neznamena, ze kodu rozumis, kdyz nejsi ochotny nahlednout ani do dokumentace php.net, co ktera funkce dela a v jakem pripade selhava.

peter
PHP › PHP odosielanie multi emailo…
10. 3. 2020   #385622

jo, a zkus si zapnout error_reporting a i na serveru vypisovani chyb. Je dobre si precis php chybu, kdyz to nedela, co ma.
Na localhost, na tvem pc, nemusis mit v php povoleny mail. Php se ti snazi vypsat chybu, ale ty mas potlacene chybove hlasky v nastaveni php, treba.

peter
PHP › PHP odosielanie multi emailo…
10. 3. 2020   #385621

A mas spravne nastaveny server? Servery obvykle spamy hazou do spam kose, pokud to admini nenastavi jinak. Projde treba prvnich 5 mailu a dalsich 1000 nee.

Nenapsal jsi, jak se ten tvuj program chova. Co se stane? Co vypise? Ten mail z db tam je? zkousel jsi tu adresu pres echo vypsat?

Mohl jsi do fora dat aspon tento kod, ten vypada jako ten hlavni, pokud je ten mailer ok.

<?php

//show errors
error_reporting(E_ALL);
ini_set('display_errors', 1);

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

$conn=mysqli_connect("localhost","root","","mailer");

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

$conn=mysqli_connect("localhost","root","","mailer");

//Setup
$mail=new PHPMailer();
$mail->isSMTP();                                            // Send using SMTP
$mail->Host       = 'smtp.gmail.com';                    // Set the SMTP server to send through
$mail->SMTPAuth   = true;                                   // Enable SMTP authentication
$mail->Username   = '#';                     // SMTP username
$mail->Password   = '#';                               // SMTP password
$mail->SMTPSecure = 'tls';         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
$mail->Port       = 587;
//Mail adding
$mail->setFrom("#");//FROM
//Query to get data from database.
$sql="select * from users where send_email=1";
$res=mysqli_query($conn,$sql);
if(mysqli_num_rows($res)>0)
{
    $mail->addReplyTo("#");
    while($x=mysqli_fetch_assoc($res))
    {
        $mail->addBCC($x['email']);
    }
    // Content
    $mail->isHTML(true);  // Set email format to HTML
//Added your custom subject
    $mail->Subject = 'This is file sending mail';
//Added your custom body
    $mail->Body    = '<h1>Hope, you have recieved email</h1>';
    $mail->AltBody = 'This is for non-html content';
    if($mail->send())
    {
        echo "Success";
    }
    else
        echo "Failure";
}
else
{
    echo "No data found";
}
?>
peter
Matematika › Podmienená pravdepodobnosť
9. 3. 2020   #385615

Na chladničkách sa vyskytne chyba AAA s pravdepodobnosťou 0,1.
Pri výrobkoch, ktoré MAJU uvedenú chybu AAA, dochádza v záručnej dobe k poruche s pravdepodobnosťou 0,6 a pri výrobkoch BEZ chyby AAA s pravdepodobnosťou 0,01.

Mozna, ze to neni uplne jednoznacne srozumitelne, to zadani. Chybu oznacim jako AAA (treba porucha chlazeni).
Cili, ze vsech vyrobenych lednicek (rekneme 100 kusu) ma chybu AAA 10 kusu (10/100 = 0.1).
S chybou AAA nastane stav rozbita v 60% pripadu (0,6).
Bez chyby AAA (jakakoliv jina chyba nez AAA) nastane stav rozbita v 1% pripadu (0,01).
Cili, kdyz se pak v B ptaji na chybu AAA, tak se to tyka jen 10 kusu s chybou, ktera se projevi v 60% pripadu, cili na 6 kusech. 4 kusy vydrzi a kleknou az po zarucni dobe.

peter
Matematika › Podmienená pravdepodobnosť
9. 3. 2020   #385614

Zkusim ti to rozepsat na pocet kusu lednicek...

Na chladničkách sa vyskytne chyba s pravdepodobnosťou 0,1.
Pri výrobkoch, ktoré majú uvedenú chybu, dochádza v záručnej dobe k poruche s pravdepodobnosťou 0,6 a pri výrobkoch bez chyby s pravdepodobnosťou 0,01.
0,1 vyskyt chyby (cili, ze 100 vyrobenych trpi 10 chybou)
0,6 vyskyt poruchy u chybnych lednicek
0,01 vyskyt poruchy u dobrych lednicek

a) Aká je pravdepodobnosť, že sa zakúpená chladnička pokazí v záručnej dobe? 

0,1 * 0,6 = (10 vadnych * 0,6[60%] = 6 vadnych kusu ze 100)
(1-0,1) * 0,01 = (90 dobrych * 0,01[1%] = 0,9 vadnych kusu ze 100) (diky jine zavade)

6,9 kusu / 100 = 0,069 (7%)

b) Chladnička sa pokazila v záručnej dobe. Aká je pravdepodobnosť, že mala túto výrobnú chybu?

To by melo byt tech 0.06 (01, * 0.6), si myslim.
Cili, z tech 6,9 vadnych lednicek ze 100, trpi vadou 10 kusu, ale pokazi se jen 6 kusu (60%).

peter
PHP › Univerzální přidání do datab…
6. 3. 2020   #385598

Hm, to je jiste uzasne, nicmene potrebujes mit seznam povolenych atributu, jinak ti to snadno hacker napadne. A vyloucis tim nezadouci nazvy. A pak z te array muzes sestavit i sql prikaz pro prepare statement.
A slo to napsat i takhle: 

foreach ($_GET as $key => $value) {
    $$key = $value;
}

Ale, to nema podle mne s problemem nic spolecneho. Stale cekame na nejaky kod, se kterym prijdes, ktery bude aspon trochu pripominat vytvareni dotazu. Neco takoveho...
google = dynamic columns sql query php pdo prepare statement
... hm, tak bude treba pouzit jina slova :) 

// google = php array keys to string
implode(", ", array_keys($array));

// google = php array values to string
implode(", ", array_values($array));
implode(", ", $array);
json_encode(array);
serialize(array);

Kazdopadne bys to mel osetrit, jak sql key, tak sql value nez to z implodujes.

 https://www.php.net/manual/en/pdo.prepare
Jestli to spravne chapu, tak muzes bindovat kazdy parametr zvlast, jen si musis vygenerovat z array_keys ten sql dotaz.

<?php
$var="User', email='test";
$a=new PDO("mysql:host=localhost;dbname=database;","root","");
$b=$a->prepare("UPDATE `users` SET user=:var");
$b->bindParam(":var",$var);
$b->execute();
?>

https://www.php.net/manual/en/pdostatement.bindparam

// Example #1 Execute a prepared statement with named placeholders

<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

Mozna bys mel zacit prohlizet i dokumentaci. Da se z ni vytahnout nekolik zajimavych konstrukci. Neni problem si dohledat v ni funkce, ktere neznas a podivat se na example, co ma funkce na vstupu a co s tim udela. Obcas to tam vypisuji. Ja osobne pouzivam to vlastni escapovani, jak jsem psal. Kit ti mohl to bind najit, on je na to expert, kdyz se mluvi o pdo.

peter
PHP › Univerzální přidání do datab…
4. 3. 2020   #385583

fix - GET, Kit narazi na to, ze v prvni zprave pouzivas $_GET. GET metoda ma radu omezeni, napr. limit dat. To POST nema. A jsou s ni spojene ruzne dalsi problemy. Kit nejspis ma dojem, ze ne se vsemi si hrave poradis nebo je budes ignorovat a zpusobis si celou radu problemu.
Neni problem pouzit ajax request jako post, ikdyz nechces formular. To je uz na tobe.
Ten dalsi kod, co jsi poslal, nechapu vubec.

peter
Matematika › Úloha z olympiády
4. 3. 2020   #385582

   

[_|_|_|_|_|_|_]
[_|_|_|_|_|_|_]
[_|_|_|_|_|_|_]
[_|_|_|_|_|_|_]
[ | | | | | | ]

[_] [_] [_] [_] [_] [_] [_] 6 zlomu
[_] [_] [_] [_] [_] [_] [_]
[_] [_] [_] [_] [_] [_] [_]
[_] [_] [_] [_] [_] [_] [_]
[ ] [ ] [ ] [ ] [ ] [ ] [ ]

[ ] 4 zlomy * 7 rad

[ ]

[ ]

[ ]

[ ]
6 + 28 = 34

Sem si to musel taky zkusit. Obrazky jsou lepsatejsi pro nazornost. Ono asi ani jine reseni neni, nejde asi vic ani mene zlomu. V zadani je jen pouzit jednu vrstvu. Jeste by slo to lamat najednou, strojem, jako krajec na vajicka.

peter
PHP › Univerzální přidání do datab…
2. 3. 2020   #385565

Kolik nabizis? Min 500 kc/h za kazdou zapocatou hodinu, kdy se budeme zabyvat tvym problemem. Evidentne tve zminene reseni neni ani zacatkem reseni, takze to znamena cely problem vypracovat za tebe. To neni rada, to je placena prace.

1. Ty tipy, co zatim mas, jsou spatne. Pro kazdou web-services musis mit presne definovane podminky, jinak ti program/databazi hackeri znici. coz zakaznik nema moc rad, kdyz prijde o data.
Cili, mel bys mit definovane pole, seznam atributu, ktere do sql prikazu muzou jit. Pak bys upravil ten prvni cyklus tak, aby prochazel toto pole a sestavoval sql prikaz podle nalezenech atributu.

cyklus(attr as key)
isset($_GET[$key]) ? $keys[] = escapeSqlKey(key); $values[] = escapeSqlValue($_GET[$key])

2. Klidne muzes pouzit I pole v html, ale vysledek bude pro php stejny, musis mit seznam povolenych atributu

<input name=data[houba]>
cyklus(attr as key)
isset($_GET['data'][$key]) ? $keys[] = escapeSqlKey(key); $values[] = escapeSqlValue($_GET['data'][$key])

peter
Matematika › Úloha z olympiády
2. 3. 2020   #385564

   

[_|_|_|_|_|_|_]
[_|_|_|_|_|_|_]
[_|_|_|_|_|_|_]
[_|_|_|_|_|_|_]
[ | | | | | | ]

 Pokud chces nejmensi pocet, tak je nutne postupovat tak, abys pri zlomeni mel obe poloviny tak nejak stejne. Cili, pulenim na pulky.

[_|_|_] [_|_|_|_] 1
[_|_|_] [_|_|_|_]
[_|_|_] [_|_|_|_]
[_|_|_] [_|_|_|_]
[_|_|_] [_|_|_|_]


[_|_|_] [_|_|_|_] 2, 3
[ | | ] [ | | | ]

[_|_|_] [_|_|_|_]
[_|_|_] [_|_|_|_]
[_|_|_] [_|_|_|_]


[_] [_|_] [_|_] [_|_] 4,5, 6,7
[ ] [ | ] [ | ] [ | ]

[_] [_|_] [_|_] [_|_]
[_] [_|_] [_|_] [_|_]
[_] [_|_] [_|_] [_|_]


[ ] [ | ] [ | ] [ | ] 8,9,10,11, 12,13,14,15, 16,17,18,19

[ ] [ | ] [ | ] [ | ]

[ ] [ | ] [ | ] [ | ]

[ ] [ | ] [ | ] [ | ]

[ ] [ | ] [ | ] [ | ]


+15 = 19 + 15 = 34

Kolik vyslo tobe?
peter
Matematika › Pravdepodobnosť s kombinator…
24. 2. 2020   #385541

Nejdriv si musis umet predtavit, jake vysledky muzes dostat.

a) prvých osemkrát nepadne šestka, ale padne posledné dva razy,

10x hazis.
Pro tebe prizniva kombinace je 
x x x x x x x x 6 6
x je cislo 1 az 5
5 na 8 je pocet vsech kombinaci se dvema 6 na konci, kde zadne z cisel pred nimi neni 6.
6 na 10 je pocet vsech kombinaci cisel 1-6 pro 10 hodu
P = 5 na 8 / 6 na 10 = 0,0064 (0,64%)


Nebo na to muzes jit tabulkou. Zvolim jen kombinaci 3 hodu, 6 na konci (xx6):

116 216 316 416 516 | 616
126 226 326 426 526 | 626
136 236 336 436 536 | 636
146 246 346 446 546 | 646
156 256 356 456 556 | 656
--- --- --- --- --- | ---
166 266 366 466 566 | 666
Kombinace pred carou jsou pro tebe priznive.
Ostatni jsou nepriznive a patri tam dale kombinace
xx1, xx2, xx3, xx4, xx5.

25 priznivych kombinaci
3 na 6 = 6*6*6 = 216 pocet vsech kombinaci
P = 25 / 216 = 0.116 (11.6%)
peter
PHP › Úprava webu z 5,3 na 5,6
12. 2. 2020   #385461

   

<?php
class classMyPdo
{
private $pdo_driver;
//...
public function MySQL_Query($query='')
	{
	$result = $this->pdo_driver->query(query);
	}
}

$pdo = new classMyPdo;
//MySQL_Query(...)
$pdo->MySQL_Query(…)
peter
PHP › Úprava webu z 5,3 na 5,6
11. 2. 2020   #385453

Viz gna…
1. zapni si error_reporting a zkus zkopirovat chybove hlasky nebo aspon ten podstatny text z nich.
2. od jiste verze oznacuje php ovladace pro sql MySQL_cokoliv za zastarale. Ale to by teoreticky melo dal fungovat, pokud ti admin neodinstaloval podporu mysql. Pokud jo, tak ho zdrbej, at ti ji nainstaluje. Nebo to prepis na pdo. Idealne, kdyz si na to udelas class.
pak by to slo prepsat treba takto:
MySQL_Query(...)
$pdo->MySQL_Query(…)

3. Neni mi jasne, o co se pokousis timto a co je v tech includech (jestli treba dalsi error nejsou v tech dalsich php)
$obj = new database;

include("phpdata.php");
include ("navigace.php");

4. Zadny z tech pokusu, ktere jsi zkousel jsi sem nedal. Takze tezko te navest, co delas spatne.

peter
HTML / XHTML › Posun obrazku
11. 2. 2020   #385452

Co jsi zkousel?
Ted to vypada tak, ze jsi copy-paste z nejake stranky vzal kod, dal do forka a vyreste problem za mne. Margin, padding, position:fixed, uplne vypnout position. Javascript? Javascriptem muzes udelat cokoliv… Nechapu, proc se zdrzovat css a js-efekty v nem.

peter
MySQL › Převod porovnání databáze do…
6. 2. 2020   #385417

uvedu priklad, ju? z mych kodu

require_once dirname(__FILE__). '/inc/forum_buttons_inc.php';
$btn_new = forumButton('thread_new', $fid);
---
 

<?php
// UTF-8
function forumButton($type='', $id='', $text='')	// text or id2
{
global $forum_threads, $forum_edit, $forum_messages;
$id = (integer)$id;
switch ($type)
	{
	case 'message_spam'  : return "<a href=\"".escapeHtml("/admin/junk.php?mid=" .escapeUrl($id))."\" class=\"btn btn-outline-secondary btn-sm\">spam</a>"; break;
	case 'message_reply' : return "<a href=\"".escapeHtml("$forum_edit?reply="   .escapeUrl($id)."&tid=".escapeUrl((integer)$text))."\" class=\"btn btn-outline-primary btn-sm\">odpovědět</a>"; break;
	case 'message_edit'  : return "<a href=\"".escapeHtml("$forum_edit?mid="     .escapeUrl($id))."\" class=\"btn btn-outline-success btn-sm\">upravit</a>"; break;//warning
	case 'message_delete': return "<a href=\"".escapeHtml("$forum_edit?delete="  .escapeUrl($id)."&fid=".escapeUrl((integer)$text))."\" class=\"btn btn-outline-danger btn-sm\" onclick=\"return confirm('Jste si jistí, že chcete vybranou zprávu smazat?')\">odstranit</a>"; break;
	case 'thread_reply'  : return "<a href=\"".escapeHtml("$forum_edit?tid="     .escapeUrl($id))."\" class=\"btn btn-outline-primary\">odpovědět</a>"; break;
	case 'thread_new'    : return "<a href=\"".escapeHtml("$forum_edit?fid="     .escapeUrl($id))."\" class=\"btn btn-outline-secondary ml-4\">nové vlákno</a>"; break;
	case 'thread_spam'   : return "<a href=\"".escapeHtml("/admin/junkf.php?tid=".escapeUrl($id))."\" class=\"btn btn-outline-secondary btn-sm\">spam</a>"; break;
	case 'thread_open'   : return "<a href=\"".escapeHtml("$forum_messages?tid=" .escapeUrl($id))."\" class=\"btn btn-outline-primary btn-sm\">zobrazit vlákno</a>"; break; // search
	case 'h1'            : return "<a href=\"support.php\">Podpora</a> :: <a href=\"".escapeHtml("$forum_threads?fid=" .escapeUrl($id))."\" >".escapeHtml($text)."</a>"; break;
	default: return ''; break;
	}
}

?>

A pred tim byl v kazdem souboru pro zobrazeni fora (pro kazde vlakno extra php) html kod vypisovany pres echo. Je jasne, ze kdyz pak chces na forku zmenit styly pro bootstrap, tak musis prepsat asi 30 souboru. Ted staci pro tlacitka 1. neni to sice uplne ono, cele forko nejak inteligentne, ale I ta trocha pomuze :)

----
    $replyBtn = "<a rel="nofollow" href=\"edit.php?tid=$t->tid&amp;reply=$v->mid\">odpovědět</a>";
    if (check_perms($v->mid)) {
      $editBtn = "<a rel="nofollow" href=\"edit.php?mid=$v->mid\">upravit</a> ";
      $deleteBtn = "<a rel="nofollow" href=\"edit.php?delete=$v->mid\" onclick=\"return confirm('Jste si jistí, že chcete vybranou zprávu smazat?');\">odstranit</a> ";
    } else {
      $editBtn = ''; $deleteBtn = '';
    }
 

peter
MySQL › Převod porovnání databáze do…
6. 2. 2020   #385416

"spojení s databází asi ve 250 skriptech"
A? To je slozite do souboru vlozit include_once 'sql.php'; a opravit sql prikaz? Muzes si tam pro kazdy typ sql prikazu definovat pomocnou funkci a pak zamenit vzdy stejny prikaz a ostatni vynechat. Sice to nebude eno-nuno, ale porad lepsi mit to pod kontrolou v jedne sql.php nez na 250 mistech :)

peter
MySQL › Převod porovnání databáze do…
20. 1. 2020   #385277

Pokud mas zalohu importovane database, jakoze rozumny clovek si zalohu zalohuje :) Tak podle id se da provest update tech dat, clanku nebo, co to je. Neni treba delat harakiri s diakritikou, kdyz nemusis. To je jistejsi cesta

Nebo by slo udelat script, ktery se k db pripoji pres default kodovani (SET NAMES latin1) ale na stranku to vypise pres header (… utf8). To by melo zobrazit diakritiku asi dobre.
Pokud ano, tak pri updatu zmenis set names na utf8 a nasoukas to tam.
Ale delal bych si to v pokusne db nekde bokem, neprepisovat data, dokud je nemas nekde ve spravnem kodovani.

peter
MySQL › Převod porovnání databáze do…
17. 1. 2020   #385271

Bylo by uplne super, kdybys byl konkretni a napsal, co presne jakymi prikazy si delal a ukazku 2-3 radky zdrojoveho textu.
Obvykla chyba je, ze pri sql dumpu export / import si uzivatel nepohlida default pripojeni pro SET NAMES. Soubor ma utf8. Database muze mit default nastavene latin1. Tabulka v db utf8. On ti to pak prekodovava z utf8 do latin1 a do tabulky to uklada jako latin1. (pro default set names latin1)
V php se pak pripojis k db. Nastavis si utf-8 a database ti z tabulky posle nesmysly.
A nebo to rikam spatne. Ale tak nejak to je :)

Muzes zkusit se podivat na php header() jeste. Pokud mas na obrazovce tyhle znacky a neni tam prohlizec s kodovanim utf, pak by v prohlizeci stacilo prepnout na utf. A nebo v php zasilat ze serveru spravnou header, ze se jedna o utf.
Mozna to rikam nesrozumitelne. Spatne se to popisuje :)
 

peter
PHP › Notifikace nepřijatých dat
14. 1. 2020   #385214

Ten popis ani dotaz neni prilis jasny.
Mas aplikaci, ktera uz neco odesila? Jak to dela?

Treba, kdyby to resil javascript, tak v nejakem objektu aktivuje odesli tu a tu notifikaci.
Na pozadi bezi casovac, ktery v intervalu ten objekt (class) kontroluje a kdyz najde neco k odeslani, tak to odesle.
Pokud bys chtel kontrolovat data, tak bys musel napojit objekt notifikaci na prichod dat. Ten by ulozil cas posledni aktualizace pro konkretni stream. Casovac by nekotroloval tru/false odesli tu a tu notifikace, ale cas posledni aktualizace rozdil proti sql NOW(), time() a pokud ten rozdil prekrici nejakou hranici...

Jak rikam, cele to zalezi na tom, jak to mas resene. Do ceho muzes sahat. Kdybys nemohl sledovat primo prichozi data, musel bys je sledovat z povzdali, zvenci, nejakym slesl sql dotazem zkontrolovat v casovem intervalu, ze je v grafu nova hodnota. A ten interval by te omezoval v tom, ze treba se trefis do 3x poslednich vypadku a jindy data prijdou. Proto je lepsi zaznamenat cas posledni zpravy.

peter
JavaScript, AJAX, jQuery › web systém pre manažment úlo…
9. 1. 2020   #385186

Project Management Apps for Slack … takze ne slag, ale slack :)

peter
JavaScript, AJAX, jQuery › web systém pre manažment úlo…
9. 1. 2020   #385185

Jen 10.000? Dnes? Kvalitni sw na miru (z niceho)? Min. 500.000. Pokud jej prodas pak 1000x, to je tva vec. ale programovani zabere cas. Mozna nejaky student VS by do toho sel a rozhodne by to nemel vysledek vetsi cenu nez tech 10.000.

A hotova reseni? Urcite jsou. Musis mit konkretni predstavu, co od toho ocekavas a popsat to googlu.
google = work task cms free
Podle google se tyto programy oznacuji jako Project Management (OpenProject), Task Management (to je spis sprava tasku, spravce uloh jako ma windows)
google = cms free Project Management
Tusim, ze bracha v praci pouziva Slag. Ale nevim, jak se to pise presne.

peter
PHP › Skript shopu se neuložuje do…
11. 12. 2019   #385011

Ja bych do obou php napsal
$path = "$document_root/../shop/orders.txt";
echo $path;
$fp = fopen($path, 'rb');

Jak pise Kit, v te chybe mas
C:/wamp64/www/../shop/orders.txt
C:\wamp64\www\Shop\method.php
Cili, cesty nejak hodne divne. A pokud jde o Linux, tak rozlisuje I velka pismena.

Tez Kit psal, ze se mas zbavit fopen. Nove se pouziva file_get_content a file_put_content.
php.net/file_get_contents
php.net/file_put_contents
A ti lepsi to resi ukladanim do database. Coz muze byt praktictejsi. Zalezi na tom. Ty nejspis dal tu objednavku v kopii posilas na mail? To muze byt soubor prakticky. Nicmene bacha na prava. Kdyz ulozis soubor do slozky, muze byt a vetsinou byva, pristupny I na web pro anonymniho uzivatele. Cili porusujes zakon o zabezpeceni osobnich udaju zakaznika.

peter
JavaScript, AJAX, jQuery › soubor js dotaz
29. 11. 2019   #384858

no, ja vychazi z toho, co jsi psal. Ze mas bash prikaz, ktery ti vygeneruje obrazek. V php se bash prikazy spousti pres passthru. Takovy jednoduchy test treba s ls. Pokud ti to neco vypise, tak to v php jde

$cmd = "ls";
passthru($cmd);

V mem pripade mam win/xamp.

$cmd = "dir";
passthru($cmd);

<?php
ob_start();
$cmd = "dir";
ob_clean();
header("Content-Type: text/html; charset=ibm-852");
echo '<pre>';
 
<img src=obrazek.php>

--- obrazek.php ---
<?php
ob_start();
$path = "teplota.png";
ob_clean();
header("Content-Type: image/png");
$data = file_get_content($path); // uloz data obrazku do promenne
echo $data;
exit;
?>

coz je vlastne to, co ti psal uz gna, z cmd bys to ziskal

<img src=obrazek2.php>

--- obrazek2.php ---
<?php
ob_start();
$cmd = "...";
ob_clean();
header("Content-Type: image/png"); // nastav hlavicku requestu, ze posilas prohlizeci obrazek
passthru($cmd); // ziskej a zobraz data obrazku do promenne
?>

<div><?php include 'obrazek3.php'; ?></div>

--- obrazek3.php ---
$path = "teplota.png";
$data = base64_encode(file_get_contents($path));
$src  = 'data: '.mime_content_type($path).';base64,'.$data;
echo '<img src="'.$src.'">';

https://stackoverflow.com/questions/8499633/how-to-display-base64-images-in-html
je tam verze i pro js, css-background

($cmd);
?>

Cili, pokud dokazes bash prepsat do php stringu, tak neni problem.

Mno, ze to teda nechces opakovat, v tom taky problem nevidim. Proste si budes kontrolovat stari souboru a pokud odpovida intervalu, tak kod preskocis.

A dalsi vec, co asi resis, ze ten bash to ulozi do souboru. Tak treba prostudovat ten program, aby ti to poslal na screen, kdyz to nechces do souboru. 
Php zobrazuje obrazek takto:
 

peter
JavaScript, AJAX, jQuery › soubor js dotaz
28. 11. 2019   #384836

 Ono ti to pise no argument, protoze mas spatne ten cmd. 

$DIR="/media/FlashDisk"
$DIR1="/home/pi"

$cmd = "rrdtool graph $DIR1/graf_deni.png --start -1d --watermark \"xxx\" --width 800 --height 240 DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE AREA:venku\"#FFE999\":\"Teplota venku\\t\\t\"";
// uvozovky uvnitr stringu ohraniceneho uvozovkami se v php musi zapsat jako zpetne lomitko + uvozovka (pokud to nahodou forko odbouralo. A vsechna zpetna lomitka totez.)

// nebo mozna pujde i
$cmd = <<<EOF
rrdtool graph $DIR1/graf_deni.png --start -1d \
--watermark \"xxx\" \
--width 800 \
--height 240 \
DEF:venku=$DIR/databaze_teplota.rrd:venku:AVERAGE \
AREA:venku"#FFE999":"Teplota venku\t\t"
EOF;

// echo $cmd; exit(); // --- tak si ten cmd vypis na obrazovku a zkontroluj, zda je stejny jako v shellu
passthru($cmd);
// google = php passthru
// executes a command + when the output from the Unix command is binary data
// which needs to be passed directly back to the browser
// Cili to jenom spusti linuxovy shell kod. Pokud je kod dobre, tak to vrati
// data, ktera zobrazi shell, jinak to vrati error.
// Pokud neumim do php napsat spravne command, tak ho shell nedokaze vykonat.
// Nehlede na to, ze php / slozka / soubor muze byt nastaveny tak, aby neprovedl
// zadny shell. 

// Udelej si test:
$cmd = "ls";
passthru($cmd);
peter
JavaScript, AJAX, jQuery › soubor js dotaz
26. 11. 2019   #384813

   

html://192.168.1.5:8888/rrdgraph_test/rrdgen.php?start=1574290800&end=1574294400&
http://192.168.1.5/…t/rrdgen.php?…
https://192.168.1.5/…t/rrdgen.php?…

Proc tam mas html v adrese?


$command = 'rrdtool ...';
passthru($command);
header("Content-Type: image/png");
- nemel by se ten obrazek vypsat pres echo nebo tak neco?
- a vraci to obrazek png nebo v jinem format, treba jpeg, gif?

- treba, kdyz delam download, tak pouzivam bo_start a ob_clean, aby se mi do kodu obrazku nedostal nejaky parazitni znak 

	
ob_start();

//$root = dirname(__FILE__).'/';	// nefunguje na localhostu
//require_once $root.'exception.php';
//set_exception_handler('defaultExceptionHandler');
//if (!isset($config)) {
//	include_once $root.'config.inc.php';
//	}

header('P3P: CP="CAO PSA OUR"');	// aby session fungovala spravne v iframe v IE
header("Content-Type: text/html; charset=UTF-8");
…… nejaky dalsi php kod

ob_clean(); // smaz vsechno, co zatim slo na screen, echo, print, error hlasky
	header('Content-Description: File Transfer');
	header('Content-Transfer-Encoding: binary');
	header('Content-Encoding: '.$charset);
	header('Content-Type: '.$type.'; charset='.$charset);
	header('Content-Disposition: attachment; filename="'.$file.'"');
	header('Content-Length: '.$size);
	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
	//header("Cache-Control: no-store, no-cache");
	header('Pragma: public');
	header('Expires: 0');
	echo $content;
	exit();

- muzes zkusit pouzit textovy editor a podivat se na text toho souboru? mozna ze tam mas pred zacatkem obrazku parazitni kod, chybovou hlasku. Ja bych to dal do stranky jako link a pak klikl pravym tlacitkem ulozit jako a dal bych tomu priponu txt. 2x klikem na souboru se spusti notepad. Na prvni pohled by melo byt videt, co jsou data obrazku a prednim nebo za nim muze byt nejaky kod.

peter
Návrhy na vylepšení › English Spam
18. 11. 2019   #384692

Co jsem si vsiml, tak se prubezne spousti jakysi js, ktery narusuje plynule psani zpravy. Mne to treba blbne v Edge pri zadani noveho radku. Nebo semtam nekam jakoby nahodile skoci kurzor…
Kdyby to slo, zrusil bych ze stranky uplne kazdy kod js, ktery se netyka fora. (docasne mozna I reklamy a nebo reklamy dat do iframu aby nemohly zasahovat do hlavni stranky). totez pocitadla kliku a dalsi parazitni veci. Je mozne, ze se nejaky js pobil s jinym, proste.

peter
Návrhy na vylepšení › English Spam
18. 11. 2019   #384691

Mne hlavne ve FF stale nejde vubec odepisovat. Ta google vecicka a dalsi kod se nezobrazuje.
Zajimave je, ze jinde mi ta google ochrana jede, treba na serialech nebo jinych strankach, i ve FF

Ja bych to antispamu pridal detektor zeme a pokud neni cz, tak to rovnou posilal ke schvaleni nebo poustet to pres nejake spesl filtr jeste. 
Jestli spamuji ceske IP, tak to je zvlastni. 

Ja si stale myslim, ze tu ochranu mas celou nejak blbe udelanou a nebo mas napadeny kod forka. Nikde jinde, krom tohoto forka se s takovym spamem nesetkas.
Nemas kod toho forka nekde na githubu, ze by jsme ti na to mrkli a navrhly zmeny? Nebo to zipuj, zahesluj a dej pak link.

peter
C / C++ › Vyhodnocení EKG
11. 11. 2019   #384595

Z ekg by slo navic zjistovat, ze ten clovek je postizeny nejakou konkretni nemoci. Mozek urcuje, co od srdce ocekava a na nektere nemoci pridava na sile nebo rychlosti nebo pri zatezi se ta anomalie projevi.

peter
C / C++ › Vyhodnocení EKG
11. 11. 2019   #384594

Viz Kit. Prijde mi, ze nemas predstavu, co ten system dela a ze od toho ocekavas neco jineho.
Existuji programy, ktere dokazi analyzovat krivky. Maji v sobe zabudovane funkce, ktere v te krivce neco konkretniho hledaji. Napriklad, co se opakuje, jak casto, s jakou mezerou, jake jsou odlisnosti, chyby, velikost amplitudy… Tomu programu das krivku, vyplivne ti vysledek.
U EKG, co jsem zkousel googlovat, je asi 50 veci, ktere tam doktori rozeznavaji. Ty budes muset naprogramovat funkce, co to tam ty data najdou. Nebo rici AI, co ma hledat. Pochybuji, ze ta AI uz ma predprogramovane aspon zakladni veci. Jestli chces pouzit obrazky, tak ji musis rici, co na nich je (ktera z tech 50 anomalii, kde se nachazi). A mel bys jich mit tak aspon 1000. Pak to samozrejme neni problem. Pak to dava smysl. Pr. Chces pouzit obrazky a najit na nich ohen, treba. O tom byl nekde nedavno clanek. To z puvodniho zadani neni jasne.

peter
C / C++ › Vyhodnocení EKG
8. 11. 2019   #384550

Ok, takze o FT, DFT, DCT asi moc nevis.
- FT je matematicky postup, ktery krivku, ktera jde jednim smerem (nesmi se vracet) popisuje jako soucet sinu a kosinu. Pouzivaji to elektrotechnici.
tvoje cara = suma sinu + suma cosinu
- DFT je diskretni FT. Krivku navzorkujes na jednotlive pixely a opet prevedes na sin, cos.
- DCT je DFT, ale krivku posunes na x,y tak, aby ti stacil jen cos. Coz zjednodusi vypocty. Pouziva to jpeg (1992) 

Existuji I jine vlnove transformace. Velmi zname jsou elipticke, parabolicke, hyperbolicke, kubicke krivky.
(Jednu chvili byl popularni obrazkovy format lura-wave, LWF.)
funkce = 1/1x + 1/2x + 1/3x + 1/4x …
cos = asi takto x^2/neco + x^5/neco (nemam ted po ruce algoritmus...)
V urcitem intervalu s jakousi dostatecnou presnosti lze kosinus popsat souctem x na n. Pro jiny usek platila zas jina rovnice. Coz znacne zrychlilo vypocty s kosiny. Protoze ty de driv dopocitavali presnym vypocetne narocnym vzorcem.

Cili, pokud je zadani popis krivky, tak to resi FT.
Pokud mas jine zadani, vytezit informace z krivky, analyzovat, tak musis pouzit nejake analyticke programy s pravidly. Treba te zajima, zda ma pulz staly, pravidelny, jak vysoky, jak casto se objevuje anomalie. Neco se da vycist z FT, ale tebe mozna zajima AI s analyzou.

peter
C / C++ › Vyhodnocení EKG
7. 11. 2019   #384547

Jak se to resi pres cuda netusim, ale, jak pise kit, obvykle se jakekoliv signaly vyhodnocuji pres fourrierovu transformaci. Urcite je soucast AI, protoze jpeg pouziva diskretni four. trans. DCT. Cili se tim dekoduji veskere textury pres grafiku.

peter
MySQL › Mysql opačná hodnota při upd…
4. 11. 2019   #384516

a.hodnota = 1 - b.hodnota
1-0 = 1
1-1 = 0

peter
Python › Python-parametricky tvar rov…
21. 10. 2019   #384426

google = python read data

Mohlo by to byt neco jako
Ax = request['Ax']
Ay = request['Ay']
Bx = request['Bx']
By = request['By']

google = python write data
print 'x={}t+{}'.format(2, 3) // viz gna, by mohlo prepsat {} za cislo 2 a cislo 3

No, a vypocet, mezi tim, ti mas podle sesitu/ucebnice mamematiky, viz milan. Mas primku definovanou 2 body a chces jeji parametricke vyjadreni.
google = primka 2 body parametricke vyjadreni
https://maths.cz/…dreni-primky
http://www.realisticky.cz/…Dmky%20I.pdf

Hlavne by teda bylo dobre prijit s tim, co z toho programu mas hotove, s cim presne si nevis rady? Takhle to vypada, ze chces, abychom to za tebe cele vyresili.

peter
PHP › Výpis článků dle kategorie
11. 10. 2019   #384386

Jo, jeste by tam melo byt htmlspecialchars, ale to je celkem jasne...
 

echo sprint('<tr><td>%s</td><td>%s</td></tr>', htmlspecialchars($row['nadpis']), htmlspecialchars($row['kategorie']));
peter
Regulární výrazy › Jednoduchý regulární výraz p…
26. 9. 2019   #384336

Zajimave, fotko to icko zmenilo na svislou carku | nebo mozna velke I
 

priklady vyrazu https://www.php.net/preg_replace
tam je See Also: PCRE Patterns 
- modificatory: https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
- syntaxe https://www.php.net/manual/en/reference.pcre.pattern.syntax.php

mozna tam bude treba dat jeste modifikator m a g
 

'~<body[^>]*>~im

// i (PCRE_CASELESS) =  pattern match both upper and lower case letters
peter
Regulární výrazy › Jednoduchý regulární výraz p…
26. 9. 2019   #384335

$vyraz='[<](body|BODY)[^>]*[>]'; // stale to mas spatne. Musis se naucit cist dokumentaci na php.net, fakt. Jinak se dal nehnes.

[<](body|BODY)[^>]*[>] - to je reg. vyraz
<body[^>]*> --- mozna by to fungovalo i takhle a jeste je treba tam pridat ohraniceni reg. vyrazu kvuli modifikator
/<body[^>]*>/ --- nebo
~<body[^>]*>~ --- a modifikator pro mala velka pismena 'i'
~<body[^>]*>~I --- mno, a kdyz to mas hotove, pak z toho musis udelat php string
'~<body[^>]*>~I'

$vyraz = '~<body[^>]*>~I';

i znamena, ze bude uvazovat mala velka pismena
[] oznaceni mnoziny znaku
[<] pouze znak <
[^>] mnozina vsech znaku krome >
[^abc] krome abc
… to mas ale vypsane na tom regexp.cz


Fakt, regularni vyrazy je snadne pochopit. Neni to takova zahada.
body|BODY - body nebo BODY
b|B - b nebo B
[bB] - b nebo B
bB - bB oba znaky, podobne jako slovo body
[bB]+ - opakovani znaku b nebo B nebo kombinace, v poctu 1 az nekonecno (+)
[bB]* - opakovani znaku b nebo B nebo kombinace, v poctu 0 az nekonecno (*)
[bB]? - opakovani znaku b nebo B nebo kombinace, v poctu 1 (?)
b - znak b
b? - znak b
b+ - znak b nebo bb, bbb, bbbb…
b* - nic nebo znak b, bb, bbb...
 

peter
Regulární výrazy › Jednoduchý regulární výraz p…
23. 9. 2019   #384307

   

$vyraz="'^[<body]' a zároveň '>$'";
To uz od pohledu vidis, ze je to nesmysl, preci, ne?
'^[<body]' a zároveň '>$' // bez dvojuvozovky
'[<body]' a zároveň '>' // bez zacatek a konec radku
A ted si poloz otazku, co tam delaji ty jednoduche apostrofy?
[<body] // a do hranate zavorky se pise vycet znaku
a[XYZ]b = aXb, aYb, aZb
[<body] = <, b, o, d, y 
[<body]* = <, b, o, d, y nebo jakakoliv kombinace znaku v zavorce <b, yd, oo, yy, <<

Regularni vyraz funguje tak, ze ma vzorec. Vyhledej string v retezci podle vzorce.

peter
Regulární výrazy › Jednoduchý regulární výraz p…
23. 9. 2019   #384306

Pises nesmysly. Prostuduj si aspon regexp.cz, kdyz uz nezkusis googlovat. Nevim, kde jsi sebral hvezdicky. To si asi pletes s dosem. 
. = libovolny znak
* = opakovani 0-nekonecno

<body bgcolor="black" style="něco" cokoliv dalšího>
<body>
\<body.*\>
\<body[^>]*\> lepe, pripadne mozna bez tech lomitek ti to mozna pujde take a nebo bude nutne
[<]body[^>]*[>]
peter
CSS › Bootstrap a order sloupců
20. 9. 2019   #384290

Ups, v textu, kde mam sirku 3, tam ma byt 4. 
(ja to mel puvodne pro 3, ale pri editaci jsem tam chtel dat copy-paste kod a necham jsem tam 4 z winraru, promin)

peter
CSS › Bootstrap a order sloupců
20. 9. 2019   #384289

#3 MilanL Spis ho zajimala vymena poradi. Jakoze mas sloupce 1 2 3 a potrebuje je jako 1 3 a 2. 

#2 peter Ale milan ma pravdu v tom, ze mozna nemas ani ty sloupce. Zkusim to vysvetlit taky.
BT pro ruzne sirky okna rozlisuje velikosti nic, sm, md, lg, xl. Dale rozlisuje sirku 1-12.
https://getbootstrap.com/…layout/grid/
Pokud potrebujes, aby neco bylo sloupec na malem, sirka 3 a na velkem cely radek, sirka 12, pise se to takto:

class="col-12 col-md-4"

Pro vsechna zarizeni bude 12. Pro md, lg, xl 3. Pouzil jsem to na winrar.cz

class="col-12 col-sm-12 col-md-4 col-lg-3" // col-sm-12 tam nemusi byt, pro md chci 4 sloupce, pro lg 3 a xl take 3
class="col-sm-12 col-md-4 col-lg-3" // takto je to mozna prehlednejsi

No, a to poradi tim orderem.

peter
CSS › Bootstrap a order sloupců
19. 9. 2019   #384286

google = bootstrap column order

https://stackoverflow.com/questions/18057270/column-order-manipulation-using-col-lg-push-and-col-lg-pull-in-twitter-bootstrap

BT3: .col-pull-5 .col-push-5 (.col-vp-push-x .col-vp-pull-x) .col-lg-push-4
BT4: .order-2 .order-1 .order-first .order-last (.order-md-*)

https://getbootstrap.com/docs/4.0/layout/grid/#reordering
https://getbootstrap.com/…lities/flex/#…
https://getbootstrap.com/docs/4.0 - do policka sarch napises order (poradi sloupcu) a ono ti to neco najde. Hlavne to musis aspon zkusit. Nebo pouzij translator.google.com, napis tam poradi sloupcu, pak klikni, ze to chces v anglictine.

3s + 10 min psani odpovedi. Jak dlouho cekas na odpoved? 17h? Asi jsi to mohl najit rychleji googlem.

peter
JavaScript, AJAX, jQuery › Efektivnejsi tvorba webovych…
5. 9. 2019   #384212

Takhle, cely problem obvykle spociva v tom, ze zakaznik pozaduje individualni chovani prvku.
To, co tady popisujes jako suprovni vec, ja si v textovem editoru dokazi vyrobit asi za 15 minut, obvykel metodou copy-paste z jinych projektu nebo dokumentace css bootstrapu. K tomu napojim css bootstrap. a mam stejny vzhled. Ba, co vic, primo si nastavim nektere parametry bez sloziteho klikani, jako css a ruzne aria a pod.

peter
JavaScript, AJAX, jQuery › Efektivnejsi tvorba webovych…
5. 9. 2019   #384211

On zminil FrontPage. Ten resil neco podobneho. Navic, I editaci obsahu.

Ten program muze byt dobry, ale take muze byt k nicemu.
Vetsinou potrebujes mit dynamicky web, to se 10 kliknutimi neda vyresit. Formular uz vubec. Pouze vzhled, ale to je 1% celeho kodu u dynamickeho webu. To by ti to ten program musel vyresit I databazove, php kod a dalsi serepeticky. Nerikam, ze to nejde tak naprogramovat. V podstate by slo pouzit neco jako php nette, js jquery, css bootstrap. Nebo ruzne pluginy do php pro formy a jine technologie.

'znalost nepredava v knihach ani v komunite' - knihy nestihaji drzet krok s vyvojem. Znalosti jsou v online dokumentaci nebo googlem najdes ruzne diskuze, komunitu. Ten tvuj program by musel upgradovat v podstate kazdy mesic.
Jak se kdysi resil layout slozite v css, tak dneska je mozne definovat si v css, kde ktery blok bude. Pripadne je prehazet podle cisla. Nemusis resit v css nejake position nebo tak neco.

'(jaky nejlepsi Twiiter Boostrap WYSIWYG' - nepouzivam

peter
MySQL › Prázdny string pre int
9. 8. 2019   #384099

   

$sovolne = null;
echo "SELECT * FROM tabulka WHERE prom='$prom'";
// SELECT * FROM tabulka WHERE prom='' -- string, protoze tam mas apostrofy

$sovolne = "null";
echo "SELECT * FROM tabulka WHERE prom='$prom'";
// SELECT * FROM tabulka WHERE prom='null' -- string, protoze tam mas apostrofy

$sovolne = "null";
echo "SELECT * FROM tabulka WHERE prom=$prom"; // smazane apostrofy
// SELECT * FROM tabulka WHERE prom=null -- null jako null

Jinymi slovy, ten dotaz mas spatne napsany, proto ti to nefungovalo.
Prepare tam ty apostrofy pridava samo, pokud je treba. Ono to zalezi natom, zda mas ve structure tabulky povolene, ze tam muze byt NULL. Kdyz ne, tak ti z toho udela normal string 'NULL'.

peter
MySQL › Prázdny string pre int
8. 8. 2019   #384094

Zkusim objasnit, co psal uz kit driv o tom null.

UPDATE vstupnakontrola SET sovolne = NULL - toto je dotaz, jak to ma bys spravne s nul
UPDATE vstupnakontrola SET sovolne = '$sovolne'";  - to je tvuj php kod a vyrobi dotaz
UPDATE vstupnakontrola SET sovolne = 'NULL' - coz je retezec obsahujici text NULL nebo treba autobus
UPDATE vstupnakontrola SET sovolne = 'autobus'
Jenze text 'NULL' nebo 'autobus' je uplne neco jineho nez konstanta NULL.
 

peter
PHP › Má zmysel sa učiť PHP?
8. 7. 2019   #383987

má význam sa učiť PHP a databázu MySQL? - ano
Má tento jazyk ešte budúcnosť - ano (budoucnost i minulost)
je čím ďalej tým viac na ústupe? - ano (vuci stale novym jazykum)
Bolo by lepšie niečo ako Java alebo Python? - ano (budoucnost i minulost)

Podivej. Jsou firmy, ktere se chteji jasne vymezit, prosadit sve technologie. To je napriklad Microsoft, Ibm a podobne. Microsoft bude prosazovat c# a nebudes mit asi problem sehnat zamestnani. Ibm uzjidi na Jave. Google tusim Python. A vsichni svobodni si vybiraji, co chteji. Pro mobily java, web c# nebo php.

MySQL, mno, vetsina dat se uklada do struktury nazvane databaze. Je celkem jedno, zda je to microsoft mssql nebo IBM oracle sql nebo svobodna MySQL (MySQL ted tusim vlastni oracle). Neni problem to kombinovat.

U velkych firem to funguje tak, ze ti za velke penice daji super hw, jejich sw a nabizi za velke penize podporu a jine veci. Tohle funguje docela dobre I do budoucna.
U svobodnych veci je budoucnost nejista. Spoustu i dobreho sw konci po par letech, kdy se uz o to nema kdo starat.

Co potrebujes? Mit prehled, jak to asi funguje. Php + mysl + html. V jinem jazyku jsou funkce jinaci, ale princip fungovani je tak stejny. c# + mssql + html.
V necem se pracuje lepe, v necem hure.
Je to jen na tobe. Tezko se radi do budoucna. Dneska se vse rychle meni. Treba bude programovat AI.
Podivej, drive byli lidi radi, ze chovaji zviratka, pestuji obili, maji kde bydlet. Dneska se maji jako kralove (ale furt si stezuji), vlastni dum s nekolika mistnostmi vybaveny vsim moznym, kocar, televize … A nikdo moc chov a pestovani neresi. Spousta lidi to ani neumi. Jak ti radit, co se mas do budoucna naucit? :)
Treba, ja, kdyz mel 8, tak zacala era pocitacu. Byl jsem jeden z prvnich lidi v republice, co meli pc 286 doma. Spousta lidi 30-100 let po 30 letech nechce s pc mit nic spolecneho. Coz je celkem tragedie. Takze to vidim tak, ze mym poslanim je, co nejvic lidi s tim seznamit. Podobne jako dnes auto povazuji za bezne, super vec, aby tak brali I pc.

peter
PHP › Změna textu - Odebrat diakri…
8. 7. 2019   #383986

TajemnaFunkceKterouNeznam($data);
Myslis jako znova napsat tu funkci, co uz jsem napsal driv? :)

peter
PHP › Změna textu - Odebrat diakri…
4. 7. 2019   #383969

No, a jeste ten preg_replace uprav tak, aby odstranil '-' na zacatku a na konci. Ale to snad zvladnes vygooglovat uz sam :)

peter
PHP › Změna textu - Odebrat diakri…
4. 7. 2019   #383968

1. strtr - nejdriv se zbav diakritiky

function strtoupper_ga($a) {
    return strtr(mb_strtoupper($a, "utf-8"), array(
      " MB" => " mB",
      " GC" => " gC",
    ));
}
https://www.php.net/…rtoupper.php

$table = array( // pouzitelne pro I pro UTF-8
        'Š'=>'S', 'š'=>'s', 'Đ'=>'Dj', 'đ'=>'dj', 'Ž'=>'Z', 
    );
    return strtr($string, $table);
https://www.php.net/…on.strtr.php
Example #1 strtr() example
$addr = strtr($addr, "äåö", "aao");

2. a se zbav velkych pismen pomoci strtolower(), nebo hned tim strtr, 
$str = strtolower($str);

3. a pak cizich znaku, neco jako
preg_replace('~[\W\D]+~', '-', $str); nebo 
preg_replace('~[^a-z0-9]+~', '-', $str);


Vsechno se ale mirne komplikuje, pokud tam mas utf-8 nebo utf-16. Examply najdes v manual u tech 3 funkci. Jinak by to slo napsat na 3 radky, jak vidis.

peter
PHP › Nevrací strukturu XML
4. 7. 2019   #383967

Jo, a bez vysledneho xml, ktery to vygeneruje nebo vstupnich dat pro ten php ti nelze poradit s chybou. Vsechno to dulezite mas u sebe. Ten php se bez dat neda spustit.

peter
PHP › Nevrací strukturu XML
4. 7. 2019   #383966

Ten debugger, muzes zkusit i neco online.

Ja bych si cely ten out vypsal na obrazovku, echo htmlspecialchars($out) a zkusil najit moznou chybu podle oka.
Ale pise ti to tam konkratnei radek, sloupec. Nejspis je tam nejaky text mimo tagy, na konci.
'Extra content at the end of the document '

Mimochodem, klidne tam muzes davat I nove radky $out.= "\n<cena_v… Coz by melo upresnit radek, na kterem nasel chybu.
Ale ja bych sel fakt do funkce, ktera  ti z pole udela xml :) To, co delas je sice pekne, ale hrozne nachylne na chyby.

peter
JavaScript, AJAX, jQuery › javascript aplikace
27. 6. 2019   #383942

https://www.jakpsatweb.cz/html/formulare.html

peter
JavaScript, AJAX, jQuery › javascript aplikace
27. 6. 2019   #383941

Mozna, kdybys dal kod na testovani…
JS by mel brat normalne click. Tak zkus jen jednoduchy kod s alertem: 

function tlacitkoKlik () {alert('kliknuto');}
element.addEventListener('click', tlacitkoKlik);

<button id="odesli">Uložit</button>
A mimochodem. button a input type=submit jsou odesilaci tlacitka formulare. Pokud nezakazes formulary event onsubmit, tak defaultni chovani je odeslani formulare na server. Ve tvem pripade se to projevi jako znovunacteni stranky. Cili, misto button zkus pouzit input type=botton

peter
JavaScript, AJAX, jQuery › Vycentrování okna nefunguje
19. 6. 2019   #383924

V Edge to funguje.
Explorer to ignoruje.
Firefox nastesti take.

alert([width, left_point, height, top_point]) // ff - spocita to ok, 1440,620,839,319
window.moveTo(left_point, top_point); // ff - prikaz ignoruje, uklada okna podle sveho asi posx+100px, posy+100px.


A ten zapis by sel udelat jinak, pomoci shiftu doprava (deleni 2, posunuti o 1 bit doprava u int cisla).
var left_point = (width - window_width) >> 1
var top_point = (height - window_height) >> 1;
 

peter
PHP › Odčítání od proměnné nefunguje
31. 5. 2019   #383785

#4 Kit
Mnooo, jsou vyjimecne pripady, kdy to ma smysl, treba parser nebo, kdyz potrebujes usporit pamet.
Ale souhlas, ze u ulohy do skoly pro par bajtu pameti to prilis smysl nema :) Ale, v tom kodu, jak ho ma napsany, mi to prijde jako elegantin reseni bez nutnosti ho cely prepisovat. To zas jako u gna ocenuji.

peter
PHP › Odčítání od proměnné nefunguje
30. 5. 2019   #383781

Pridal jsem tam par komentaru, aby bylo videt, ktery stav nastal a a ty hp uvnitr prejmenoval. Ale, podle meho to normalne odcita.
Samozrejme, problem by mohlo byt, ze ty to sice odectes, ale vysledek nechas uvnitr. Takze, bud je treba pouzit odkaz viz gna a nebo nejak sikovne return.

<?php
function konec1($hp) {echo 'konec1';}	// pridano
function konec2($hp) {echo 'konec2';}	// pridano
function nic() {echo 'nic';}	// pridano


// prohra

function prohra($hp, $dmg) {	// vnitrni promenne jsem prejmenoval na hp a dmg pro zjednoduseni
echo "Prohra - hp, dmg = ".$hp.', '.$dmg.'<br>';	// pridano
$hp = $hp - $dmg;
echo "Protivník ti ubral za: ".$dmg;
echo "<br>";
echo "Tvoje HP: ".$hp;
if ($hp<=0) {
echo "<br>";
echo "Umřel jsi :)))";
konec1($hp);
}
}

// vyhra

function vyhra($hp, $dmg) {	// vnitrni promenne jsem prejmenoval na hp a dmg pro zjednoduseni
echo "Vyhra - hp, dmg = ".$hp.', '.$dmg.'<br>';	// pridano
$hp = $hp - $dmg;
echo "Ubral jsi protivníkovi za: ".$dmg;
echo "<br>";
echo "HP2: ".$hp;
if ($hp<=0) {
echo "<br>";
echo "Porazil jsi protivníka!";
konec2($hp);
}
}
 

// rozhodnutí co se stane

$c = mt_rand(1, 12);
echo "random = $c<br>";	// pridano
if ($c<=4) {	// upraveno
//prohra($_SESSION["hp1"],$_SESSION["dmg1"]);
prohra(10, 4);	// upraveno
} elseif ($c>=5 and $c<=8) {
nic();
}
elseif ($c>=9) {	// upraveno
//vyhra($_SESSION["hp2"],$_SESSION["dmg"]);
vyhra(15, 1);	// upraveno
}
//break;	// odstraneno

?>
peter
PHP › Ukládání do souboru
21. 5. 2019   #383736

Asi spam, klikl jsem Nahlasit moderatorum.

peter
JavaScript, AJAX, jQuery › Pomoc se scriptem spouštějíc…
3. 5. 2019   #383617

Programovani je pro kazdeho, kdo je ochoten naslouchat fungovani sveta. Muze mu to otevrit zcela jedinecny pohled na svet. Nebo taky ne :)
Vyssi level je pak, kdyz je jedinec creativni. To pak umi zazraky.

peter
JavaScript, AJAX, jQuery › Vysvětlení kodu Accordion
2. 5. 2019   #383602

var acc = document.getElementsByClassName("accordion");
get-Elements!-By-Class-Name
acc = [element, element, element]

for (i = 0; i < acc.length; i++)
element =  acc[I]

acc[i].addEventListener("click", function()
element.addEventListener("click", funkceX);

---

function funkceX()
{
this.classList.toggle("active");  // element.addEventListener("click", funkceX); // this = element, kde byla pozice mysi, kdyz nastala event udalost (stisk klavesy, mys tlacitka, pohyb mysi)
    var panel = this.nextElementSibling; // googlem
}

google = nextElementSibling
https://developer.mozilla.org/…ementSibling
Jestli to spravne chapu, tak to da dalsi element ve stromu na stejnem levelu zanoreni.
Nevim, co predstavuje pojem webova harmonika, ale ten kod by mohl zobrazit 1 dalsi div pod divem, na ktery jsi klikl.
Cili, kdyz mas strukturu 

<div class=accordion>tlacitko</div>
<div><ul class=list_links><li><li><li></ul></div>
<div class=accordion>tlacitko</div>
<div><ul class=list_links><li><li><li></ul></div>

tak by to melo vzdy sbalit a rozbalit menu.

Misto getElementsByClassName se da pouzivas nove querySelector('.accordion')

peter
PHP › Viacnásobné vloženie hodnôt…
2. 5. 2019   #383601

Kit to nejspis myslel tak, ze zbytecne posilas 10x insert, kdyz staci jednou.
 

INSERT INTO sales.promotions (
    promotion_name,
    discount,
    start_date,
    expired_date
)
VALUES
    (
        '2019 Summer Promotion',
        0.15,
        '20190601',
        '20190901'
    ),
    (
        '2019 Fall Promotion',
        0.20,
        '20191001',
        '20191101'
    ),
    (
        '2019 Winter Promotion',
        0.25,
        '20191201',
        '20200101'
    );
peter
CSS › Napozicování prvků menu
2. 5. 2019   #383600

https://www.jakpsatweb.cz/css/css-vertikalni-centrovani.html
- tady pouzivaji display:table, table-row, table-cell

na vysku se dava margin-top:-vyska/2; top:50%; height:100px;
na sirku se dava margin:0 auto; width:200px;
dohromady margin:-50px auto 0 auto

Ted je jen otazka, zda ma smysl to delat timto zastaralym zpusobem? V css3 existuje neco jako flexbox, background-position a background-size.

google = css3 horizontal center
https://www.jakpsatweb.cz/…olution.html

peter
PHP › pole a význam k čemu je dobr…
25. 4. 2019   #383558

 Nerozumim otazce

$a = array();
$a[] = array();
$a[0][] = array();
$b = array(array(array()));
$c = array(0 => array( 0=> array()));
$d = array();
$d[0] = array();
$d[0][0] = array();
$d[0][0][0] = 123;
Ale
$e = array();
$e[0] = array();
$e[1] = array();
$e[2] = array();
$e[0][0] = array();
$e[0][1] = array();
$e[1][0] = array();
$e[1][1] = array();
$e[2][0] = array();
$e[2][1] = array();
// tabulka, a totez tady
$f = array(
array(array(), array()),
array(array(), array()),
array(array(), array())
)
peter
CSS › Probllém se zobrazením, resp…
23. 4. 2019   #383539

Do html, body bych vubec nevrtal, nebo min. margin, padding:0. Overflow spis ne. Dalsi vlastnosti nejlepe nastavovat pro nejaky div uvnitr. Kdyz tam zacnes davit divoce css, tak se muze stat, ze nejaky prohlizec ti treba rozhaze float nebo position a jine divoke veci.

html, body - ve starem explorer melo tusim margin. Ve firefoxu padding. Coz bylo desne neprijemne, proto se doporucovalo oboje pro jistotu nulovat a nastavit si vlastni.
html ma nejake specialni vlastnosti. Melo by zastupovat v podstate objekt window. !00% vyska, 100% sirka.
U body by melo mit width 100% z nadrazeneho prvku. To je obvykle prave html. Vyska body zavisi od prohlizece obvykle je podle vysky obsahu, ale tusim nejaky prohlizec dava min-height jako 100% body.
K cemu jsou vazane posuvniky, ted nevim. Nejspis k html. Pokud body vytece.

Takze, asi ten overflow na to html. A kdyby to neslo v nejakem prohlizeci, tak na body. Ale min-width az na div v body. Body nema problem, to by se melo automaticky roztahnout.

peter
MySQL › Normalizace tabulek databáze…
18. 4. 2019   #383504

"K evidence docházky osob - příchodů a odchodů."
Ja bych to resil takto:

person: id_person, data (= nejake dalsi sloupce)
worktime: id_work_time, data
person_worktime: id_pw, id_person, id_work_time
reason: id_reason, data
person_entry: id_pe, id_entry, id_person, data

Nazev tab. bych volil person_ proto, abys vedel, ze to ma nejakou vazbu na persona a je pro tebe nejdulezitejsi ze vsech tech vazeb. A prijde mi to prehlednejsi.

Worktime bych dal zvlast, oddelil od osobnich dat.

U vazebnich tabulech bych urcite nechal nejake id pro mazani radku (DELETE FROM entry WHERE id=123). Dokonce bych ho mozna pojmenoval jenom id, protoze nema jinak vyznam.
person_worktime: id, id_person, id_work_time
person_entry: id, id_entry, id_person, data

peter
CSS › Oprava definice min-height,…
17. 4. 2019   #383495

If the content is smaller than the minimum height, the minimum height will be applied. 

if (content_height<minimum_height) {return minimum_height;}
return content_height;

Cili, text je spravne, ikdyz je trosku krkolomny.

peter
CSS › Nastavení minimalní velikost…
17. 4. 2019   #383494

https://jigsaw.w3.org/css-validator/validator
primy vstupy, copy paste ze tve stranky, 

245 	.article2-text 	Chyba : padding-right pouze 0 může být unit. Musíte vložit jednotku za číslo : 30
288 		Chyba při analýza { {min-width: 320px; }
352 		Chyba při analýza { {min-width: 320px;} 

Pri chybe ti prohlizec muze ignorovat zbytek zavorky nebo vsechny radky, co za chybou mas.

peter
CSS › Nastavení minimalní velikost…
17. 4. 2019   #383493

1) min-width:320px ?
2) html, body {margin:0; padding:0;} ?
3) overflow?

peter
MySQL › Normalizace tabulek databáze…
10. 4. 2019   #383462

Ne, mas to spatne.A nebo nechapes rozdil mezi pojmy tabulka, klic, primarni klic, slozeny klic. To je pak tezke ti vysvetlit, ze to mas spatne.

peter
MySQL › Normalizace tabulek databáze…
9. 4. 2019   #383456

Na Kita bacha, je pekne zaludny! :)

Propojovaci tabulku mas definovanou jako
person_reason (id, #id_person, #id_reason, date & time)
# = Primary KEY

Primary key znamena, ze je to hlavni klic tabulky, unikatni (unique).
Jako primary key si oznacil id_person a id_reason.
Coz je samo o sobe nesmysl, protoze primary key je jediny. Nemuzou byt dva.
A potom je tu Kitova poznamka. Pokud by teda oba klice nebyly primary, ale alespon unique, aby to mohlo fungovat, ze jo. Tak by z toho zapisu plynulo, ze v tabulce smi byt pouze 1 zaznam pro
 id_person=123, id_reason=cislo
 id_person=123, id_reason=jine_cislo - tohle by ti hlasilo chybu DUPLICATE KEY  id_person
a nebo kombinace s tim druhym klicem
 id_person=cislo, id_reason=123
 id_person=jine_cislo, id_reason=123 - tohle by ti hlasilo chybu DUPLICATE KEY  id_reason

Jinymi slovy, ze definice te tabulky je spatne. Ale myslel jsi to dobre :)

peter
MySQL › Normální formy
9. 4. 2019   #383454

KIIV - "pri ladeni vykonu nakonec vypadne neco mezi 1. a 2. NF" - S tim bych nesouhlasil. Souhlasim, ze u mnoha tabulek je problem napsat sql dotaz. Ale urcite spravne napsany dotaz nemuze byt na urovni rychlosti obycejne tabulky. Takovy pripad si neumim realne predstavit. Jedine, pokud je dotaz spatne a nebo mas v tabulce binarni delku id podobnou name, cili, velmi kratka name. A nebo je to prilis aktivni tabulka a ciselnik id je prilis vysoky, cili opet delka id je podobna name. Netvrdim, ze se to nemuze stat, jen se mi to nezda jako bezne potkatelne.

peter
MySQL › Normální formy
5. 4. 2019   #383433

mozna postaci viki
https://cs.wikipedia.org/…%C3%AD_forma

Dostanes od sefa tabulku z excelu s kontakty na pracovniky. Je tam nekolik sloupcu, ve kterych se hodnoty opakuji. Idealnim resenim je, udelat si pro cely takovy sloupec ciselnik, pomocnou tabulku (id, text)
lojza, Navratilova 17, praha
pavel, destova 13, ostrava

3 forma je takova, kdy si udelas ciselnik nad sloupcem mesto. Logicka volba. (a soucasne cokoliv v 1 a 2 forme). Kdyz mas vsechno, co jde, jako ciselnik. V tomto pripade jen to mesto. jmena jsou vicemene unikatni, totez adresy. Ale mesta, ty se nebudou menit, to bude pevny vyber, tabulka, kde, kdyz prejmenujes Zlin na Gottwaldov, tak chces aby se to zmenilo u vsech uzivatelu. Kdezto, kdyz lojza zmeni pohlavi a prejmenujes ho na bedriska, tak chces, aby se to zmenilo jen u nej a ne u vsech lojzu

2 forma, kdyz mas zamestnance treba mas oddelene zvlast v tabulce Ale treba mas i veci, ktere nejsou v tabulce, jako treba prave mesta

1 forma je, ze nemas pomocnou tabulku nad nici, cili holou excelovou tabulku. Kdyz ti tam nekdo udela preklep u par lidi a napise Ostrav misto Ostrava, tak par lidi bude mit udaje spatne. Coz je to, co asi nechces. Chces mit data co nejvice spravne, co to pujde. Ale tahle podoba se treba da pouzit u malych tabulek do 10-100 radku. Kdy nema moc smysl pro sloupce vytvaret dalsi a dalsi minitabulecky.
A take je to podoba, kterou chces dostat na vystupu, kdyz delas export do cvs/excelu.

peter
JavaScript, AJAX, jQuery › pomoc s kratkym kodem
5. 4. 2019   #383432

Js neni c++ ani delphi. Definuje promenne jako pointry. O pamet se stara browser. Cili, delka pole jako treba u c++ nebo Delphi te nemusi zajimat. To si resi nekdo jiny.
// array (0..3) of string
// array (0..3) of integer

var x = [] // prazdne pole
var y = [1, 2, 3] // pole se 3 prvky
y[4] = 987; // y se 4 prvky
y[10] = 123; // y s 11 prvky, protoze ciselne pole se cisluje od 0, browser chybejici doplni s hodnotou tusim undefined
var z = {} // asociativni pole / objekt
z[4] = 123 // z = {4: 123};
z['aaa'] = 123;
z['bbb'] = function() {alert(567)}
z.bbb() // volani funkce
z['bbb']()// volani funkce

function ccc()
{
this.ccc = 123;
this.ddd = function() {alert(456)}
}
var d = new ccc(); // vytvareni jakesi class zalozene na funkci ccc
d.ccc = 267;
d.ddd();
d.eee = 765; // pridani do objektu dalsi promenou
peter
JavaScript, AJAX, jQuery › Pomoc s vysvětlenim kodu jav…
1. 4. 2019   #383397

 Prislo by mi logictejsi udelat tam 2 funkce. Jednu pro vypocet (cc) a druhou pro vyhodnoceni/vypis (vv);

// kod na počítání karet v BJku, nízké karty se počítají za 1 a vysoké karty za -1 
function vv(count)
  {
  if(count>0) {return "Bet!";}
  return "Hold!"
  }

function cc(card){
  switch(card)
    {
    case 2: case 3: case 4: case 5: return 1; break;
    case 10: case "J": case "K": case "Q": case "A": return -1; break;
    default: return 0; break
    }   
  }

var count = 0;
count += cc(2); vv(count); //document.write(vv(count));
count += cc(10); vv(count);
count += cc("K"); vv(count);
count += cc("Q"); vv(count);
count += cc("A"); vv(count);
count += cc("J"); vv(count);
count += cc("K"); console.log(vv(count));
peter
JavaScript, AJAX, jQuery › Pomoc s vysvětlenim kodu jav…
1. 4. 2019   #383396

 kod, ktery mel byt dole zpravy, ale Edge mi ho na tomto forku z nejakeho duvodu dal na zacatek (proto taky chodim treba na https://www.itnetwork.cz/…programovani)

function cc(card){
  var holdbet, count;
  count = 0;
  switch(card)
    {
    case 2: case 3: case 4: case 5: count++; break;
    case 10: case "J": case "K": case "Q": case "A": count--; break;
    // default nic?
    }   
  holdbet = "Hold!";
  if(count>0) {holdbet = "Bet!";}
  return count + " "+ holdbet;  
  }

//count = 0;

shockwave
- pouzivej <? tlacitko editoru pro vlozeni kodu

// kod na počítání karet v BJku, nízké karty se počítají za 1 a vysoké karty za -1 

function cc(card){
  var holdbet;
  switch(card)
    {
    case 2: case 3: case 4: case 5: count++; break;
    case 10: case "J": case "K": case "Q": case "A": count--; break;
    // default nic?
    }   
  holdbet = "Hold!";
  if(count>0) {holdbet = "Bet!";}
  return count + " "+ holdbet;  
  }

var count = 0;
cc(2); cc(10); cc("K"); cc("Q");  cc("A"); cc("J");  
console.log(cc("K")); // tomuto nerozumim

Trochu jsem ti ten kod upravil. Ty case, dokud je nezastavis breakem, tak se chovaji jako
if (card==2 || card==3 || card==4 ...) {count++;}

Pouziti te funkce mas nejak divne. 
Nejdriv je count 0.
cc(2): case 2 count++, count=1, count>1 a vypise se hold --- !!! ono se nic nevypise, protoze return hodnotu nevypisujes (totez skoro vsechny ostatni radky), count + " "+ holdbet
cc(10): case 10: count--, count=0, !(count>1) a vypise se bet
cc(K): case K: count--, count=-1, !(count>1) a vypise se bet
cc(Q): case Q: count--, count=-2, !(count>1) a vypise se bet
cc(A): case A: count--, count=-3, !(count>1) a vypise se bet
cc(J): case J: count--, count=-4, !(count>1) a vypise se bet
console.log(cc("K")) case K: count--, count=-5, !(count>1) a vypise se bet --- !!! vypise se do logu (Firefox - nastroje - nastroje pro vyvojare - konzola (log)

Ok. A proc neni count uvnitr? Netusim. Neznam tu hru a jeji pravidla.
Zalezi na tom, jak to ma fungovat. Ted to funguje tak, ze count je GLOBAL. Pokud pouzijes funkci opakovane, tak na vysledek funkce ma vliv predchozi vysledek. Pokud se to tak chovat nema, staci ti jen vyhodnotit, jestli je karta z jedne sady nebo druhe a v dalsim kroku nezalezi na predchozi karte, pak klidne count muze byt uvnitr.

peter
CSS › Jak mít stejně dlouhé alementy
20. 3. 2019   #383326

Mozna to bude hloupa narazka, ale tvuj kod je jako tvuj dotaz. Ani jedno nechapu.

google = css table layout

https://www.jakpsatweb.cz/css/table-layout.html - tak tam pisou kraviny, misto aby dali priklad.
https://developer.mozilla.org/…table-layout - tam priklady nahore sice jsou, ale pres copy/paste to nezkopirujes, ale mozna jeco z tech dole....
https://www.itnetwork.cz/…esky-manual/ - a to je uplne naprd :)

google = css display table-row

https://css-tricks.com/almanac/properties/d/display/

upravim si toto  

<div style="display: table;">
  <div style="display: table-row;">
    <div style="display: table-cell;">
      Gross but sometimes useful.
    </div>
  </div>
</div>

<div style="display: table;">
  <div style="display: table-row; width:300px;">
    <div style="display: table-cell; width:100px; border:1px solid #f00;">
      Gross but 
    </div>
    <div style="display: table-cell; width:100px; border:1px solid #f00;">
      Gross but sometimes useful.
    </div>
    <div style="display: table-cell; width:100px; border:1px solid #f00;">
      Gross but sometimes 
    </div>
  </div>
</div>

https://jsfiddle.net/xgkju6sq/

Podle mne se to funguje spravne. Pokud samozrejme vis, jak se v html vytvari tabulka, kam prijde tag table, tr, td.
Samozrejme, druha vec je konstrukce s UL, LI. To jsi prvne nerekl a telepatii neumime.
table, tr, td -> div, ul, li


PS. A tohle je ma uplne posl. zprava do tohoto forka. VE FF nejde nic napsat, protoze se nezobrazi google captcha. A v edge se neda nic napsat, protoze nahodile skace ve zprave kurzor, pri psani, pri copy-paste, pri vkladani kodu (tam to tusim skoci na zacatek zpravy a vlozi kod). Snazil jsem se na tento problem upozornit 2 roky v navrzich na vylepseni, zadne reseni neprobehlo….
Ted jsem se pri vytvareni teto zpravy asi 20 min rozciloval. Co by mi jindy zabralo 5 min. I s kodem a vsim… To nemam zapotrebi.
Treba, kdyz drzim page-down, take si to skace, jak chce.
Take se provadi jakysi refresh periodicky s casem, kde si kurzor odskoci.

Ono je to mozna tim, ze mam ve FF zaply adblok a mozna ten parazitni script mi to blokuje, proto to nezlobi. Ale zas to asi blokuje tu captchu. Ale na jinech strankach mi google captcha normalne beha.
Takze si myslim, ze autor tu ma na strance nejaky bordel, virus.

peter
JavaScript, AJAX, jQuery › zmena obrazku v divu
19. 3. 2019   #383321

… je mozne … ?
Ano, je to mozne. 

peter
CSS › Jak mít stejně dlouhé alementy
19. 3. 2019   #383318

Na takovy dotaz se neda prilis odpovedet…
Otazkou je, ceho se snazis docilit a za jakym ucelem?
Pokud ti jde jen o podbarveni, tak je mozne to zkratka obalit divem.
Pokud to floatujes, pak je nutne spravne pouzit clear nebo display:inline-block. Cili, neumis floatovat, normalni clovek se mu tedy vyhyba.
A ostatni se da resit googlem

- html table, tr, td
- css display:table, table-row, table-cell + google
- css flex layout
- css height
- js height

peter
JavaScript, AJAX, jQuery › Jak vypisovat hodnoty s text…
13. 3. 2019   #383286

a kod z toho druheho js pro pouziti (cb je navratova funkce)
 view-source:https://webapp.fpf.slu.cz/…b_stranky.js


OS.func.download = function (url, cb)
	{
//alert(url);
	READER.opt.cbEnd = cb;
	READER.func.fileFromUrl(url);
	};
//---

OS.func.download(url, OS.editorHtml.func.contentWrite);


peter
JavaScript, AJAX, jQuery › Jak vypisovat hodnoty s text…
13. 3. 2019   #383285

1. https://webapp.fpf.slu.cz/osob_stranky/test
2. Uplne posl. text dole na strance je 'Edit'. Na to klinkni
3. klikni posl. tlacitko Edit layout, ktere se objevilo a odroluj nahoru, tam by mel zobrazi sablonu.
Pokud se tak nestane, tak zkus ty ostatni tlacitka a pak 'Close' ten editor a znovu bod 2, 3. Mozna je tam nejaka chyba, uz jsem to dal nevyvijet.
Kazdopadnem muzes zkouknout html kod a dole je link na js kod…
view-source:https://webapp.fpf.slu.cz/…le-reader.js

peter
JavaScript, AJAX, jQuery › Jak vypisovat hodnoty s text…
13. 3. 2019   #383277

ty ostatni tam nejdou, protoze tam mam spatne cesty, prizpusobene pro lokalni testovani.

peter
JavaScript, AJAX, jQuery › Jak vypisovat hodnoty s text…
13. 3. 2019   #383276

https://webapp.fpf.slu.cz/osob_stranky/test
Edit dole, edit layout, to nacita ze souboru. Muzes si zkopirovat kod nebo najit podobny pomoci googlu.

peter
PHP › php5.4, php5.3
13. 3. 2019   #383275

#3 nord
Kit vetsinou radi dobre. Cokoliv jineho ti zkomplikuje problem a budes se muset k tomu vracet znovu a znovu.

Druha spravna moznost je opravit kod. Zapnout si error_reporting() v php kodu a pres .htaccess (nebo v nastaveni php.ini htconf, tusim). A opravovat chybu po chybe.

Treti moznost je pomenit nastaveni tak, aby kod fungoval. Nebo nainstalovat stare derave php. Coz je spatne reseni. Dlouhodobe neudrzitelne. Dneska uz je spoustu IT lidi, kteri vi, co delaji a neboji se hackovat I kdejaky zasity sw, o kterem vi treba jen desitky lidi.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý