IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.
Avatar
BumBumRatatata:20.8.2019 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.8.2019 16:31
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:20.8.2019 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.8.2019 17:01
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Odpovídá na Milan Turyna
BumBumRatatata:20.8.2019 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.8.2019 17:06
Avatar
Odpovídá na BumBumRatatata
Neaktivní uživatel:20.8.2019 17:19

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

Nahoru Odpovědět
20.8.2019 17:19
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
BumBumRatatata:20.8.2019 17:31

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

 
Nahoru Odpovědět
20.8.2019 17:31
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:20.8.2019 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.8.2019 17:55
Nahoru Odpovědět
20.8.2019 17:53
Řeš pouze to, co dokážeš ovlivnit.
Avatar
BumBumRatatata:20.8.2019 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.8.2019 19:36
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:20.8.2019 19:52

Pošli HTML soubor který máš.

Nahoru Odpovědět
20.8.2019 19:52
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:20.8.2019 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
20.8.2019 19:56
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Lukáš
Tvůrce
Avatar
Odpovídá na BumBumRatatata
Lukáš:20.8.2019 22:50

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

 
Nahoru Odpovědět
20.8.2019 22:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21.8.2019 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.8.2019 7:57
 
Nahoru Odpovědět
21.8.2019 7:55
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:21.8.2019 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.8.2019 9:50
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Jan Toman
Člen
Avatar
Jan Toman:21.6.2020 10:10

Čau, pokud je to ještě aktuální, z tohodle tutoriálu jsem čerpal. Je to na raspberry a spouští bash - já jsem takhle spuštěl .py. Je to celkem na prasáka, ale funguje to :)

https://www.instructables.com/…er-Internet/

Editováno 21.6.2020 10:11
 
Nahoru Odpovědět
21.6.2020 10:10
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 13 zpráv z 13.