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
PHP › Integrace php codu - socialn…
18. 7. 2022   #390237

A take by mozna bylo dobre, kdyby sis html kod stranky z prohlizece zkontroloval pres validator. Mozna to pomuze vyresit nejake problemy.

peter
PHP › Integrace php codu - socialn…
18. 7. 2022   #390236

   

<?php

// $a, b, c apod, si prepis, jak chces
$a = __d('Líbí se vám film ? Sdílejte ho vás to nic nestojí a nám to pomùže. ');
$b = "<span id='playernotice' data-text='{$views}'>{$views}</span>";
$c = '';
if (dooplay_get_option('report_form') == true)
//  $c = "<a rel="nofollow" href='#' class='report-video-error'>".__d('Report Error')."</a>"; // tady mas chybne uvozovky a kvuli tomu ti nemusi zadne php fungovat!!!
    $c = "<a rel='nofollow' href='#' class='report-video-error'>".__d('Report Error')."</a>";
$d = '';
if ($trailer != false)
    {
    $e = '';
    if ($source_name == true)
        $e = "<span class='server'>youtube.com</span>";
    $d = "
        <li id='player-option-trailer' class='dooplay_player_option' data-post='{$post}' data-type='{$type}' data-nume='trailer'>
            <i class='fas fa-play-circle'></i>
            <span class='title'>".__d('Watch trailer')."</span>
            <span class='flag'></span>
            <span class='loader'></span>
            $e
            <span class='flag'></span>
            <span class='loader'></span>
        </li>
";
    }


$html .= "
</div> <!-- tady mas /div navic -->
<h2>$a $b $c</h2>
<div id='playeroptions' class='{$ulclass}'>
    <ul id='playeroptionsul' class='{$set_mode}'>
        $d
    </ul> <!-- tady ti schazi /ul -->
</div> <!-- tady ti schazi /div -->
";

Ja si treba nejsem vubec jisty tim, zda ty if u traileru jsou spravne ozavorkovane, treba. A taky, ten spatny apostrof muze mit za nasledek nefunkcni kod.

peter
PHP › Integrace php codu - socialn…
18. 7. 2022   #390235

Na mne musis pomalu, ja jsem amater. Takze jinak. Na strance mas nejake texty. Nejaky text ze stranky chces smazat a misto nej dat jiny. Tak, a ted je pro mne podstatne, cim se ktery text vykresluje? V tom kodu, co sem poslal ja, je to zcela jasne. V kodu, ktery jsi poslal ty, to tak jasne uplne neni. Takze ten tvuj kod teda prepisu a reknes mi, zda se to zobrazilo uplne stejne nebo ne. Pac v tom tvem se moc neorientuji. A hlavne je plny chyb, napriklad, kdybys smazal radky... , tak je to lepsi 

if(dooplay_get_option('report_form') == true)
$html .="<a rel="nofollow" href='#' class='report-video-error'>".__d('Report Error')."</a>";
peter
PHP › file_get_contents
1. 10. 2020   #386714

https://www.codexworld.com/how-to/check-if-remote-file-exists-url-php/

peter
PHP › file_get_contents
1. 10. 2020   #386713

Existuji linuxove a win funkce, ktere jsou asi 100x rychlejsi. Ty bys musel volat asi pres exec(). Bohuzel si nevybavim nazvy, co jsem pouzival. A vetsinu z nich admine blokuji, protoze hromadne prochazeni adresaru se da povazovat za hackersky utok.

Zkus si dat do
google: php detect file on remote server
google: detect file on remote server linux
php: curl_init, ftp_nlist, fopen
linux: ping, tracert, bash/wget (a ten jeden si nevzpomenu, ale delal presne, co chces)

function validate_url(){
  if [[ `wget -S --spider $1  2>&1 | grep 'HTTP/1.1 200 OK'` ]]; then
    return 0
  else
    return 1
  fi
}
peter
PHP › file_get_contents
30. 9. 2020   #386706

Co jsi nasel googlem? Zkousel jsi hledat?
google = php check exist url file 

$file = 'http://www.example.com/somefile.jpg';
$file_headers = @get_headers($file);
if(!$file_headers || $file_headers[0] == 'HTTP/1.1 404 Not Found') {
    $exists = false;
}
else {
    $exists = true;
}
function url_exists($url) {
    return curl_init($url) !== false;
}
peter
PHP › Data se nenacitaji do db
30. 9. 2020   #386701

Zkousel jsi google? Najit podobny priklad, treba? Nebo si vygooglovat priklady na jednotlive pouzite funkce? Nebo muzes cekat 2-60 dni nez ti nekdo odpovi na forku :) U sql to asi nebude tak dlouho, ale obecne jo.

google = php mysqli bind_param
1. https://www.php.net/…ram.php ;

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

Ano, je mozne nabindovat vic parametru naraz. Ja to takhle nikdy nepouzival, takze jsem se musel mrknout na net.

2. vpravo v seznamu na php.net, execute 

/* Execute the statement */
$stmt->execute();

/* Execute the statement */
mysqli_stmt_execute($stmt);

Tve reseni, funkce execute, bez zavorek, jsem nevidel v dokumentaci pouzit. Ale nevylucuji, ze by to mohlo fungovat. new class je take mozne zapsat bez zavorek. Nicmene, zkus to se zavorkami.
google = php mysqli execute - nenasel jsem narychlo nic bez zavorek

3. Zkus si tam pridat uplne nahore zapnuti error_reporting

4. php.net / affected_rows 

    printf("rows inserted: %d\n", $stmt->affected_rows);

mysqli nepouzivam, tez jsem si to vygoogloval a existuje to, ok.

5.  

echo "</br>" - tvuj zapis jsem nikde nenasel

https://www.jakpsatweb.cz/html/bloky.html#br
google = html br
<br> - html4, html5
<br /> is preferred xhtml (html5, xml, ML, SGML)
       Can also use <br/> or <br></br>
<br></br> is not valid in HTML 5

6.

$dotaz = "INSERT INTO db VALUES (?, ?, ?)"; 

Tohle je samo o sobe pomerne pochybne. Databaze je neco jako slozka souboru. V databazi mas tabulky. Tabulky si predstav jako tabulky v excelu.
a) Pochybne je na tom to, proc by nekdo pojmenovaval tabulku 'db'? db je zkratka pro databazi.
b) doporucuji pouzivat 5 znaku pro nazvy tabulek a min 3 pro nazvy promennych v php nebo sloupcu.
c) doporucuji pouzivat nazvy, ktere odpovidaji tomu, co v tabulce, sloupci, php promenne je. $a pro stmp je spatne. Idealne je dobre se drzet zapisu podle dokumentace, protoze, pak se bude snadneji hledat chyba. Ale ne vzdy je to tam ok, nekdy je lepsi se inspirovat priklady nalezennymi googlem.

peter
MS SQL › Import co nejrychleji
21. 9. 2020   #386654

8000 řádků/s
To zalezi na db a jakym zpusobem to tam soukas. Mne u php/mysql 100.000 radku trva 3s pomoci primych sql prikazu, kdy ty prikazy jsou spravne. Maximalne se muze stat, ze jsou tam duplicity v klicich a odmitne takove radky vlozit. Ty tam vyuzivas nejaky engine, co kontroluje kazde policko zvlast, to samozrejme muze nejaky cas trvat. Jo, kdyby ti ten engine vyrobil sql prikazy, tak ti potom taky bude import svistet. Ale takhle mas lepsi kontrolu nad daty.

peter
PHP › Je bezpečné uchovávat heslo…
17. 9. 2020   #386635

   

<?php
return array(
	'host'  => 'localhost',
	'user'  => 'root',
	'psw'   => '',
	'db'    => 'kontakty',
	'tbl_pref' => 'k_'	// table prefix
	);
?>

Takze to musi byt takhle, aby to slo includovat jako $sqlConfig = include '../config/sql-root.php';
 

peter
PHP › Je bezpečné uchovávat heslo…
17. 9. 2020   #386634

A je takovy zpusob bezpecny? Vis, protoze s tim include ukladas do souboru text 

array(
	'host'  => 'localhost',
	'user'  => 'root',
	'psw'   => '',
	'db'    => 'kontakty',
	'tbl_pref' => 'k_',	// table prefix
	);

A pokud nekdo zhodi php, tak ti server zobrazi plain-text / php source-code, pokud je tak nastaveny. Ale to je mozna ok, protoze kdyz zobrazi i jiny php kod, tak je to spatne nastaveny server, opravneni do slozky a k souboru s configem. A tim padem by to bylo uplne jedno. Hlavne tomu treba dat aspon priponu php. Nicmene, porad je to include a kdyz tam nemas php tagy? Ale zkusim to, libi se mi to vic nez to me reseni. Jen se mi nechtelo tehdy premyslet nad jinymi moznsotmi, potreboval jsem resit kod programu.

peter
PHP › Je bezpečné uchovávat heslo…
14. 9. 2020   #386617

A soucasne jeste delam to, ze udelam unset($sql). A v konstruktoru pro class-driveru mam prevzeti udaju. A hned dalsim prikazem je unsetnu i z $config. Takze bude muset hacker do class driveru, aby je vypsal A i tam je po nalogovani casto unsetnu. Jakoze nestaci pres php vypsat var_dump($config) a mas vse, co spravny hacker potrebuje :)

peter
PHP › Je bezpečné uchovávat heslo…
14. 9. 2020   #386616

To je obecne komplikovany problem. Par let nad tim premyslim, ukladam to ruzne.
1. config.php - nevyhodou je proflaknuty nazev, kam se hackeri zameri
2. slozka cfg/ ktera ma zvysena zabezpeceni proti php uzivatelum, ftp uzivatelum a je mimo program. Nevyhodou je, ze pri kopirovani programu na ni zapomenes
3. samostatne minisoubory pro ruzne prihlasovaci udaje, sql zvlast, ldap zvlast a pod. Do nejakeho configu pak odkazes na soubor a cestu k nemu. Tu cestu mas zabezpecenou. Vyhoda je, ze ziskas presne ty udaje, co chces a nemas jeden velky soubor s prihlasovacimi udaji. A nemas v configu zadne udaje, pouze pristupne pres php. Takze, kdyz kopirujes program, tak s nim nekopirujes i prihlasovani. O tom ted premyslim. A tez se to dobre verzuje. Ale je dobre pridat ukazku, jaka data z tech souboru ziskas.
 

--- config.php ---
$config = array();
require_once '../config/sql-root.php';  //$sql = array('user'=>'root' ...)
$config['sql'] = $sql;
peter
MySQL › Jak na tento select?
20. 8. 2020   #386482

   


    Titanic               | historický
    Machři               | komedie;rodinný
    Indiana Jones    | dobrodružný
    Harry potter       | fantasy;mysteriozni

SELECT 
    nazev_filmu,
    GROUP_CONCAT(nazev_zanru)
FROM 
    zanry 
    LEFT join filmy ...
GROUP BY (id_film)

Spravnou syntaxy si dohledas v dokumentaci nebo googlem.
Bez grupu ti to vypise tabulku zanz + film a chces ty skupiny vytvorip pro stejne filmy.

peter
PHP › Parsování php souboru
19. 8. 2020   #386470

A jeste priklad hledani v manualu... Take nic sloziteho, jako u googlu :)
php.net/file
php.net/file_get_contents
php.net/explode
php.net/echo
 

peter
PHP › Parsování php souboru
19. 8. 2020   #386469

   

$file = '123.txt';
$str = file_get_contents($file);
$row_list = explode("\n", $str);
echo $row_list[6];
echo $row_list[7];
echo $row_list[8];

Co jsi nasel v online manualu nebo google?
google = php read show text file

peter
.NET › návrh třídy
18. 8. 2020   #386464

- take se znazim kod delat na 1-2 obrazovku, protoze se snadneji dohledava chyba, zapomenuta zavorka a pod., ale mam i delsi kody, kdyz je potreba
- konstruktor se snazim omezit na prevzeti parametru, ale nekdy je parsuji a nekdy volam dalsi metodu
- pro zpracovani souboru pouzivam vzdy metodu
- Do konstruktoru, vetsinou jako parametr davam app, a jedna z metod je errorAdd, ktera spousti  app-> errorAdd a pridava tam jmeno class a jmeno funkce, kde ta chyba vznikla (v php) a casto potrebuji i cislo radku, protoze php nedokaze zobrazit pro sql chybu takovou tu tabulku, ze kterych funkci to vzeslo. Takze, ja mam sice nejakou metodu sql->query, ale nejsem schopen dohledat, ve ktere class jsem ji volal :) Vyhodou vlastni errorAdd je, ze pak tu metodu muzu prepsat, snadno, a presmerovat jinam, kdyz treba tu class budu pouzivat bez hlavni app a vsechnude v class uz nebude treba opravovat volani, ted tam mam  $this->errorAdd, ale ve starsich pouzivam jeste $this->APP->errorAdd. Takze tu class pak nemuzes pouzit bez APP
- casto predavam do konstruktoru pro soubory link na CFG['upload'], kde je parametr ['path'], kde mam ulozenou cestu pro nahravani souboru
- a tez pro bezne class v php predavam odkaz na WS class (web-services) nebo SQL a LDAP class. WS je v podstate kod propojujici vyhledavani pomoci sql, ldap a jinych sluzeb a je mozne generovat vystup jako text, php variable, json, xml a jine jednoduche metody. A navic to umi preformatovat parametry z url na volani nektere sluzby. Proste to strasne zjednodusuje vypisy dat a exporty pro ruzne systemy. A neni to slozite si udelat takovou class.
- tez je dobre dodrzet nejaky standard pojmenovani metod. preba sql pouziva
sql: insert, update, delete, replace, select; connect, disconnect;
sockety: open, close, send, receive, connect, disconnect
ldap: ma jeste dalsi ruzna pojmenovani...
file: fopen, fclose, file_get_content, file_put_content (php)
lidi tady zminuji: load :)
A clovek zacne premyslet, proc nepouzili jednotne nazvy, aby si clovek nemusel pamatovat 10.000 pojmenovani, kdyz to vicemene dela totiz :)

peter
Návrhy na vylepšení › Nejde mi vytvářet vlákna v M…
14. 8. 2020   #386440

Zkus se podivat, zda nemas zapnuty adblock. Tady mi to vetsinou nefunguje vubec. A v jinem programu mi obcas zablokuje funkci, treba pro jeden adresar a jinde to jde. tam jsem mu nastavil whitelist. Ale tady to delat nebudu.

Tady odesilam prispevky tak, ze je nejdriv napisi, pak vyskrtnu adblock, kliknu odeslat, vyplnim captcha, kliknu znova odeslat a odeslou se. Vyhoda je, ze mne otravuje reklama jen pri odesilani.

Na serialy.sk nebo, jak se to ted jmenuje, to zas delam tak, ze rozklikam dil, vypnu adblock, dam f5, chvili pockam a rychle adblock zas zapinam. Pak je tam treba odklikat 3 reklamy. A ted se muze stat, ze to udelas prilis rychle nebo to z najakeho duvodu selze. Tak se to da obcas zachranit kliknutim na jiny zdroj videa, pokud je tam vice a pak zas zpet. jinak je nutne cely zpusob zopakovat nebo si hrat s vyplym adblockem. Ale pri klikani na reklamy se ti pak oteviraji otravna nova okna. A ted tam prisli s novou fintou, film page ti otevrou v jinem okna a to puvodne presmeruji na reklamu :) To to jim obcas taky drhne, adblock a firefox to blokuji. Nebo se da mozna js script zastavit i pres Esc, jako nacitani stranky.

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.

 

 

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