- Argos: Szeretem az ecetfát
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- Szevam: Mennyire tipik Z-gen viselkedés? Tipizálható-e egyáltalán?
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- body007: Magyarország kifosztásának története
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
fordfairlane
veterán
válasz
zzolika #10316 üzenetére
Ha annyi a követelmény, hogy ugyanazon az oldalon maradj, akkor ezt viszonylag egyszerű megoldani.
Nagyon leegyszerűsítve, a végrehajtási szál, egyetlen formra, egy fájlba téve a submit kezelését és a formot:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$eredmeny = szamol($_POST['operandus1'], $_POST['operandus2']);
echo $eredmeny;
}
?>
<form action="" method="post">
<input type="text" name="operandus1" />
<input type="text" name="operandus2" />
<input type="submit" value="Számolj" />
</form>Ebbe persze még valahova bele kell rakni a "szamol()" függvény implementációját.
-
Soak
veterán
válasz
zzolika #10316 üzenetére
Rosszul érted.
Egy egszerű ábra ahogy a php működik:
Magyarul, ha te a böngésző elött ülsz és megnézed a forráskódot akkor csak html lesz benne. Ha ugyanezt megnézed a szerveren akkor ott látni fogod a php kódot. Ennek az az okat, hogy a javascriptel ellentétben a php nem a user CPU-n dolgoztat, hanem a szerverén (eléggé leegyszerűsítve
) . Tehát ha a böngésző meghív egy oldalt az azt eredményezi, hogy a szerveren kiválasztott oldalt a szerver elöbb összerakja majd azután megmutatja. Ellentétben egy statikus html oldallal ahol a böngésző csak értelmezi a html kódot.
A lényege az, hogy ha nem szerveren fut a php és ugy akarod megnézni (akár böngészővel) akkor egyszerűen írás lessz belőle.
Ha windosos környezetben dologozol akkor tedd fel a WAMP-ot (feltesz még egy-két dolgot, de egyik sem haszontalan) . Ezzel eléred azt, hogy ugymond a te gépeden egy könyvtár ki lesz nevezve servernek, ahova berakod a php-s odaladat, böngészőve beirod, hogy localhost/etc/file.php és akkor már látni fogod.
U.i.: A form action="" nem az a lényeg, hogy átírányítson, hanem az, hogy postot csak egyszer küldjön, ne minden frissitésnél.
-
fordfairlane
veterán
válasz
zzolika #10316 üzenetére
Csakhogy te áttettél egy számítást szerveroldalra. Innentől kezdve a dolog nem függvényhívás, hanem adatok elküldése a szervernek, a szerver betölti a php értelmezőt, az végrehajtja a megfelelő php fájlt. Ebben a php fájlban meg kell vizsgálod a bejövő paramétereket, meg kell hívnod a megfelelő függvényt, össze kell állítanod a böngészőnek visszaküldendő adatokat.
Ez innentől egy elosztott rendszer, ahol nem létezik olyan, hogy sima függvényhívás. Innentől két külön gépen két külön folyamat van, ami között egy kezdetleges, request-response HTTP protokoll az egyetlen kommunikációs csatorna.
-
fordfairlane
veterán
válasz
zzolika #10312 üzenetére
Tehát hiába rakom bele a PHP szubrutint az oldal kódjába, nem lehet ezt a PHP függvényt ugyanúgy meghívni, mint egy JavaScriptet?
Lényegében nem. Hiába raksz PHP kódrészletet egy fileba, az a kódrészlet a kliens számára láthatatlan marad, a kliens csak a PHP script kimenetét látja. Ha megnézed a html forrást a böngészőben, semmi jel nem utal arra, hogy szerveroldalon ezt mi és hogyan állította elő.
A böngésződnek arról nincs tudomása, hogy létezik-e szerveroldalon ilyen függvény, hiába rakod ugyanabba a fájlba a függvény implementációját, és a html kimenetet. A böngésző csupán fájlt tud "meghívni" (<form action="file.php">) különféle paraméterekkel. Azt már szerveroldalon kell megoldani, hogy a kapott paraméterek alapján a megfelelő függvény meghívódjon.
Tehát lényegében neked nem függvényt kell meghívnod, hanem kommunikálni kell tudnod a szerverrel.
-
Soak
veterán
válasz
zzolika #10312 üzenetére
Hogyne lehetne. Az oldaladon nincsen beléptető rendszer amit php-vel oldottál meg? Ugyanúgy meg tudod ezt is csinálni.
kb így :
<?php
if(isset($_POST['submit'])) {
ide rakod amit akarsz csináltatni
}form meg igy néz ki
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="submit" name="submit" value="Upload" />
</form>Fontos, hogy az action="" azt jelenti, hogy a form hol keresi a függvényt, ha üres akkor az adott oldalon keresi . valamint fontos a name is mert a $_POST onnan tudja, hogy most ő van porondon.
-
fordfairlane
veterán
válasz
zzolika #10310 üzenetére
Nézz meg egy php tutorialt, amiben leírják, hogy hogyan kell formokat kezelni PHP-ben. Én is írhatnék ilyet, de egyrészt lusta vagyok, másrészt a neten egy tonnányi leírás van ilyen témában.
Annyi a lényege, hogy csinálsz egy formot, egy vagy több beviteli mezővel, raksz bele submit gombot, majd szerveroldalon PHP-ben kezelni kell a submit actiont, ami meghívja a megfelelő PHP-s függvényedet.
A másik lehetőség, hogy az oldal újratöltődése nélkül aszinkron módon kliensoldali scriptből indítasz el submitet (AJAX), a szerveroldalon ennek nagyjából ugyanaz a kezelése, mint a sima form submitnek.
Ezt vagy neked kell megírnod, vagy megfelelő frameworköt kell használod. Magában a böngészőkben és a PHP-ben nem létezik olyan fajta automatizmus (RPC, DCOM, CORBA), ami megoldja helyetted, hogy kliensoldalról simán meghívj egy szerveroldalon implementált függvényt vagy metódust.
Új hozzászólás Aktív témák
Hirdetés
- Tesla topik
- Építő/felújító topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Autós topik látogatók beszélgetős, offolós topikja
- Kerékpárosok, bringások ide!
- Háztartási gépek
- exHWSW - Értünk mindenhez IS
- 2025 - Íme a 26. héten megjelenő játékok listája
- Milyen légkondit a lakásba?
- További aktív témák...
- AKCIÓ! GAMER PC: Új RYZEN 5 4500-5600X +RTX 3060/3070/3080 +Új 16-64GB DDR4! GAR/SZÁMLA! 50 FÉLE HÁZ
- UHH! HP EliteBook 840 G8 Fémházas Laptop 14" -45% i5-1145G7 4Mag 32/512 FHD IPS Intel Iris Xe Magyar
- Xiaomi Redmi Note 13 Pro 5G - 8/256 - Media Markt garancia
- Xiaomi Redmi 9at - 2/32 - szürke
- Xiaomi Mi8 - 6/128 - fekete
- FÉL ÁR ALATT! Lian Li UNI FAN SL120 RGB 1db-os és 3db-os ventilátor szett garanciával
- Bomba ár! Dell Latitude 7320 - i5-11GEN I 8GB I 512SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
- Apple iPhone 16 Pro Max - Natural Titanium - Újszerű - 1 töltési ciklus - 2026. 05. 13.-ig Apple gar
- Veszünk: PS5 Fat/Slim/Digital/Pro konzolt, játékokat, Portalt stb. Kérj ajánlatot!
- AKCIÓ! Csere-Beszámítás! Manli RTX 3070Ti 8GB GDDR6X Videokártya!
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest