Jump to content
GSForum - Segélyvonal

Többszintű legördülő menü


sandor676

Recommended Posts

sandor676

Sziasztok!

 

Tudnátok segíteni abban, hogy az alábbi kódot hogy változtassam meg, hogy 3 helyett 4 legördülő menü legyen?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Választás</title>
<script>
function orszagbeall(x)
{
db=document.getElementById('orszag').options.length
for(i=0;i<db;i++)
 {
 if (x==document.getElementById('orszag').options[i].value)
  {
  document.getElementById('orszag').selectedIndex=i;
  orszag_csere(i)
  break;
  }
 }
}
function megyebeall(x)
{
db=document.getElementById('megye').options.length
for(i=0;i<db;i++)
 {
 if (x==document.getElementById('megye').options[i].value)
  {
  document.getElementById('megye').selectedIndex=i;
  megye_csere(i)
  break;
  }
 }
}
function varosbeall(x)
{
db=document.getElementById('varos').options.length
for(i=0;i<db;i++)
 {
 if (x==document.getElementById('varos').options[i].value)
  {
  document.getElementById('varos').selectedIndex=i;
  break;
  }
 }
}

function orszag_csere(mire)
{
mire--
v=mire
// Régi megye kitörlés
db=document.getElementById('megye').options.length
for(i=0;i<db;i++)
   {
   document.getElementById('megye').options[0]=null
   }
// Régi város kitörlés
db=document.getElementById('varos').options.length
for(i=0;i<db;i++)
   {
   document.getElementById('varos').options[0]=null
   }
if (mire>=0)
   {
newOptionName = new Option("--- Kérem válasszon ---", 0);
document.getElementById('megye').options[0] = newOptionName;
t=tomb[mire]
for(i=2;i<t.length;i++)
   {
 newOptionName = new Option(t[i][1], t[i][0]);
 document.getElementById('megye').options[i-1] = newOptionName;
   }
}
}
function megye_csere(mire)
{
mire--
// Régi megye kitörlés
db=document.getElementById('varos').options.length
for(i=0;i<db;i++)
   {
   document.getElementById('varos').options[0]=null
   }
if (mire>=0)
  {
newOptionName = new Option("--- Kérem válasszon ---", 0);
document.getElementById('varos').options[0] = newOptionName;
t=tomb[v][mire+2]
for(i=2;i<t.length;i++)
   {
 newOptionName = new Option(t[i][1], t[i][0]);
 document.getElementById('varos').options[i-1] = newOptionName;
   }
}
}
</script>
</head>
<body
<?
$onload="";
if (isset($_GET['orszag']))
{
$onload.="orszagbeall(".intval($_GET['orszag']).");";
if (isset($_GET['megye']))
 {
 $onload.="megyebeall(".intval($_GET['megye']).");";
 if (isset($_GET['varos']))
  $onload.="varosbeall(".$_GET['varos'].");";
 }
echo ' onload="' .$onload.'" ';
}
?>
>
<b>JS lista</b><br>
<form>
<table border="0" >
<tr>
 <td>Ország:</td>
 <td>
<select name="orszag" id="orszag" size="1" onchange="orszag_csere(this.selectedIndex)" style="width:200px"></select></td>
</tr>
<tr>
 <td>Megye:</td>
 <td> <select name="megye" id="megye" size="1" onchange="megye_csere(this.selectedIndex)" style="width:200px"></select></td>
</tr>
<tr>
 <td>Város:</td>
 <td> <select name="varos" id="varos" size="1" style="width:200px"></select></td>
</tr>
</table>
<input type="submit" name="teszt" value="mehet">
</form>
<script>
<?
include('../init.php');
mysql_query('set names cp1250');
$sql="select Orszagok.OrszagID, Orszagok.Orszagnev, Megyek.MegyeID,
 Megyek.MegyeNev, Varosok.VarosID, Varosok.VarosNev
 FROM Orszagok Inner Join Megyek on Orszagok.OrszagID=Megyek.OrszagID
 Inner Join Varosok on Megyek.MegyeID = Varosok.MegyeID
 order by Orszagok.Orszagnev,Megyek.MegyeNev,Varosok.VarosNev";
$parancs = mysql_query($sql);
$Orszag_ID=0;
$Megye_ID=0;
$ki_orszag="";
$ki_megye="";
$ki_varos="";
$ki="tomb=new Array(\n";
while ($sor = mysql_fetch_array($parancs))
{
if ($sor['OrszagID']!=$Orszag_ID)
 {
 $ki.=$ki_orszag . "\t new Array(". $sor['OrszagID'].",'".$sor['Orszagnev']."',\n";
 $Orszag_ID=$sor['OrszagID'];
 $ki_orszag="\t\t)\t),\n";
 $ki_megye="";
 $ki_varos="";
 };
if ($Megye_ID!=$sor['MegyeID'])
 {
 $ki.=$ki_megye . "\t\t new Array(". $sor['MegyeID'].",'".$sor['MegyeNev']."',\n";
 $Megye_ID=$sor['MegyeID'];
 $ki_megye="\t\t),\n";
 $ki_varos="";
 };
$ki.=$ki_varos . "\t\t\t new Array(". $sor['VarosID'].",'".$sor['VarosNev']."')\n";
$ki_varos=",";
};
$ki.="\t\t\t)\n\t\t)\n\t)\n";
echo $ki;
mysql_free_result($parancs)
?>
newOptionName = new Option("--- Kérem válasszon ---", 0);
document.getElementById('orszag').options[0] = newOptionName;
for(i=0;i<tomb.length;i++)
  {
newOptionName = new Option(tomb[i][1], tomb[i][0]);
document.getElementById('orszag').options[i+1] = newOptionName;
  }
v=0
</script>
</p>
</body>
</html>

Link to comment
Share on other sites

payskin

Ebben a kódban egyetlen legördülő menü sincs. Már a kifejezés klasszikus értelmében. Legördülő menü az, amit a Windows programok tetején látsz: menüpontok, amikre ha rákattintasz, legördül egy menü.

 

Nem segíthetnék inkább abban, hogy elsajátítsd a webfejlesztés alapjait? Múltkori beszélgetésünkből szemlátomást egy szót nem sikerült hasznosítani... :(

 

Feltételezve, hogy ezt a kódot nem te írtad -- különben nem keresnél benne legördülő menüt --, azt, aki írta, el kéne tiltani a billentyűzettől, mert közveszélyes internet-szennyezést követ el. Annyi ponton sért mindent, ami szent ebben a szakmában, hogy a középkorban bottal ütve kergették volna ki a városból KONTÁRT kiáltva.

 

Nem szeretek ilyen kódot látni. Főleg nem szeretek ezzel kapcsolatos kérdésekre válaszolni, vagy beletúrni ebbe a szarba és megkavarni.

 

De ha elmondod értelmesen, hogy mit szeretnél, talán tudunk segíteni... Gondolom négy legördülő listát szeretnél...

Link to comment
Share on other sites

sandor676

Szia!

 

Igen, négy legördülő listát szeretnék.

Pl.: Ország -> Megye -> Város -> Iskola

Link to comment
Share on other sites

sandor676

Nagyon örülnék annak is, ha tudnátok segíteni abban, hogy elsajátítsam a webfejlesztés alapjait.

Kérlek, ha tudtok segítsetek az egygyel korábbi hozászólásom megoldásában is.

 

Nagyon szépen köszönöm!

Link to comment
Share on other sites

payskin
Igen, négy legördülő listát szeretnék.

Pl.: Ország -> Megye -> Város -> Iskola

 

Az adatok ténylegesen a rendelkezésre állnak?

 

Tehát van egy adatbázisod, amiben van

  • egy Országok tábla (OrszagID, Orszagnev adatokkal)
  • egy Megyek tábla (MegyeID, OrszagID, Megyenev adatokkal)
  • egy Varosok tábla (VarosID, MegyeID, Varosnev adatokkal)
  • és egy Iskolak tábla (IskolaID, VarosID, Iskolanev adatokkal)

 

Ezek tutira megvannak? Ha nincs, akkor mi a terv?

 

Ezt csak azért kérdezem, hogy van-e értelme egyáltalán belekezdeni a projektbe. Négy legördülőt egymás mellé tenni, az ennyi:

 

<select name="name">
   <option value="0">Válassz nevet!</option>
   <option value="1">Géza</option>
   <option value="2">Lajos</option>
   <option value="3">Péter</option>
</select>
<select name="fruit">
   <option value="0">Válassz gyümölcsöt!</option>
   <option value="1">Alma</option>
   <option value="2">Körte</option>
   <option value="3">Szőlő</option>
</select>
<select name="car">
   <option value="0">Válassz autót!</option>
   <option value="1">Fiat</option>
   <option value="2">Porsche</option>
   <option value="3">Suzuki</option>
</select>
<select name="color">
   <option value="0">Válassz színt!</option>
   <option value="1">Kék</option>
   <option value="2">Piros</option>
   <option value="3">Sárga</option>
</select>

 

Minegyik egy

 

Szóval, ez a része faék.

 

Ami a bonyolultságot okozza, hogy

 

1. legyenek adatok, amikkel a legördülőket feltöltjük,

 

2. ebben a speciális esetben össze kell hangolni a legördülők értékeit, tehát ha az ember választ egy országot, akkor annak az országnak a városait kell betölteni a város legördülőbe. Ha egy másik országot választ, akkor annak a városait.

 

Sacc/kb. ennyi. Tehát kezdjük az elsővel, az adatokkal. Vannak-e?

Link to comment
Share on other sites

sandor676

Igen, vannak adatok. Ezekhez készítettem egy adatbázist az alábbi táblákkal: (A táblákat feltöltöttem adatokkal)

 

Országok tábla mezői:

OrszagID

Orszagnev

 

Megyek tábla mezői:

MegyeID

MegyeNev

OrszagID

 

Városok tábla mezői:

VarosID

VarosNev

MegyeID

 

Iskolak tábla mezői:

IskolaID

IskolaNev

VarosID

Link to comment
Share on other sites

payskin

Jó, akkor mesélj már erről egy picit többet. Mi ez? Honnan van? Ki csinálta? Min fut? Milyen szerveren, milyen PHP-n, milyen MySQL-en? Mennyire férsz hozzá a szerverhez? Mennyire értesz ezekhez a dolgokhoz? Azért kérdezem, mert ha írnék is valamit, ami ezt a feladatot ellátja, az biztos, hogy nem ebbe az izébe túrok bele. Kérdés, van-e ennek értelme?

 

Például a fenti kód sima mysql_akármi parancsokat használ az adatbázis eléréséhez. 2015-ben nem használjuk már ezeket, a napokon belül megjelenő PHP7-ben nem is lesznek már benne. Ezek helyett a mysqli vagy inkább PDO kiegészítéseket használjuk. Ha tudjuk. A te szervered esetében ezzel mi a helyzet? Ha megírom ennek a dolognak az adatbázis-kezelő részét PDO-ban, azzal tudsz valamit kezdeni? Például tudsz PDO-csatlakozást írni hozzá? (A jelenlegi MySQL-csatlakozás valószínűleg a kód közepén betöltött init.php-ban van, de az nem jó, a PDO teljesen más.)

 

Programozni tanulni fórumon keresztül nem lehet. Mint ahogy összetett problémákat megoldani sem. Fogalmunk nincs, mi ez a kód, honnan jön, minek a része, mi van előtte, mi van utána, mi történik a kiválasztott adattal stb. Szóval érted, sem én, sem senki nem tud az információk hiányában olyan kódot írni neked, amit bemásolsz/feltöltesz valahova, és 1:1-ben működni fog, mindenképpen kell valaki, aki ért ehhez egy kicsit, és ahhoz a valamihez igazítja, aminek ez a mostani kód a része. Ha ez a valaki te vagy, akkor oké. Ha nem te vagy, és nincs ilyen valaki körülötted, akkor nem igazán van értelme folytatni ezt. Mondjuk, akkor is el tudom nagyjából mondani, hogy ebbe a kódba hogyan rakj iskolát, de az mindkettőnk számára nagyon fájdalmas lesz, szerintem.

Link to comment
Share on other sites

sandor676

Linux szerveren fut, MySQL verzió: 5.1.66, PHPMyadmin verzió: 3.3.7 és 5-ös PHP fut rajta.

Fájlokat tudok felmásolni, + adatbázisokat és táblákat tudok létrehozni.

A HTML alapjai megvannak, php-hoz minimálisan értek, egy kapcsolódást és adat feltöltést megtudok csinálni.

 

Írtam egy alap fájlt, tudsz segíteni a folytatásban?

 

<form name="adatok" action="feldolgozo.php" method="POST">
<table align="center"> 
 <tr>
   <td><B>Név</B></td>
   <td><input type="text" name="nev"> </td>
 </tr>
 <tr>
   <td><B>E-mail cím</B></td>
   <td><input type="text" name="e_mail"> </td>
 </tr>
 <tr>
   <td><B>Születési dátum:</B></td>
   <td><input type="text" name="szul_datum"> </td>
 </tr>
 <tr>
   <td><B>Cím:</B></td>
   <td><input type="text" name="cim"> </td>
 </tr>
 <tr>
   <td><B>Ország:</B></td>
   <td><select name="orszag">
   <option value="">Válassz országot!</option>
       //Itt kellene kiíratni az adatbázisban tárolt országokat
       </select></td>
 </tr>
 <tr>
   <td><B>Megye:</B></td>
   <td><select name="megye">
   <option value="">Válassz megyét!</option>
       //Itt kellene kiíratni az adatbázisban tárolt megyéket
       </select></td>
 </tr>
 <tr>
   <td><B>Város:</B></td>
   <td><select name="varos">
   <option value="">Válassz várost!</option>
       //Itt kellene kiíratni az adatbázisban tárolt városokat
       </select></td>
 </tr>
 <tr>
   <td><B>Iskola:</B></td>
   <td><select name="iskola">
   <option value="">Válassz iskolát!</option>
       //Itt kellene kiíratni az adatbázisban tárolt iskolákat
       </select></td>
 </tr>
</table>
</form>

Link to comment
Share on other sites

payskin

Az URL-eket kiszedtem.

 

Kezdjük az alapoknál. Egy HTML fájl így néz ki:

 

<!DOCTYPE html>
<html lang="hu">
<head>
   <meta charset="utf-8">
   <title>Ide írjuk az oldal címét</title>
   <!-- itt töltjük be a CSS-eket -->
</head>
<body>
<!-- itt van az oldal kódja -->
<!-- az oldal végén töltjük be a Javascripteket -->
</body>
</html>

 

Ez egy HTML oldal.

 

Táblákat 1999 óta nem használunk dokumentumstruktúra kialakításához, align attribútumunk sincs nagyjából pont azóta. Bármiféle formázás vagy kinézet kialakításához CSS-t használunk. Űrlapmezők megnevezését

 

<!DOCTYPE html>
<html lang="hu">
<head>
   <meta charset="utf-8">
   <title>Ide írjuk az oldal címét</title>
   <!-- itt töltjük be a CSS-eket -->
</head>
<body>
<!-- itt van az oldal teteje, címsorok, fejléc akármi -->
<section>
   <form name="adatok" action="feldolgozo.php" method="POST">
       <div class="form-field">
           <label for="person_name">Név:</label>
           <input type="text" id="person_name" name="nev">
       </div>
       <div class="form-field">
           <label for="person_email">E-mail:</label>
           <input type="text" id="person_email" name="e_mail">
       </div>
       <div class="form-field">
           <label for="person_dob">Születési dátum:</label>
           <input type="text" id="person_bday" name="szul_datum">
       </div>
       <div class="form-field">
           <label for="person_addr">Cím:</label>
           <input type="text" id="person_addr" name="cim">
       </div>
       <div class="form-field">
           <label for="country">Ország:</label>
           <select id="country" name="orszag">
               <option value="0">Válassz országot!</option>
           </select>
       </div>
       <div class="form-field">
           <label for="area">Megye:</label>
           <select id="area" name="megye">
               <option value="0">Válassz megyét!</option>
           </select>
       </div>
       <div class="form-field">
           <label for="city">Város:</label>
           <select id="city" name="varos">
               <option value="0">Válassz várost!</option>
           </select>
       </div>
       <div class="form-field">
           <label for="school">Iskola:</label>
           <select id="school" name="varos">
               <option value="0">Válassz iskolát!</option>
           </select>
       </div>
       <div class="form-buttons">
           <button type="submit">Elküld</button>
       </div>
   </form>
</section>
<!-- az oldal végén töltjük be a Javascripteket -->
</body>
</html>

 

Egyelőre itt tartunk. Az első feladat annak eldöntése, hogy akarjuk-e támogatni azokat, akiknek nincs vagy le van tiltva a JS a böngészőjében.

 

Ha igen, akkor

  • be kell gyűjtenünk az adatbázisból az országokat, megyéket, városokat, iskolákat (PDO)
  • az éppen soron következő -től kell egy visszalépést biztosító gomb is
  • az összes többi
  • a feldolgozo.php-ban minden oldalbetöltésnél kezelni kell a kiválasztott adatokat, és fel kell ismerni, amikor még nincs meg minden --> vissza az űrlapra, következő

 

Ha nem, akkor

  • be kell gyűjtenünk az adatbázisból az országokat, megyéket, városokat, iskolákat (PDO)
  • az egészet tok-vonó át kell adni a Javascriptnek
  • meg kell jeleníteni az első
  • kell egy eseményvezérlő, ami figyeli a tartalmát

 

Nagyjából, vázlatosan. Folyt. köv.

Link to comment
Share on other sites

sandor676

Szia!

 

Az első, vagyis akarjuk támogatni azokat, akiknek nincs vagy le van tiltva a JS a böngészőjében.

Link to comment
Share on other sites

kléni

Az első feladat annak eldöntése, hogy akarjuk-e támogatni azokat, akiknek nincs vagy le van tiltva a JS a böngészőjében.

Ne már, 0.2%-nál járunk, és nem felfelé kéne menni. :D

Link to comment
Share on other sites

payskin

kléni: Gondolatébresztőnek. Valahol van egy ennél is jobb videója is a témában, a Youtube-on nem találtam. Kapjunk a fejünkhöz!

 

Há, megvan, csak a hülye címe miatt a lényeg nem látszik a Youtube-on:

 

Link to comment
Share on other sites

kléni

Ez jó, de biztos vagyok abban, hogy neki ilyesmire nem lesz most szüksége. :) Épp az alapokat magyarázod neki, ne rögtön ott kössünk már ki, hogy azért csináljuk így, mert jó dolog JS nélkül dolgozni. És igen, kapja be az összes JS-t nem használó felhasználó, amiért lehetőséget adott arra, hogy a cikkben leírtak szerint kelljen dolgoznunk. :D Amennyire átfutottam a témát, nekem úgy tűnt, nem is szükséges ehhez a dologhoz JS, szóval tök mindegy. De csak mert valamit meg lehet tenni, az nem jelenti azt, hogy meg is éri, hiszen komolyabb oldalaknál JS-es és JS mentes változat készítése jóval több időt venne igénybe, az idő meg pénz.

 

"Which, if the browser doesn’t understand webkit gradient, results in a white button with white text. Only because the developer was too lazy to first define a background colour the browser could fall back on. Instead, this code assumes that the user has a webkit browser. This is not progressive enhancement."

Eddig olvastam. Igaza van, az tényleg az. De miért nem sorolta fel a másik 60 módszert, amire még szükség van, hogy MINDEN böngésző MINDEN módszere támogatva legyen? Miért nem említette meg, hogy ezt az összes színátmenetes résznél be kéne másolni, és hogy ez rengeteg pluszmunkát igényelne a cégnek? A világ mindig is úgy működött, hogy ami nem éri meg, azt nem csinálják meg. Mindezt azért, hogy 20 millió felhasználóból 20-nál is látszódjon a színátmenet. Tehát a cég legyen a minimumnál veszteségesebb a figyelmetlen, buta, hozzá nem értő felhasználók miatt. Kösz, ebből én nem kérek, és nem érdekel, hogy micsoda rossz programozónak leszek e miatt titulálva.

Link to comment
Share on other sites

Bowie
a figyelmetlen, buta, hozzá nem értő felhasználók

 

Tehát pl. a NoScript használata egyenlő a figyelmetlenséggel, a butasággal és a hozzá nem értéssel? Ok.

 

Én tökre szeretem, amikor egy oldalt nem kell a NoScript fehérlistájához hozzáadni ahhoz, hogy egyáltalán működjön.

Link to comment
Share on other sites

kléni

A noscript egy külön kategória, mert az célzott letiltás. Átlagos netezéshez nincs rá szükség, mert létezik 5 kbps-nél gyorsabb net, és még a kávéfőzőnek sem fog egy 5 mp alatt megjelenített oldal esetében 1 mp-nél tovább tartani a js kezelése, akinek meg olyan gyenge gépe van, érje be azzal.Aki proxy-zik, vagy paranoiás, az ne akarja, hogy hozzá igazodjanak a programozók. Miért is használsz te noscriptet globálisan?

Link to comment
Share on other sites

Bowie

Szerintem te nem érted, miért használnak az emberek NoScriptet.

Link to comment
Share on other sites

payskin
Amennyire átfutottam a témát, nekem úgy tűnt, nem is szükséges ehhez a dologhoz JS, szóval tök mindegy.

 

:huh: Egymástól függő, tartalomváltoztató

Link to comment
Share on other sites

sandor676

Szerintem haladhatunk az első javaslatod alapján: vagyis akarjuk támogatni azokat, akiknek nincs vagy le van tiltva a JS a böngészőjében.

Link to comment
Share on other sites

kléni

Szerintem te nem érted, miért használnak az emberek NoScriptet.

Elmagyarázhatod. :)

Link to comment
Share on other sites

[OP]Destroy-man

Tor háló és a mi mögötte van. :démonikacaj:

 

De hogy a fő témához is hozzászóljak. Én ajaxal tölteném fel a legördülőket, de ahhoz meg ugye JS kell. ;)

Link to comment
Share on other sites

payskin

Nem felejtettem el, csak nincs időm.

Link to comment
Share on other sites

sandor676

Rendben, előre is köszi.

Link to comment
Share on other sites

  • 5 months later...
sandor676

Szia!

 

Ha lesz időd tudjuk folytatni?

Köszi

Link to comment
Share on other sites

payskin

LOL, totál elfelejtettem. Hát, ennyit rólam. :upsz: Mindjárt megnézem, hol tartottunk.

Link to comment
Share on other sites

sandor676

Köszi :)

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...