Diskuze: PHP parse error:syntax error
Člen
Zobrazeno 19 zpráv z 19.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
</head>
<body>
<?php
require 'penize.php';
$penize = $penize - $_POST[konto];
echo Ahoj na kontě máš: $penize;
?>
</body>
</html>
Ještě zdroják chybového souboru
Ahoj, funkce echo požaduje pro vypsání textu uvozovky nebo apostrofy:
echo "Ahoj, na kontě máš: $penize.";
Taková chyba a to mám z toho že jsem to nepsal v editoru s nápovědou syntaxe.
Tak chyba vyřešena, program funguje ale před výpisem textu to vypíše:
Warning: Use of undefined constant konto - assumed 'konto' (this will throw an Error in a future version of PHP) in C:\xampp\htdocs\project\kdovi.php on line 13
edit: vyřešena chyběli mi tam uvozovky. Doporučili byste mi editor sublime text?
Aj ten je dobrý, ale osobne používam VS code..
Jsem přehlédl, to konto v superglobálním poli, to taky do uvozovek Každopádně ohledně IDE, kde se ti dělá nejlépe, ten je pro tebe nejlepší. Každý má rád něco jiné, přirovnal bych to k zmrzlině Také podle jazyků, v kterých píšeš kód.
notepad++, pspad, a ja pouzivam Far manager. Moderni editory neznam.
kazdopadne, muze zkusit googlovat a zkouknout online dokumentaci. V online verzi jsou priklady od uzivatelu. Obcas se tam najde reseni, pripadne tam mas priklady, jak se co pise podle autoru php. Ja to pouzivam dost casto, protoze nekdere funkce maji rozdilne poradi argumentu a nikdy si nepamatuji, jake zrovna je u te, co chci pouzit
Ještě jeden problém, tato aplikace je součástí jednoho většího projektu. Potřebuji poradit s tím že odečtu peníze, to proběhlo v pořádku,ale také potřebuji aby se nové konto uložilo do proměnné v jiném souboru například proměnné.php.
session ( session_start() )?
file_put_content?
databazi?
Nebo, co ja vim, jake s tim mas plany. Mozna by ti stacilo pouzit session,
ulozit to dokud je uzivatel online a pouzit v jinem php. Pokud to potrebujes
trvale, tak ulozit do souboru nebo databaze.
Plánuji jednu webovou hru. Když kliknete na tlačítko zaplatit, potřebuji aby se přepsala výchozí hodnota ve všech dokumentech.
Zkus lepe popsat princip, jak to ma fungovat. Pripadne, jak uz to mas udelane, kod?
Webove hry se daji delat ruznymi zpusoby. Pokud ma stejnou informaci sdilet vice uzivatelu, ukladaji se data do databaze. Soubor je take mozny, ale je to krajni moznosti nebo, pokud se jedna o jednoduche informace. V tom pripade doporucuji zkusit pouzivat kodovani poli do csv nebo json.
<?php
// php.net/fputcsv / php.net/fgetcsv
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
---
// php.net/json_encode / php.net/json_decode / file_get_contents / file_put_contents
$file = 'people.txt';
$list = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
$content = json_encode($list);
file_put_contents($file, $content);
?>
Problem nastava, ze stranka je staticka. Takze, pokud se ma informace zmenit co nejdriv, je treba se neustale dotazovat serveru, pridat do ni javascript. Jinak se ceka, az uzivatel klikne na tlacitko nebo odkaz, aby se stranka znova nacetla. Tento zpusob se pouziva treba u bank, tabulek: nakup, prodej cizi meny
Momentalne moderni je usporna socket komunikace, kdy si prohlizec sleduje nejaky kanal, web-socket nebo RTC, ale to je slozitejsi na programovani, pripadne by sis musel sehnat a spustit na serveru program, ktery se bude s uzivateli bavit pres sockety. Ale, tak, pokud to nedelas prilis casto, tak ti staci javascriptovy httprequest nebo staticke obnoveni stranky pres odkaz nebo tlacitko.
Aplikace bude nějaký simulátor života a moc toho nemám pracuji na této aplikaci protože je klíčová. Na začátku budete mít nějakou částku ( testovací = 1000 Kč) a bude nakupovat a vydělávat. Potřebuji aby po kliknutí na tlačítko koupit se odečetly peníze a to požadovaná částka a potřebuji aby ve všech souborech kde byla hodnota 1000 byla třeba hodnota 467 a po kliknutí vydělat se má přičíst třeba 5 kč.
Nevim, zda se chapeme.
google = php session_start example
google = php session example
<?php
$data = array('penize' => 10);
$data_json = json_endode($data);
?>
<form>
<input type=hidden name=data value="<?php echo $data_json?>">
<input type=text name=penize value="<?php echo $data['penize']?>">
<input type=submit>
</form>
Cili, slo by to zjednodusit, ze by vsechny formulare meli stejna data. Coz neni uplne cool, duplicity ale taky to jde pro tak malou hru.
<?php
if (!isset($GET['cmd']))
{ // nova hra
$data = array('penize' => 10);
}
else
{
$cmd = $GET['cmd'];
if ($cmd=='add') {$data['penize'] += 1;}
elseif ($cmd=='sub') {$data['penize'] -= 1;}
}
$data_json = json_endode($data);
?>
Penize <?php echo $data['penize']; ?>
<form method=get>
<input type=hidden name=data value="<?php echo $data_json; ?>">
<input type=hidden name=cmd value="add">
<input type=submit value=plus>
</form>
<form method=get>
<input type=hidden name=data value="<?php echo $data_json; ?>">
<input type=hidden name=cmd value="add">
<input type=submit value=minus>
</form>
Jeste jedna uprava, oprava. Pisi to z hlavy, takze to nemusi fungovat, ale principialne. Snad si to upravis uz sam
<?php
if (!isset($GET['cmd']))
{ // nova hra
$data = array('penize' => 10);
}
else
{
$cmd = $GET['cmd'];
$data = isset($GET['data']) ? json_decode($GET['data']) : null;
$data = is_array($data) && isset($data['penize']) ? $data : array('penize' => 10); // jestlize je chyba s daty, tak resetuj na novou hru
if ($cmd=='add') {$data['penize'] += 1;}
elseif ($cmd=='sub') {$data['penize'] -= 1;}
}
$data_json = json_endode($data);
?>
Penize <?php echo $data['penize']; ?>
<form method=get>
<input type=hidden name=data value="<?php echo $data_json; ?>">
<input type=hidden name=cmd value="add">
<input type=submit value=plus>
</form>
<form method=get>
<input type=hidden name=data value="<?php echo $data_json; ?>">
<input type=hidden name=cmd value="sub"> <!--taky oprava-->
<input type=submit value=minus>
</form>
Pokud to ma videt jiny clovek na jinem pc, pak data musis ukladat na
server.
Takze se skrta js Cookies/Storage, php Session, html form GET/POST. To jsou
data, ktera vidis jen ty.
Zustava tedy soubor nebo databaze. Doporucuji databazi, jestli je to vetsi
projekt, pripadne to budes rozsirovat. Nebo pouzij ten soubor, ale budes muset
data organizovat, aspon pomoci json. Mysleno tak, ze bude treba zapisovat data
jednotlivych hracu.
class classMyDB
{
private $file_name;
function __construct($file_name)
{
$this->file_name = $file_name;
}
private function create()
{
$bool = false;
if (!file_exists($file_name))
{
$list = array();
$content = json_encode($list);
$bool = file_put_contents($file, $content);
}
if ($bool===false)
{}// soubor se nepodarilo vytvorit, protoze...
// nejsou linuxova opravneni pro zapis do slozky (php file fileperms)
// NEBO soubor jiz existuje
return $bool;
}
private function save($list = array())
{
if (!file_exists($file_name))
{
return $this->create();
}
if (file_exists($file_name))
{
$content = json_encode($list);
return file_put_contents($file, $content);
}
}
private function load()
{
if (!file_exists($file_name))
{
$this->create()
$list = array();
return $list;
}
else
{
$content = file_get_contents($file_name, $content);
$list = json_decode($content);
return $list;
}
}
}
$myDB = classMyDB('people.txt');
// db SELECT
$players_list = $myDB->load();
$players_list = is_array($players_list) ? $players_list : array(); // pokud je soubor spatne, neni to array, pak resetuj na prazdnou array
// player changes
$player = array();
$player['penize'] = 123;
$player['name'] = 'pepa';
$player['psw'] = 'pepa';
// $players_list update
$players_list[$player['name']] = $player;
// db UPDATE
$myDB->save($players_list);
---
// Penize resis pres GET / POST (ja bych pouzil post, <form method="post">), jmeno hrace mas v SESSION, pripadne ho logujes. Take si to muzes obalit do class. Totez upravu hodnot playera, muze byt vlastni class.
// login
function login(&$players_list, $name='', $psw='')
{
if (isset($players_list[$name]))
{
$player = players_list[$name];
if ($player['name']==$name && $player['psw']==$psw)
{
return $player;
}
}
}
$name = isset($_POST['name']) ? $_POST['name'] : ''; // <input name=name>
$psw = isset($_POST['psw']) ? $_POST['psw'] : ''; // <input name=psw>
$player = login($players_list, $name, $psw);
if ($player==false) {} // player neexistuje, bud ho vytvorit nebo se prihlasuje nekdo, kdo nezna jmeno a heslo
pisu to z hlavy, takze, opet, mozna nejaka chybka...
Zobrazeno 19 zpráv z 19.