- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- [K2]: A vagyonvédelmi rendszerszerelővé válás rögös útja
- Luck Dragon: Asszociációs játék. :)
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
- droidic: A Coffee Lake titkos nyolcmagos processzora – CC150
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- GoodSpeed: Samsung Galaxy S24 FE - tapasztalatok
- Argos: PH!arckép
- weiss: Pant* rant
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
akopacsi #3635 üzenetére
1.) Először mindenképp a PHP-s ellenőrzést csináld meg, hogy az működjön, hiszen a JavaScript a böngészőben kikapcsolható, a PHP nem. Aztán utána jöhet a JavaScript-es ellenőrzés elkészítése, hiszen annak a működése kliens oldali, így értelemszerűen gyorsabb.
A legegyszerűbb, ha a $_POST adatok (vagyis az űrlap által elküldött mezők tartalmának) meglétét ellenőrzöd, az isset() és/vagy empty() függvénnyel.
Pl. if( !isset($_POST['az_egyik_urlapmezo']) ) { /* hibaüzenetek tárolása, vagy akármi hasonló... */ }
Ezután a következő lépés attól függ, a felhasználó számára szeretnéd-e felsorolni az összes hibát, vagyis az összes mezőt, ami még kitöltetlen, vagy sem (pl. csak kijelzed, hogy valahol hiba van, és kész). Erre is van többféle megoldás is, egyik egyszerűbb az, hogy mondjuk egy $hiba=""; változót inicializálsz az elején, és mindig hozzáfűzöd az aktuális hibasztringet, ha valahol hibát észleltél ($hiba .= 'Nem adta meg a nevét! <br />'; és ehhez hasonlók), és aztán mielőtt elküldenéd pl. adatbázisba az adatokat, ellenőrzöd, hogy a $hiba sztringed üres vagy sem. No meg attól is függ a dolog, hogy azonos oldalon dolgozod-e fel a kapott adatokat, vagy kiküldöd valami másik fájlnak, ami csak a feldolgozásért felel. Ha másik fájlba küldöd a feldolgozást, akkor egyik lehetséges megoldás a $_SESSION változók használata - pl. a hibasztringnek is beállíthatsz akár egy külön $_SESSION['hiba'] változót, aztán ezt kiíratod a form előtt; vagy azt is csinálhatod, hogy minden mezőnek külön $_SESSION változója van, és akkor akár rögtön a hiányos mező mellett is kiírathatod az üzenetet.
Utóbbi esetben (ha más fájlnak küldted ki a feldolgozást, és $_SESSION változókat használsz) csinálhatod azt is, hogy a júzernek ne kelljen még egyszer begépelni az adatokat, hogy
<input name="az_egyik_urlapmezo" type="text" id="az_egyik_urlapmezo"<?php if(isset($_SESSION['az_egyik_urlapmezo'])) echo ' value="'.$_SESSION['az_egyik_urlapmezo'].'" ';?> />A Javascriptes ellenőrzés: tételezzük fel, hogy van egy label mező is az input előtt (persze egyébként XHTML szabvány szerint a labelnek valami külön elemben kéne lennie, pl. div vagy táblázatmező vagy ilyesmi):
<label for="from_name" id="az_egyik_urlapmezo">Az egyik űrlapmező</label>
<input name="az_egyik_urlapmezo" type="text" id="az_egyik_urlapmezo"<?php if(isset($_SESSION['az_egyik_urlapmezo'])) echo ' value="'.$_SESSION['az_egyik_urlapmezo'].'" ';?> />Akkor ilyesmi lesz a Javascript erre vonatkozó egyik ellenőrző sora:
function formcheck(){
var hiba = '';
/***** Az egyik űrlapmező ellenőrzése******/
var urlapm = document.getElementById('az_egyik_urlapmezo');
var urlapm_label = document.getElementById('az_egyik_urlapmezo_label');
if ( ( urlapm.value.length==0 ) || (urlapm.value==null) ) {
hiba+='Nem adta meg a nevét!\n';
urlapm_label.style.color="#FF0000"; //red
}
else{
urlapm_label.style.color="#000000"; //black
}if(hiba!=''){
alert(hiba);
return false;
}
else {
return confirm('Kész?');
}
}Ez azt csinálja, hogy piros lesz a label mezőben található szöveg, így egyértelműen látszik, hol a hiba.
Persze a submit gombodhoz tedd be ezt:
<input onclick="return formcheck();" type="submit" name="send" id="send" value="Elküldés" />Az, hogy hányadikra küldték el a formot, mindegy kell, hogy legyen.
2.) Ha kisebbet kellene készítened a képből, nézz körül az imagecopyresampled() függvénynél, ott a felhasználói hozzászólások között biztos, hogy van egy-két kész megoldás, amit akár elég, ha kimásolsz.
Remélem nem fogalmaztam túl nehézkesen, vannak a leírtaknál szebb megoldások is, de most szerintem ez a legegyszerűbb.
Új hozzászólás Aktív témák
- Star Trek Online -=MMORPG=-
- Vigneau interaktív lokálblogja
- Honor Magic5 Pro - kamerák bűvöletében
- Milyen belső merevlemezt vegyek?
- Kerékpárosok, bringások ide!
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Nintendo Switch 2
- Anglia - élmények, tapasztalatok
- gban: Ingyen kellene, de tegnapra
- Ingatlanos topic!
- További aktív témák...
- Land Rover Explore R 4/64GB, Megkímélt, Kártyafüggetlen, Töltővel, 1 Év Garanciával!
- IPhone 12 128GB gyári független új programozott akkuval
- Bomba ár! HP Elitebook 840 G1 - i7-4G I 16GB I 240SSD I 14" HD+ Touch I Cam I W10 I Garancia!
- Bomba ár! HP Elitebook 840 G1 - i5-4GEN I 8GB I 180GB SSD I 14" HD+ I Cam I W10 I Garancia!
- Western Digital GOLD 12TB SATA3 (WD121KRYZ) HDD
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- Bomba ár! Dell Latitude 5590 - i5-8GEN I 8GB I 256SSD I 15,6" FHD I HDMI I CAM I W11 I Gari!
- AKCIÓ! Gigabyte H610M i5 12400F 16GB DDR4 512GB SSD RX 6700XT 12GB Zalman S2 TG Seasonic 650W
- Apple iPhone 12 Pro 128GB Kártyafüggetlen 1Év Garanciával
- AKCIÓ! Dell Optiplex 5050 SFF asztali számítógép - i5 7500 8GB DDR4 256GB SSD HD630 Win10
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest