break :)
Sziasztok!
Volt egy fájl, ami egy változó alapján eldöntötte, hogy mit is fog csinálni. A változónak nagyon sok értéke lehetett a fájl több mint 1000 soros lett :-/ Ezt megelégelve a következőre módosítottam a dolgokat:
...
case 'vmi' : include('vmi.php'); break;
...
Ezzel most meg az a gond, hogy igen gyakran használtam a break utasítást, és az most átkerült a vmi.php-ba :| Csakhogy így meg nem tudja a szerencsétlen, hogy mire vonatkozik a break!
Hogy tudnám megoldani, hogy bármikor a beszúrt fájl végére, vagy a "fő" fájl switch utasítás végére tudjak ugrani (goto szerű utasítás nélkül)?
■ Volt egy fájl, ami egy változó alapján eldöntötte, hogy mit is fog csinálni. A változónak nagyon sok értéke lehetett a fájl több mint 1000 soros lett :-/ Ezt megelégelve a következőre módosítottam a dolgokat:
...
case 'vmi' : include('vmi.php'); break;
...
Ezzel most meg az a gond, hogy igen gyakran használtam a break utasítást, és az most átkerült a vmi.php-ba :| Csakhogy így meg nem tudja a szerencsétlen, hogy mire vonatkozik a break!
Hogy tudnám megoldani, hogy bármikor a beszúrt fájl végére, vagy a "fő" fájl switch utasítás végére tudjak ugrani (goto szerű utasítás nélkül)?
függvények? osztályok?
Nem azt mondom, hogy mindenáron szabadulj meg a break utasításoktól ill. switch szerkezetektől, de azért ahova nem kell oda ne használd!
Szóval a következőt csiná
Van egy központi fájl, ez az index.php . Hogy mi jelenik meg a felhasználónak, azt egy ID alapján dönti el az index.php . Tehát ott az megy, hogy
...
case '03' : $file = 'regisztracio.php'; break;
...
include($file);
Itt nincs semmi gond, ez így mükszik.
Namost ennek a fájlnak az elején van az, hogy
include('action.php');
Ez a fájl, a $_POST['act'] vagy $_GET['act'] alapján dönti el, hogy mit csinál (már ha egyáltalán éppen léteznek ezek a változók). A bibi itt kezdődik.
Ugyanis ezek úgy működtek, pl:
...
case 'regisztracio' :
if( !isset($_POST['nev'] )
{
$_hibauzenet = "Nincs megadva a név.<br>";
$_pgID = '03';
BREAK;
}
elseif( ... (további ellenőrzés)
...
(művelet az adatokkal)
$_pgID = '04';
BREAK;
Ez most csak egy példa volt. Még ezt könnyen tudnám javítani, mert if-else-vel megoldható, de vannak ellenőrzések, amikor nem! (pl hogy ha fájl feltöltés is van, akkor ugye az egy eset, hogy nincs megadva semmi, és akkor nem is kell ellenőrizni, hogy fel van-e töltve a fájl, ugyanakkor ha van megadva vmi, akkor ellenőrizni kell, hogy feltöltésre került-e. És mindkettő után ugyan azt kéne csinálni. If-else-vel ez nem megy, mert átláthatatlan is lesz, és/vagy ismételnem kell egyes kódsorokat :-/ )
Namost nem szeretnék 100 fv-t definiálni, hogy ekkor ezt csináld, akkor meg azt. Persze ha nincs jobb ötlet, kénytelen leszek :-/
De mit is akarsz csinálni?
---jul
ok, meggyőztetek :)
Egyébként:
Amikor érkezik egy form, akkor abban van egy olyan változó, hogy act. Ilyen pl, a $_POST['act']=regisztracio. Namost ez alapján dönti el a program, hogy milyen adatok érkeznek, és azokkal mit is kell csinálni, továbbá hogy ha minden rendben, akkor hova "ugorjon". Így a form mindig ugyan az (na, mondjuk nem ezért lett így csinálva :D ) :
<form action="index.php">