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

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

 

Příspěvky odeslané z IP adresy 2001:718:2601:26c:88a3:dc...–

peter
PHP › Call to undefined method..
15. 2. 2016   #208631

Muzes zkusit rozchodit tohle
 

<?php
@ini_set('error_reporting', E_ALL);
@ini_set("display_errors", "on"); 
error_reporting(E_ALL);

$CFG = array(
	'debug' => true,
	'host'  => 'localhost',
	'user'  => 'root',
	'psw'   => '',
	'db'    => 'test'
	);

function getRequest ($name, $default='')
	{
	return isset($_POST[$name]) ? $_POST[$name] : (isset($_GET[$name]) ? $_GET[$name] : $default);
	}

function sql($query)
	{
	global $CFG;
	global $conn;
	$result = mysql_query($query,$conn);
	if (!$result && $CFG['debug'])
		{echo die('Chyba mysql_query. ' . mysql_error());}
	return $result;
	}




$conn = mysql_connect($CFG['host'],$CFG['user'],$CFG['psw'])  or die ('Chyba mysql_connect. '   . mysql_error());
$db   = mysql_select_db($CFG['db']) or die ('Chyba mysql_select_db. ' . mysql_error());
sql("SET NAMES utf8");

$data  = array();
$where = array();
$do    = getRequest('do');
switch ($do)
	{
	case 1:	// insert uzivatele
		$data['name'] = getRequest('name');				//  - nacist data
		foreach ($data as $key=>$value)					//  - upravit data pro query
			{$data[$key] = mysql_real_escape_string($value);}
		$query  = "INSERT INTO `x_users` (`%s`) VALUES ('%s')";
		$query  = sprintf($query,implode("`,`",array_keys($data)),implode("','",$data));
		echo "<br/>".$query;
		$result = sql($query);
		break;
	case 2:	// insert do mesice
		$data['iduser'] = getRequest('iduser');				//  - nacist data
		$data['month']  = getRequest('month');				//  - nacist data
		foreach ($data as $key=>$value)					//  - upravit data pro query
			{$data[$key] = mysql_real_escape_string($value);}
		$query  = "INSERT INTO `x_months` (`%s`) VALUES ('%s')";
		$query  = sprintf($query,implode("`,`",array_keys($data)),implode("','",$data));
		echo "<br/>".$query;
		$result = sql($query);
		break;
	case 3:	// delete uzivatele z mesice
		$where['iduser'] = getRequest('iduser');			//  - nacist where
		$where['month']  = getRequest('month');				//  - nacist where
		foreach ($where as $key=>$value)				//  - upravit where pro query
			{$where[$key] = "`".$key."`='".mysql_real_escape_string($value)."'";}
		$query  = "DELETE FROM `x_months` WHERE %s";
		$query  = sprintf($query,implode(" AND ",$where));
		echo "<br/>".$query;
		$result = sql($query);
		break;
	case 4: // select uzivatelu
		$query  = "SELECT CONCAT(`name`,' (id=',`iduser`,')') AS `name` FROM `x_users`";
		echo "<br/>".$query;
		$result = sql($query);
		$list   = '';
		if ($result)
			{
			$list = array();
			while (($row = mysql_fetch_assoc($result))!==false)
				{
				$list[] = $row['name'];
				}
			}
		$list = "\n<p>Seznam uzivatelu</p>\n<p>".implode("<br/>",$list)."</p><hr/>";
		echo $list;
		break;
	case 5: // select uzivatelu z mesice
		$where['month'] = getRequest('month');				//  - nacist where
		$month  = $where['month'];
		foreach ($where as $key=>$value)				//  - upravit where pro query
			{$where[$key] = "`".$key."`='".mysql_real_escape_string($value)."'";}
		$query  = "SELECT CONCAT(`b`.`name`,' (id=',`b`.`iduser`,')') AS `name` FROM `x_months` `a` LEFT JOIN `x_users` `b` ON `b`.`iduser`=`a`.`iduser` WHERE %s";
		$query  = sprintf($query,implode(" AND ",$where));
		echo "<br/>".$query;
		$result = sql($query);
		$list   = '';
		if ($result)
			{
			$list = array();
			while (($row = mysql_fetch_assoc($result))!==false)
				{
				$list[] = $row['name'];
				}
			}
		$list = "\n<p>Seznam zapsanych v mesici \"".$month."\"</p>\n<p>".implode("<br/>",$list)."</p><hr/>";
		echo $list;
		break;
	case 6:	// update uzivatele
		$data['name']    = getRequest('name');				//  - nacist data
		foreach ($data as $key=>$value)					//  - upravit data pro query
			{$data[$key] = "`".$key."`='".mysql_real_escape_string($value)."'";}
		$where['iduser'] = getRequest('iduser');			//  - nacist where
		foreach ($where as $key=>$value)				//  - upravit where pro query
			{$where[$key] = "`".$key."`='".mysql_real_escape_string($value)."'";}
		$query  = "UPDATE `x_users` SET %s WHERE %s";
		$query  = sprintf($query,implode("','",$data),implode("','",$where));
		echo "<br/>".$query;
		$result = sql($query);
		break;
	case 7: // select mesicu uzivatele
		$where['iduser'] = getRequest('iduser');				//  - nacist where
		$iduser = $where['iduser'];
		foreach ($where as $key=>$value)					//  - upravit where pro query
			{$where[$key] = "`".$key."`='".mysql_real_escape_string($value)."'";}
		$query  = "SELECT `month` FROM `x_months` WHERE %s";
		$query  = sprintf($query,implode(" AND ",$where));
		echo "<br/>".$query;
		$result = sql($query);
		$list   = '';
		if ($result)
			{
			$list = array();
			while (($row = mysql_fetch_assoc($result))!==false)
				{
				$list[] = $row['month'];
				}
			}
		$list = "\n<p>Seznam mesicu zapsanych uzivatelem s id = \"".$iduser."\"</p>\n<p>".implode("<br/>",$list)."</p><hr/>";
		echo $list;
		break;
	case 8: // vypis celou tabulku
		$name   = getRequest('table');				//  - nacist where
		$query  = "SELECT * FROM `".$name."`";
		$result = sql($query);
		if ($result)
			{
			$tbody  = '';
			$thead  = '';
			while (($row = mysql_fetch_assoc($result))!==false)
				{
				$tr = '';
				foreach ($row as $key=>$value)
					{
					$tr .= sprintf("\n<td>%s</td>",$value);
					}
				$tbody .= sprintf("\n<tr>%s</tr>",$tr);
				if ($thead=='')
					{
					$tr = '';
					foreach ($row as $key=>$value)
						{
						$tr .= sprintf("\n<th>%s</th>",$key);
						}
					$thead .= sprintf("\n<tr>%s</tr>",$tr);
					}
				}
			if ($tbody!=='')
				{
				echo sprintf("\n<table border=\"1\">\n<thead>%s</thead>\n<tbody>%s</tbody></table>",$thead,$tbody);
				}
			else	{
				echo "<p>Nula zaznamu</p>";
				}

			}
		break;
	default: break;
	}
/*
--- mysql_priklad.sql ---
CREATE TABLE `x_users` (
  `iduser`  int(10) unsigned NOT NULL auto_increment,
  `name`    varchar(40) default NULL,
  PRIMARY KEY  (`iduser`),
  INDEX `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

CREATE TABLE `x_months` (
  `idmonth` int(10) unsigned NOT NULL auto_increment,
  `month`   int(10) unsigned default NULL,
  `iduser`  int(10) unsigned default NULL,
  PRIMARY KEY  (`idmonth`),
  INDEX `iduser` (`iduser`),
  INDEX `month` (`month`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
*/

?>
<p>Prikazy</p>
<ul>
<li><a href="?do=1&name=Lojza">Pridej noveho Lojzu do tabulky uzivatele</a> (INSERT)</li>
<li><a href="?do=6&iduser=4&name=Tomas">Zmen uzivateli s id = 4 jmeno na Tomas</a> (UPDATE)</li>
<li><a href="?do=2&iduser=1&month=5">Pridej uzivatele s id = 1 do tabulky mesice pod mesic = 5</a> (INSERT)</li>
<li><a href="?do=2&iduser=2&month=5">Pridej uzivatele s id = 2 do tabulky mesice pod mesic = 5</a> (INSERT)</li>
<li><a href="?do=2&iduser=3&month=5">Pridej uzivatele s id = 3 do tabulky mesice pod mesic = 5</a> (INSERT)</li>
<li><a href="?do=2&iduser=1&month=7">Pridej uzivatele s id = 1 do tabulky mesice pod mesic = 7</a> (INSERT)</li>
<li><a href="?do=2&iduser=2&month=7">Pridej uzivatele s id = 2 do tabulky mesice pod mesic = 7</a> (INSERT)</li>
<li><a href="?do=3&iduser=2&month=5">Smaz uzivatele s id = 2 z tabulky mesice pod mesice = 5</a> (DELETE)</li>
<li><a href="?do=5&month=5">Zobraz seznam lidi v mesici = 5</a> (SELECT)</li>
<li><a href="?do=5&month=7">Zobraz seznam lidi v mesici = 7</a> (SELECT)</li>
<li><a href="?do=7&iduser=2">Zobraz seznam zapsanych mesicu uzivatele s id = 2</a> (SELECT)</li>
<li><a href="?do=4&month=7">Zobraz seznam lidi</a> (SELECT)</li>
<li><a href="?do=8&table=x_users">Zobraz tabulku uzivatele</a> (SELECT)</li>
<li><a href="?do=8&table=x_months">Zobraz tabulku lide v mesici</a> (SELECT)</li>

</ul>
peter
PHP › Call to undefined method..
15. 2. 2016   #208630

Tak. Mohl bych ti vasnive rozepsat, kolik prablemu jsem tam nasel. Zkusim to strucne.
1. Nemas tam error_reporting
2. Kdyz mam prazdnou databazi, tak to zobrazi server-error chybu.
3. Nemas tam sloupec id s unikatni hodnotou. Ten "id" si prejmenuj na  "date" a pridej novy sloupec "id" a nastav mu AUTOINCREMENT.
4. Do tabulky se vklada prikazem INSERT. Kdyz jsem prohledal vsechny soubory a hledal INSERT, tak je
v ciridata.php
"INSERT INTO page SET id = %s, name = %s, title = %s, page_order = %s",
- prvni vec, co si vsimne i oko nezkuseneho badatele je, ze si stezujes, ze ti neuklada content a pritom ten prikaz zadny sloupec content neobsahuje, ze?
- druha vec, co si vsimne i oko zkuseneho badatele, kde vsude se vyskytuje $_POST? ciri_admin.php
Kde vsude bude $_POST['obsah']?
            $aktualniStranka->setTitulek($_POST["titulek"]);
Takze data, ktera se maji zapsat, jsou, mozna v $aktualniStranka. Jenze hned potom provedes presmerovani header(), celou tu promennou zahodis :)

Mno, cele je to dive :) Takze se vrat k uplnym zacatkum.
1.
ALTER TABLE page DROP PRIMARY KEY;
ALTER TABLE `page` CHANGE `id` `date` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL;
ALTER TABLE `page` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
2. Jaky je prikaz pro vlozeni do db?
INSERT INTO page SET name = '%s', title = '%s', page_order = '%s', content = '%s', date = '%s'
Tohle, kdyz spustis v phpmyadminovi, tak ti to tam vlozi same %s. A jsou tam, az na order, ktery je cislo 0. To je zaklad, sql prikaz je ok. ty apostrofy si pro sprintf zrusis. (id se tam neuvadi, protoze je AUTOINCREMENT)
INSERT INTO page SET name = %s, title = %s, page_order = %s, content = %s, date = %s
3. Jaka data tam ukladas? Z $_POST? Jak je do toho sql prikazu davas? sprintf? ja bych ocekaval neco jako

<?php
$notice = array();

if (isset($_POST['sql']) && $_POST['sql']=='insert')
{
$keys = array('aaa','bbb');
$row  = array();
$bool = true;
foreach($keys as $key)
	{
	if ((!isset($_POST[$key])) || $_POST[$key]=='') {$bool = false; break;}
	$row[$key] = $_POST[$key];
	}
if ($bool)
	{
	$sql = sprintf(
	    "INSERT INTO page SET aaa = %s, bbb = %s, ccc = %s, ddd = %s"
	    , toSql($row['aaa'])
	    , toSql($row['bbb'])
	    , toSql(0)
	    , toSql(time())
	    );
        doSql($sql);
	$notice[] = "ulozeno";
	}
}

echo implode('<br>',$notice);
?>

<form method="post">
<input type=hidden name="sql" value="insert">
<input name=aaa>
<input name=bbb>
<input type=submit>
</form>
peter
HTML / XHTML › začínám HTML/CSS
15. 2. 2016   #208626

https://www.google.cz/search?q=jakpsatweb+starsi+prohlizece
Přibližný počet výsledků: 6 100

"text-align bylo nutné používat pro Internet Explorer verze 5.0"
99.99% nema pocitac s IE 5.0

Konkretne mluvim o 6000 strankach. Proc se ptas? :)

peter
PHP › Call to undefined method..
15. 2. 2016   #208625

Kit - Vim o tom, prehlizim, neresim. Ma to slozite, ale funkcni.

majkeeone - udelej jednoduchou jedno-stranku a dej sem kod (vcetne prihlaseni do db, udaje tam zmen treba na abd / def). Idealne pripoj i strukturu tabulky. Proste, kdyz to budeme chtit testovat, aby jsme s tim meli co nejmene prace na dopisovani.
Odhadem hadam, ze bud v $obsah neni nic. A pak je to selhani na tve strane v php a nebo na tve strane v javascriptu. U tinyMCE je treba js nastaveni rici, na ktere policko se to propojuje. Treba jsi to nastaveni nemenil. Tiny si vytvori tedy vlastni policko a do obsah nic neda.

peter
PHP › Jak nejlépe stavět šablony?
15. 2. 2016   #208620

Jo takhle, takze ti klasicke preg_replace nebo .$prom. nestaci. Tak zkus preg_match_callback na sablonu. tam se muzes zeptat na
isset($data[$matches[0]]) ? $data[$matches[0]] : '';

peter
PHP › Vytvorenie unikatneho url sl…
15. 2. 2016   #208619

SELECT nadpis FROM clanky WHERE nadpis LIKE "topanky%" ORDER BY nadpis DESC LIMIT 1
Vyber vsechny nadpisy, ktere obsahuji na zacatku slovo "topanky", serad je podle velikosti opacne, vyber jen prvni radek. A ted bys z toho musel extrahovat to cislo.
Ale proste tahle cesta je nespolehliva. Co kdyz budes mit vic zbozi s podobnym nazvem?
topanky adidas-1
topanky puma-2
topanky adidas-3
 

peter
PHP › Vytvorenie unikatneho url sl…
15. 2. 2016   #208618

marioff

Obvykla struktura tabulky byva
clanky: id_clanek, nadpis, text, autor, dalsi sloupce
Sloupec id_clanek byva typu AUTOINCREMENT.
Pokud to mas jinak, tak doporucuji tam to id dat. Pouzijes ho pak pro spoustu veci, treba pro UPDATE a DELETE operace s clankym. 

SELECT (id_clanek, nadpis, text, autor) FROM clanky
INSERT INTO (nadpis,text) VALUES ('aaa','bbb') // tady id neuvadis, on si ho sam vytvori
UPDATE nadpis, text FROM clanky WHERE id_clanek=123
DELETE FROM clanky WHERE id_clanek=123

Pripadne se da pouzit zobrazeni konkretnich clanku
SELECT (id_clanek, nadpis, text, autor) FROM clanky WHERE id_clanek IN (3,67,438)

topanky-1
topanky-2
z toho selectu pak dostanes jako  

$row['nadpis'].'-'.$row['id_clanek']

Jen to teda bude spis
topanky-13
topanky-563

Vyhoda ciselneho sloupce je rychlejsi vyhledavani. 32.000 redku je integer 2 byty! "topanky" je 7 bytu. Pro srovnani, zamek na kolo ma 3 kolecka. Projit vsechny kombinace zabere asi 5-10 min. Je to 999 moznosti (pripadne + mezipolohy). Kdyby tam bylo jedno kolecko, tak to mas za chvilku, ne?

Druha moznost je, vest si specialni tabulku pro kategorie a ukladat si tam posledni vlozene cislo a pri insertu ho navysit a ulozit k clanku. Takze stejne musis k clanku pridat sloupec :)
topany 5
lyze 0
kluce 2

Treti moznost je, zjistit si SELECTem vsechny polozky ve stejne kategorii a pridat tu, ktera chybi. Treba mas topanky-1,2,4,5 , tak doplnis trojku. Nebo si zjistis, ktere jsou posledni. Aby byl dotaz jednodussi, tak stejne musis pridat sloupec cislo. Toto reseni mi prijde proti pomocne tabulce jako databazove slozitejsi.
Samozrejme by to slo i bez sloupce, spravnym reg. vyrazem, ale ty jsou obvykle pomale pri 1000 polozkach a vic.

Kdyz to shrnes, tak kazde z tech 3 reseni zahrnuje tak, ci tak, pridat sloupec.

peter
HTML / XHTML › začínám HTML/CSS
15. 2. 2016   #208617

Hele, tak jakpsatweb opatrne, tam jsou hodne zastarale informace, obcas. U w-school opatrne, tam jsou zas nepresne informace a obcas chybky :) Neuc se HTML bez CSS. Html parametry se casto prave nepouzivaji, misto toho se pouziva css pro vzhled. Z html se pouzije jen nazev tagu, obvykle.

Mezi dalsimi odkazy muzes pouzit toto:
CZ
http://www.fce.vutbr.cz/…kuvka.m/0u2/
http://www.fce.vutbr.cz/…tml/uvod.htm (vlavo HTML, nahore vpravo Úvod)
http://www.webtvorba.cz/
EN
http://www.htmlite.com/HTMintro.php
https://www.w3.org/…-HTML-TECHS/
http://www-archive.mozilla.org/…ntities.html

Jinak, skutecne moznosti HTML / CSS lze zjistit jen a pouze na strankach daneho prohlizece. Kazdy prohlizec muze podporovat ruzne vlastnosti a chovani. Zakladni maji spolecne, ale ty specialitky se pak lisi.
https://msdn.microsoft.com/…s.85%29.aspx (HTML/XHTML Reference Elements)
https://developer.mozilla.org/…HTML/Element

peter
PHP › Call to undefined method..
15. 2. 2016   #208616

Vypsat promenne se daji pres
var_dump($x); exit; nebo
print_r($x); exit;
ecoh "x = ". $x; exit;
a doporucuji za vypisem kod ukoncit, pokud nepotrebujes toho vypsat vic. U echa je dobre napsat i kratky text, abys videl, ze i prazdnem obsahu se vypise aspon "x = ".

peter
PHP › Call to undefined method..
15. 2. 2016   #208615

majkeeone

$newPageId = time(); - tohle samo o sobe uz je chyba. Preci nemuzes do databaze pouzit casove razitko jako id, ne? Na cas na serveru se nemuzes polehnout. Id se v db preci vytvari automaticky u AUTOINCREMENT sloupce. Cas muzes pouzit jen jako pomucku, jiny loupec, cas vytvoreni clanku.

Mas zapnute error_reporting? Jake to pise chyby? Co nefunguje? Neprida se radek do databaze? Si muzes zkouknout pres phpmyadmina; nezapomen obnovit stranku po zmene! Nebo se radek prida, ale text clanku je prazdny? Jestli je prazdny, pak tam nepredavas spravne promenne. Nejspis by to chtelo udelat jednochou stranku jako demo, ktera nepotrebuje dalsi php kod a na ni to testovat, poskytnout nam k testovani. Takze je to par uryvku kodu, kde treba chyba neni, ale v tom dalsim kodu, co tu neni, chyba treba je.

Kit - jemu na to stacili 2 radky.

peter
Matematika › MATEMATIKA
15. 2. 2016   #208614

http://www.matematika.cz/diskriminant

Mas doma office, excel?

a * x * x + b * x + c = 0
D = b * b - 4 * a * c
x12 = (-b +- odm(D)) / (2 * a)

x^2 + 4 * x - 96 = 0 // 1 * x * x...
a = 1 (excel A1: 1)
b = 4 (B1: 4)
c = -96 (C1: -96)
A3: = B1 * B1 - 4 * A1 * C1 // musi to zacinat rovnitkem
A4: = (-B1 + ODMOCNINA(A3)) / (2 * A1)
A5: = (-B1 - ODMOCNINA(A3)) / (2 * A1)

Pro x * x * x a vyssi se to ale pocita jinak.

 

 

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