doctorwho 0 Share Posted November 8, 2012 Sziasztok! Ismét a segítségeteket szeretném kérni. Van egy html oldalam, amiben select, option megoldással egy legördülõ listában fel vannak sorolva témák. Hogy tudom azt megcsinálni, hogyha az egyiket kijelöltem majd rámegyek a kiválaszt gombra, akkor a megfelelõ oldalra ugrik. Köszönöm a segítségeteket! Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted November 8, 2012 A gombra meghívsz egy php oldalt, ami kiértékeli a legördülõ mezõ tartalmát és a kívánt url-t elhelyezi a $cUrl változóba, majd egy header("Location: ".$cUrl); hívással elküldöd a megfelelõ oldalra. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 8, 2012 (edited) Szia! Azt írja, hogy az oldal nem megfelelően van átirányítva. Tudnál ide írni általánosságban egy kódot? Köszi Edited November 8, 2012 by doctorwho Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 8, 2012 Ha ilyen hibát kapsz, akkor ugyan arra a fájltra irányít vissza. Lehetséges, hogy elírtad az url-t. Az átirányítást vedd ki, és írd ki a változót, aholva átirányítanád, hogy tudd, mi a baj vele. Ha például üres, akkor fentebb valamit elírtál. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 8, 2012 <?php $cUrl="valaszt"; ("Location: ".$cUrl); ?> Mit javítsak benne? Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 8, 2012 http://php.net/manual/en/reserved.variables.post.php Így tudod a select értékét beírni a változóba. Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 8, 2012 <?php $cUrl="valaszt"; ("Location: ".$cUrl); ?> Erre nem azt mondja a PHP, hogy nem megfelelően van átirányítva, hanem, hogy mi a búbánatos retek van a 3. sorban? Úgyhogy itt álljunk meg, és lássuk a először a form html kódját! [ code ] és [ /code ] jelölők közé másold be ide, csak ne tegyél bele szóközt, mint most én, és akkor ilyesmi lesz az eredmény, mikor elküldöd a hozzászólást, és mindannyian kulturált keretek között tudjuk szemlélni! <form name="tralala" id="valami" action="én-vagyok-az-url-ahova-a formot-küldjük-vagy-üres-vagyok-úgy-is-jó" method="post"> <select name="nyeremeny"> <option value="0">Okvetlenül válassz!</option> <option value="1">Egyes ajtó, nyílj ki!</option> <option value="2">Kettes ajtó, nyílj ki!</option> <option value="3">Megnézem, mi van a hármas ajtó mögött</option> </select> <button type="submit">Igen, Vágó úr, biztos vagyok</button> </form> Ha 39 option van benne, elég csak az első 3-4-et bemásolni, ok? Aztán majd onnan lépünk tovább okosan. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 Szia! Köszi, eddig megvagyok. Mehetünk tovább. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Teszt</title> </head> <body> <form action="valaszt.php" method="POST"> <table align="center" width="400" border="0"> <tr> <th scope="col"><img src="logo.png" width="117" height="132" /></th> <th scope="col">Teszt</th> </tr> </table> </head> <body> <table align=center cellspacing=15> <tr> <td><b>Kérlek válassz kart:</b></td> <td> <select name"karok"> <option value="ajk">Állam -és Jogtudományi Kar</option> <option value="btk">Bölcsészettudományi Kar</option> <option value="htk">Hittudományi Kar</option> </select> </td> </tr> </table> <p align="center"> <button type="submit">Kiválaszt</button> </p> </form> </body> </html> Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 9, 2012 Ennek valahogy így kellene kinéznie, hogy szabályos, szép, működőképes, és átlátható legyen: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Teszt</title> </head> <body> <form action="valaszt.php" method="post"> <p> <img src="logo.png" /> Teszt </p> <p>Kérlek válassz kart: <select name="karok"> <option value="ajk">Állam -és Jogtudományi Kar</option> <option value="btk">Bölcsészettudományi Kar</option> <option value="htk">Hittudományi Kar</option> </select> </p> <input type="submit" name="kuldes" value="Kiválaszt" /> </form> </body> </html> Egymás mellé igazításhoz nem kell táblázat. A head-ot kétszer zártad le, és a body-t is kétszed nyitottad meg. A select name attribútuma után lemaradt a =, így nem is volt neki neve, a későbbiekben nem is küldte el az értékét a php fájlnak. Elküdő gombnak button helyett használj input-ot. A html5 megjelent már egy ideje, használd! Látod, sokkal egyszerűbb vele felépíteni a fejlécet is. Balázs várjuk meg a következő lépéssel. <code> helyett kell, hogy átalakuljon formázottra a kód itt a fórumon. Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 Köszi! Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 9, 2012 Jól sejtettem, hogy a probléma még nem a programozás szintjén van, hanem az alapoknál. Mondanám, hogy a téma tetején van egy FIGYELEM! című doboz, és az abban leírtak esetedben hatványozottan érvényesek, de ezzel persze te nem leszel előbbre, nekem viszont nincs se időm, se kedvem, meg az utóbbi években kicsit belefáradtam, hogy falra hányt borsó formájában próbáljam meg átadni a tudásom. (Vagy csak rossz napom van, tegnap meg nem volt az.) Nem tudom, hogy olvasol-e PC Worldöt, amennyiben igen, úgy nagyon ajánlanám a 3-4 évvel ezelőtti Weboldalkészítő suli cikkeit (fent vannak a neten is), hasznodra lehetnének. Mivel Kléni még lelkes, rábízom, hogy írjon neked egy egyszerű működő példát, aztán lépjünk túl az egészen eldöntheted, hogy érteni is akarod a dolgot, vagy csak egy egyszeri kaland volt. Az e-mailes dolognál dettó ezt kéne tenni, csak nagyon szépen kérem, hogy azt a hülyeséget ne kövessük el, hogy közvetlenül, szűrés nélkül használjuk a $_GET-ben, $_POST-ban jövő adatokat, mert sírva fakadok. Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 9, 2012 Ha az általam írt példát követed, a valaszt.php-nak így kellene kinéznie: <?php if (!isset($_POST["karok"])) header("Location: form.php"); switch ($_POST["karok"]) { case "ajk" : case "btk" : case "htk" : header("Location: ".$_POST["karok"].".php"); default: header("Location: form.php"); } ?> Ha nincs karok az elküldött adatok között (például gönbészőből nyitotta meg valaki a fájlt), vagy a select elküldött értéke más, mint amit mi szeretnénk (konzolból át lehet írni), a kiindulási fájlra térünk vissza. Ha viszont jó, akkor átirányítjuk a megfelelő fájlra. Szerintem, ha csak ez a 3 opció van, érdemes lenne egy listába írni linkekkel, és nincs is szükség erre az átirányító programra. Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 9, 2012 Kösz, Kléni! Link to comment Share on other sites More sharing options...
doctorwho 0 Author Share Posted November 9, 2012 Nagyon szépen köszönöm mindenkinek a segítséget! Link to comment Share on other sites More sharing options...
sandor676 0 Share Posted November 13, 2012 Kipróbáltam ezt a kódot. <?php if (!isset($_POST["karok"])) header("Location: form.php"); switch ($_POST["karok"]) { case "ajk" : case "btk" : case "htk" : header("Location: ".$_POST["karok"].".php"); default: header("Location: form.php"); } ?> Nálam nem mûködik. Én is ilyen legördülõ menübõl akarok kiválasztani dolgokat, de mindig visszadobja a kezdõ oldalt. Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 13, 2012 Használd a fentebb lévõ form kódot is. Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 13, 2012 A default elé, a header(...) után tegyél be egy break-et vagy egy exit-et! <?php if (!isset($_POST['karok'])) { header('Location: form.php'); exit; } switch ($_POST['karok']) { case 'ajk' : case 'btk' : case 'htk' : header('Location: ' . $_POST['karok'] . '.php'); exit; default: header('Location: form.php'); exit; } A header() kiadása után ugyanis NEM ÁLL MEG a PHP futása. A böngésző megkapja ugyan, hogy mennie kell máshova, de amíg ezt "lereagálja", azalatt a PHP fut tovább, a fenti esetben például simán rámegy a default: ágra, és végül a form.php-ra küldi vissza a böngészőt. Épp ezért ezt elegánsan úgy szokták megoldani, hogy function redirect($url) { header('Location: ' . $url); exit; } És akkor nem kell mindenhol headerezni, meg exitelni, hanem elég a redirect functiont használni. Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 13, 2012 Hopp, az tényleg kimaradt. Én egy külön függvényt használok átirányításra, és utólag megnézve abban is benne van. Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 13, 2012 Esetleg, ha meg akarunk halni a szépség oltárán, és hódolni az 1 helyen lépünk be, 1 helyen lépünk ki irányelvnek, akkor... <?php $ide_megyunk = 'form.php'; if (isset($_POST['karok'])) { switch ($_POST['karok']) { case 'ajk' : case 'btk' : case 'htk' : $ide_megyunk = $_POST['karok'] . '.php'; break; } } redirect($ide_megyunk); + a fenti redirect function... Sőt, mivel én nem kimondottan szeretem a switchet: <?php $ide_megyunk = 'form.php'; if (isset($_POST['karok']) && preg_match('/^(ajk|btk|htk)$/', $_POST['karok'])) { $ide_megyunk = $_POST['karok'] . '.php'; } redirect($ide_megyunk); + a fenti redirect function... PHP Szabadegyetem De mindjárt jön Pjotr, és úgy helyretesz minket, öröm lesz nézni! Link to comment Share on other sites More sharing options...
kléni 7 Share Posted November 13, 2012 Egyébként ehhez hogy-hogy volt kedved? Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 13, 2012 Bent ültem még a melóhelyen, már félórája nem dolgoztam, de vártam arra, hogy a srácok három nagyon régi gép élveboncolásából összerakjanak egy használhatót. Úgyhogy épp nem volt jobb dolgom... De ma amúgy sincs rossz napom. Link to comment Share on other sites More sharing options...
Pjotr 9 Share Posted November 13, 2012 Eigen, a switch-case és a regexp-es megoldás hasonlóan rossz, mintkettő annyira rugalmas, mint az öntöttvas. A lehetőségeket érdemesebb egy kollekcióba rakni, majd a megfelelőt esetleg case-insensitive módon keresni (Unix/Linux rendszereken nyilván lehet szívás, de ezt is meg lehet oldani). Link to comment Share on other sites More sharing options...
payskin 946 Share Posted November 13, 2012 Na, mondtam. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now