Geek tričko zdarma Geek tričko zdarma
Hledáme grafika na pohodovou brigádu v Blenderu nebo programátora na hry v PyGame. Máš zájem? Napiš nám na redakce [zavináč] itnetwork.cz!
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde
Avatar
Tostisto
Člen
Avatar
Tostisto:20. srpna 16:31

Nejde mi spustit program python program přes Html stranku kde mám tlačítka pro spustení programu.

Zkusil jsem: Hledal jsem snad všude ale nic mi nefungovalo

 
Odpovědět 20. srpna 16:31
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20. srpna 17:01

Já jsem tě popravdě moc nepochopil.. chceš docílit toho, aby když klikneš tak se otevřel program na klientovém počítači, a nebo chceš docílit toho že se program který je na serveru po kliknutí na tlačítko vnoří do stránky?

 
Nahoru Odpovědět 20. srpna 17:01
Avatar
Tostisto
Člen
Avatar
Odpovídá na Milan Turyna
Tostisto:20. srpna 17:06

Chci docílit toho, když zmáčknu tlačítko tak se spustí program.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět 20. srpna 17:06
Avatar
Odpovídá na Tostisto
Andy Scheuchzer:20. srpna 17:19

Řekl bych, že ve druhém komentáři jsi nesdělil nic nového…

Nahoru Odpovědět  +1 20. srpna 17:19
Člověk, co si myslí, že snědl všechnu moudrost světa, i když tomu tak není.
Avatar
Tostisto
Člen
Avatar
Odpovídá na Andy Scheuchzer
Tostisto:20. srpna 17:31

Když zmáčknu tlačítko tak se spustí program na pozadí serveru

 
Nahoru Odpovědět 20. srpna 17:31
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20. srpna 17:53

Například by mohlo fungovat:

<?php

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython)

?>

a nebo

$pythonfile = escapeshellcmd('python blabla.py');
shell_exec($pythonfile);
Editováno 20. srpna 17:55
 
Nahoru Odpovědět 20. srpna 17:53
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Tostisto
Člen
Avatar
Tostisto:20. srpna 19:36

Předpokladam že to je PHP, takze tomu vubec nerozumim jak to mam přidat od html souboru aby to moje tlacitko fungovalo.

 
Nahoru Odpovědět 20. srpna 19:36
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20. srpna 19:52

Pošli HTML soubor který máš.

 
Nahoru Odpovědět 20. srpna 19:52
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:20. srpna 19:56

A příště ti doporučuji, když budeš zakládat téma, rovnou poslat HTML soubor, napsat normálně co chceš a ne napsat že chceš otevřít soubor, a když se tě někdo zeptá jak ho chceš otevřít tak napíšeš že ho chceš otevřít. Jinak samotné HTML je značkovací jazyk, a nemůžeš s ním nijak manipulovat se serverem.

 
Nahoru Odpovědět  +1 20. srpna 19:56
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Tostisto
Lukáš:20. srpna 22:50

Do html souboru php nepřidáš, musíš mít .php soubor.

 
Nahoru Odpovědět  +1 20. srpna 22:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21. srpna 7:55

Neni uplne jasne, zeho chces docilit a jak moc velke mas znalosti klient (uzivatel, browser) htm, css, js, server python, apache...

Mozna se ptas na js ajax, jquery post / get, form get/post. Ajax je mozne resit i prostym pridanim tagu script. V pripade php by to vypadalo takto:

--- xx.html ---
<script src="nova_stranka.php"></script>
<!--script src="script.js"></script-->
--- nova_stranka.php ---
<?php echo 'alert(123);'; ?> // js kod, protoze tag script vklada js kod

Pokud to chces do js promene, tak js http-request / jquery.
Nemam zdani, zda a jak se da spustit python jako sluzba na serveru. Pokud to nepujde, tak by to slo pres to, co ti uz psali. Pres php zavolas cmd() a spustit python z prikazoveho radku.

--- nova_stranka2.php ---
<?php

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython)

?>

Mozna si muzes vyzkouset jeste jinou formu ajaxu.

<iframe src="" id=xxx></iframe>
<input type=button onclick="document.getElementById('xxx').src='novastranka2.php';" value="klikni">
<a href="#ajax1"  onclick="document.getElementById('xxx').src='novastranka2.php'; return false;">klikni</a>
<a href="#ajax2"  onclick="this.yyy.src='novastranka2.php'; this.yyy.style.visibility:visible; return false;">klikni <iframe src="" name=yyy style="visibility:hidden;"></iframe></a>
Editováno 21. srpna 7:57
 
Nahoru Odpovědět 21. srpna 7:55
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:21. srpna 9:50

K tomu aby ti to tlačítko fungovalo tak potřebuješ v PHP vytvořit podmínku, která vytvoří událost pouze potom co se uživatel klikne na submit tlačítko například:

<?php

if(isset($_POST['nazev'])) {

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython)

}

?>

a u $_POST['nazev'] si to přepíšeš na atribut name který máš v tlačítku (myslím tím name=""), ono by to chtělo když se chce něco spustit na serveru, taky nějaký server-side jazyk umět, protože HTML je pouze "design a text" a nemůže ovlivňovat server, dělat podmínky, a tak dále.

Prakticky to máš tady:

index.php

<?php

if(isset($_POST['nazev'])) {

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython);

}

?>
<form method="post">
<input type="button" name="nazev" value="Spustit">
</form>

Takže buď nemanipulovat se serverem, a nebo se naučit minimálně základy nějakého serverového jazyka (např: php, výběr už je na vás), html je klientský jazyk, tudíž nejde manipulovat se serverem.

K tomu aby se pokaždé když dá uživatel F5 či resetuje stránku, neodesílal příkaz, se dá předejít bud formulářem který bude odkazovat na samostatný PHP soubor který provede danou akci a po provedení zas uživatele odešle na stránku kde je tlačítko (např: index.html) přes header("Location: index.html"); a myslím že i ajaxem, ale to jsem nikdy nedělal, takže to přenechám jiným..

Takže by to vypadalo následovně:

index.html

<form action="akce.php" method="post">
<input type="submit" name="akce" value="Spustit">
</form>

akce.php

if(isset($_POST['name'])) {

$pythonfile = escapeshellcmd('python blabla.py');
$callpython = shell_exec($pythonfile);

echo($callpython);

header("Location: index.html");

} else {

header("Location: index.html");

 }

Nevím, jestli to bude fungovat, psal jsem to pouze tady v komentářích a ani jsem to netestoval ale mělo by.. pokud budeš potřebovat další akce se serverem tak bych doporučil se nenaučit nějaký server-side jazyk, a uvidíš že to bude mnohem rychlejší a efektivnější..

 
Nahoru Odpovědět 21. srpna 9:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.