Php programozásban szeretnék segítséget kérni?
Sziasztok.
Nem rég vettem egy könyvet és nem nagyon értek benne valamit, egész pontosan a felkiáltó jel funkciót.
Például empty-nél és issetnél.
Az értem ha pl sima empty van akkor azt vizsgálja, hogy üres e ha !empty van akkor azt, hogy nem üres e, issetnél ugyan ez csak megadással.
Konkrétan azt nem értem, hogy pl ha csinálok egy űrlapot
és sima empty-t adok neki, és megjelenítettem az adott file-t azonnal ki írja hogy az adott változó hiányzik, de ettől függetlenül beküld egy üres adatbázist, ha felkiáltó jellel csinálom akkor is üres adatbázist de, annyi különbséggel, hogy ha beküldöm az űrlap adatokat akkor írja ki.
Példákul
if(isset($_POST['bekuld'])) {
$változó1 = $_POST['valtozo1'];
$változó2 = $_POST['valtozo2'];
if(empty($változó1)) {
echo "Nem adtad meg az egyes változót";
}
if(empty($változó2)) {
echo "Nem adtad meg az kettes változót";
}
mysql_query("INSERT INTO tabla_nev (adat) VALUES ('$valtozo')");
}//beküld lezárás
igye ide jön a form a bekuld azonosítóval
És ennek ellenére a fent emlitett probálkozási hibák jönnek be.
Valaki ha lenne olyan kedves elmagyarázná nekem mit csinálok rosszul?
Köszönöm
Azért küldi be, mert az if-nél csupán végrehajtódik az adott utasítás
if(empty($változó2)) {
echo "Nem adtad meg az kettes változót";
}
Végrehajtódik a kiíratás, és utána folytatódik a program a } után, ahhoz, hogy ezt megold csináld így:
if(empty($változó1))
{
echo "első üres\n";
}elseif(empty($változó2))
{
echo "második üres\n";
}else{
//mysql-be írás
}
Még egy tanács, ne használj ékezetes változóneveket.
A ! pedig nem más, mint az eredményt negálja (megfordítja), ami eredetileg igaz (true) az hamis (false) lesz, a hamis pedig igaz.
Egy kicsit pontosítanák a válaszomon, most jut eszembe,m ha elseif-el vizsgálod, az nem írja ki, ha mindkettő hiányzik, a legjobb, ha egy feltételen belül megvizsgálod, hogy mindkettő megvan-e, ha egyik hiányzik, akkor megvizsgálod, melyik hiányzik
if((empty...) or (empty...))
{
if(empty...)
}else
//mysql
megmondom szintén így kicsit zavaros, mert belegabalyodok a sok if-be.
Azért tettem fel ezt a kérdést valójában mert megnéztem mások kódolását én ott sima empty kapcsos zárójelek nélkül ezt nem értem, és azok az ellenőrzők előtt van felkiáltójel ami functions egyedi ellenőrzők formájában van kialakítva
A kapcsos zárójelet csak akkor lehet elhagyni, ha a végrehajtandó utasítás egy sor, ha több, akkor mindenképpen kell, ha egy, akkor pedig oda lehet tenni. Itt van konkrétan, hogy hogyan gondoltam:
if(isset($_POST['bekuld']))
{
$változo1 = $_POST['valtozo1'];
$változo2 = $_POST['valtozo2'];
if(empty($valtozo1) or empty($valtozo2)) //ha valami hiányzik
{
if(empty($változo1)) {
echo "Nem adtad meg az egyes változót<br>";
}
if(empty($változo2)) {
echo "Nem adtad meg az kettes változót<br>";
}
}else //ha mindkettő meg van adva
mysql_query("INSERT INTO table_name SET valt1='$valtozo1', valt2='valtozo2'");
És mint írtam, akkor tegyél elé felkiáltójelet, ha azt szeretnéd ellenőrizni, hogy van-e, nem pedig, hogy nincs-e
Nem sok különbség lenne a programban.
Hogy ne gabalyodj bele az if, {}-be, tagold a programot, azaz ha nyitsz egy kapcsos zárójelet, akkor nyomj egy tabulátor-t beljebb, a Notepad++ nagyon sokat segíthet ebben, ugyanis nem ugrik vissza minden sorban, tehát nem kell minden sorban újra és újra behúzni a kódot, illetve összekapcsolja, hogy melyik kapcsos zárójel melyikkel tartozik össze, nagyobb programoknál ez nagy segítség.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!