Button ONCLICK

Odpowiedz Nowy wątek
2019-01-06 16:41
0

Cześć,
Na początku zaznaczę, że jestem mocno początkujący w kwestii PHP , ale piszę aktualnie pewien program i chciałbym żeby po wciśnięciu przycisku (najlepiej bez przeładowania strony) wykonała się pewna funkcja (w tej chwili jest to tylko napis dla sprawdzenia, czy działa). Posługiwałem się innymi wątkami na forum, YT, ale nie mogę już nic wymyślić.
Z góry dzięki za pomoc, poniżej umieszczam swój kod:

<form action="" method="post">
<button type="submit" name="addfirma" value="nowa">Dodaj firmę</button>
</form> 

<?php
    function nazwa($val)
    {
        echo "Udało się";
    }
if(isset($POST['addfirma']))
{
echo nazwa($_POST['addfirma']);
}

?>
edytowany 4x, ostatnio: John15, 2019-01-06 16:44

Pozostało 580 znaków

2019-01-08 18:14
0

Musisz poczytać o JS i Ajax jak chcesz bez przeładowywania strony, to raz. Dwa - Twój kod zawiera błąd przez który funkcja się nie wykonuje. Zmień swojego if'a na:

if(isset($_POST['addfirma']))

Pozostało 580 znaków

2019-01-08 19:10
0

PHP się nie wykona w przeglądarce, ponieważ działa po stronie serwera. W momencie, kiedy użytkownik otwiera stronę w przeglądarce, kod PHP już jest dawno wykonany.

To jeden z najbardziej powszechnych błędów osób, które piszą w PHP - że chcą odpalać PHP w przeglądarce (albo inna odmiana tego błędu: chcą odpalać przeglądarkowy JavaScript na serwerze i brać z niego wartości do PHP).

PHP nie odpalisz w przeglądarce w ten sposób. Idąc w rozwiązanie PHP-only mógłbyś stworzyć formularz (<form>) w HTML i wspomniany przycisk zrobić jako "submit". Wtedy po wciśnięciu przycisku, poleciałoby zapytanie HTTP do serwera, w rezultacie odpaliłby się kod PHP na serwerze, który wyrenderowałby HTML z powrotem do przeglądarki (i strona by się przeładowała przy okazji).

Mógłbyś użyć też JavaScript, wtedy miałbyś to bez przeładowania strony, np. tak: https://jsfiddle.net/rgve2csd/
No ale jak JavaScript to zapomnij o PHP w tym kawałku


((0b10*0b11*(0b10**0b101-0b10)**0b10+0b110)**0b10+(100-1)**0b10+0x10-1).toString(0b10**0b101+0b100);
Za bardzo nie rozumiem Twojego postu ale pisząc swoją odpowiedź nie zagłębiałem się w zasady działania serwera www :) Kod podany przez autora (po poprawieniu błędu oczywiście) zadziała jeżeli uruchomimy go na serwerze z PHP. To kiedy co zostanie wykonane to inna sprawa ale autorowi chodziło raczej o zwykłe podstawy. - leonpro778 2019-01-08 20:27
No to akurat podstawy i jak dla mnie każdy kto programuje web powinien mieć jakąś ogólna orientację na czym polega model klient-serwer, zapytania HTTP, odpowiedzi z serwera itp. A co do "kiedy" zostanie to wykonane ma znaczenie w sytuacji, kiedy autor pisze, że "bez przeładowania strony" (bo rozwiązanie PHP-only będzie wymagać przeładowania strony). Chociaż jak tak patrzę, to może faktycznie źle zintepretowałem post autora, założyłem, że chce wywołać funkcję PHP z przeglądarki (co by nie miało sensu), a przecież w pierwszym poście jest zwykłe wysłanie formularza. - LukeJL 2019-01-08 20:55

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0