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í.
Avatar
Mirek Matějka:17.3.2020 9:24

Po aktualizaci Windows mi přestaly fungovat skripty. Používám XAMPP v. 3.2.4 a Apache Netbeans IDE 11.2. Když se pokouším spustit např. originální soubor kalkulačky z 6. lekce "https://www.it­network.cz/php/za­klady/zaklady-php-podminky-if-else", po zadání proměnných do HTML formuláře s $_POST se skript neprovede a místo toho se na stránku vypíše obsah pomocného php skriptu. Takto se mi chovají naprosto všechny php soubory. Už mne nenapadá, co bych měl dělat.

Zkusil jsem: Zkoušel jsem již přeinstalovat XAMPP i Netbeans, nicméně domnívám se že problém je někde v nastavení Windows. Debugger hlásí tuto chybu: [0316/222145.078:ER­ROR:crash_repor­t_database_win­.cc(469)] failed to stat report

 
Odpovědět
17.3.2020 9:24
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17.3.2020 10:50

Protoze ta kalkulacka je spatne napsana. Autor ji osidil o radu podminek. A php nejspis vypisuje chyby.

1. Zkus si tam prdat vypis chyb. php.net/error_re­porting
2.

$a = $_POST['cislo1'];
$b = $_POST['cislo2'];
$operace = $_POST['operace'];
///...
echo("Výsledek: $vysledek");
---
// oprava
$a = isset($_POST['cislo1']) ? $_POST['cislo1'] * 1 : 0;
$b = isset($_POST['cislo2']) ? $_POST['cislo2'] * 1 : 0;
$operace = isset($_POST['operace']) ? $_POST['operace'] : '';
$vysledek = '';
//...
echo "Výsledek: $vysledek";
Editováno 17.3.2020 10:52
 
Nahoru Odpovědět
17.3.2020 10:50
Avatar
Mirek Matějka:17.3.2020 11:08

Peter, děkuji za návrh opravy, nicméně nepomohlo to.

 
Nahoru Odpovědět
17.3.2020 11:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17.3.2020 14:39

" místo toho se na stránku vypíše obsah pomocného php skriptu"
To bud php nejede, nemas ho spustene, nebo hlasi konflikt s portem a tak ho nespusti.
Nebo mas spatne nastaveny server, jina slozka.
Nebo nespoustit soubory pres server, localhost, ale jako file://.
A nebo mozna selhalo kodovani, w1250 default na serveru zpracuje php utf8 jako text. Mozna proto, ze prvni 3 znaky jsou utf8-BOM.

 
Nahoru Odpovědět
17.3.2020 14:39
Avatar
Odpovídá na Peter Mlich
Mirek Matějka:17.3.2020 15:06

Po zanesení tvé opravy se při spuštění kódu v NetBeans vypíše na stránce pouze slovo "Výsledek:" bez nabídky vložení hodnot. PHP server zde tedy funguje. Také když zadám do vyhledávacího řádku localhost:80 načte se dashboard od Netbeans. Avšak když ve složce kliknu na ikonu "kalkulacka.html", korektně se mi otevře dialog s nabídkou vložení čísel a volby početní operace. Nicméně když čísla a operaci zadám a stisknu tlačítko "Vypočítej", akce se neprovede a místo toho se na stránce vypíše celý kód souboru vypocet.php. Viz zde níže:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Kalkulačka</title>
    </head>
    <body>
        <?php
        $a = isset($_POST['cislo1']) ? $_POST['cislo1'] * 1 : 0;
        $b = isset($_POST['cislo2']) ? $_POST['cislo2'] * 1 : 0;
        $operace = isset($_POST['operace']) ? $_POST['operace'] : '';
        $vysledek = '';
        if ($operace == 'scitani')
            $vysledek = $a + $b;
        else if ($operace == 'odcitani')
            $vysledek = $a - $b;
        else if ($operace == 'nasobeni')
            $vysledek = $a * $b;
        else if ($operace == 'deleni')
            if ($b != 0)
                $vysledek = $a / $b;
            else
                $vysledek = 'Chyba';
        echo("Výsledek: $vysledek");
        ?>
    </body>
</html>
 
Nahoru Odpovědět
17.3.2020 15:06
Avatar
Odpovídá na Peter Mlich
Mirek Matějka:17.3.2020 15:45

Zjistil jsem zvláštní věc, že dokonce ani v prémiové úloze k lekci PHP, když stisknu tlačítko "Spustit kód", tak se kód nespustí, ale stránka přepne z úloh na úvodní stranu ITnetwork. Když ale stisknu "Odevzdat úlohu", akce se provede. Zřejmě je tedy nějaký problém v prohlížečích, dělá mi to ale jak Chrome, tak i IE, takže je to asi něco přímo ve Windows.

 
Nahoru Odpovědět
17.3.2020 15:45
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Mirek Matějka
Peter Mlich:17.3.2020 19:29

A muzes sem dat kod a nazev souboru a slozku souboru, jak to spoustis?
---aaa.php---

<form action="aaa.php" method="post">
<input name="xxx" value="123">
<input type="submit">
</form>
<?php
$name = 'xxx';
$poslano = isset($_POST[$name ]) ? $_POST[$name ] : '';
echo "xxx=$poslano";
?>

Zkus tohle, kliknes odeslat a melo by to vypsat xxx=123

 
Nahoru Odpovědět
17.3.2020 19:29
Avatar
Odpovídá na Peter Mlich
Mirek Matějka:17.3.2020 20:51

Ano, výpis se zdařil. Mé spouštěcí html je toto:

<!DOCTYPE html>
<html>
    <head>
        <title>Kalkulačka</title>
        <meta charset="UTF-8"/>
    </head>
    <body>
        <p>Zadejte dvě čísla a operaci:</p>
    <form method="POST" action="vypocet.php">
        <input name="cislo1" type="text"/><br />
        <input name="cislo2" type="text"/><br />
        Operace:
        <select name="operace">
            <option value="scitani">Sčítání</option>
            <option value="odcitani">Odčítání</option>
            <option value="nasobeni">Násobení</option>
            <option value="deleni">Dělení</option>
        </select><br />
        <input type="submit" value="Vypočítej" />
    </form>
    </body>
</html>
 
Nahoru Odpovědět
17.3.2020 20:51
Avatar
Odpovídá na Peter Mlich
Mirek Matějka:17.3.2020 21:38

Vše se nachází ve složce "C:\xampp\htdoc­s\kalkulacka" Soubory jsou "kalkulacka.html" a "vypocet.php".

 
Nahoru Odpovědět
17.3.2020 21:38
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18.3.2020 8:09

Pro neparove tagy, ty zpetna lomitka tam delat nemusis, to je podle starsich pravidel.
No, takze, pokud muj kod funguje, tak mas nejake divne znaky v tom tvem. Mozna 3 znaky pro utf, bom, na zacatku kodu. Editor ti to neukazuje, ale pridava ti je do kodu. Mozna zkusit v tom editoru rici, at to nedela.
Nebo zkus pouzit notepad a zkopiruj kod do nej pres ctrl+c, ctrl+v.
Nebo zkopiruj kod tady do okenka pro psani zpravy, pak jej oznac a ctrl+c a zkopiruj do notepadu nebo neceho jineho. Editacni pole tady urcite potlaci znaky, se kterymi si html moc nerozumi, ani php.

 
Nahoru Odpovědět
18.3.2020 8:09
Avatar
Odpovídá na Peter Mlich
Mirek Matějka:26.3.2020 16:29

Petře, děkuji za cenné podněty, které pro mne byly jistě poučné, i když nevyřešily daný problém. Měl jsi pravdu, že problém byl s php v PC. Ačkoli xampp fungovalo a vše bylo zelené, bylo nutné v php.ini zakomentovat "sqlite extension" a spouštět xampp jako administrátor. Také bylo nutné pokaždé zkontrolovat obsah adresního řádku, protože místo "localhost/..." se tam vypisovala adresa C:/xampp/htdocs/... Když jsem údaj v řádku opravil u ovládacího html, i php pak už fungovalo. V každém případě díky za ochotnou asistenci.

 
Nahoru Odpovědět
26.3.2020 16:29
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 11 zpráv z 11.