Hello!
Nemrég volt egy problémám, egy többszintű lenyíló select
adatbázisból.
Micu adott is egy linket ahol az van amit szeretnék, itt az egyik:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Választás</title>
<script>
orszag0=-1
megye0=-1
function torol()
{
db=document.getElementById('lista').options.length
for(i=0;i<db;i++)
{
document.getElementById('lista').options[0]=null
}
}
function csere(mire)
{
if (megye0!=-1)
{
return false
}
mire--
torol();
if (mire>=0)
{
if (orszag0==-1)
{
t=tomb[mire]
orszag0=mire
szoveg="--- Kérem válasszon megyét ---"
megye0=-1
}
else
{
mire=mire+2
t=tomb[orszag0][mire]
megye0=mire
szoveg="--- Kérem válasszon települést ---"
}
newOptionName = new Option(szoveg, 0);
document.getElementById('lista').options[0] = newOptionName;
for(i=2;i<t.length;i++)
{
newOptionName = new Option(t[i][1], t[i][0]);
document.getElementById('lista').options[i-1] = newOptionName;
}
}
}
function inic()
{
orszag0=-1
megye0=-1
torol();
newOptionName = new Option("--- Kérem válasszon országot---", 0);
document.getElementById('lista').options[0] = newOptionName;
for(i=0;i<tomb.length;i++)
{
newOptionName = new Option(tomb[i][1], tomb[i][0]);
document.getElementById('lista').options[i+1] = newOptionName;
}
}
</script>
</head>
<body onLoad="inic()">
<b>JS lista</b><br>
<script>
<?
include('init.php');
/* init.php tartalma
$db_serv="localhost";
$db_user="x";
$db_pass="x";
$database="x";
$connect = mysql_connect($db_serv, $db_user, $db_pass);
mysql_select_db( $database) or die ("Nem lehet megnyitni a köv. adatbázist: $database" .mysql_error() );
*/
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['OrszagID']."_". $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['OrszagID']."_". $sor['MegyeID']."_".$sor['VarosID']."','".$sor['VarosNev']."')\n";
$ki_varos=",";
};
$ki.="\t\t\t)\n\t\t)\n\t)\n";
echo $ki;
?>
</script>
<form>
<table border="0" >
<tr>
<td>Válasszon</td>
<td>
<select name="lista" id="lista" size="1" onChange="csere(this.selectedIndex)" style="width:200px"></select></td>
</tr>
</table>
<input type="submit" name="teszt" value="mehet">
</form>
<a href="#" onClick="inic();return false">Vissza az országhoz</a>
</p>
</body>
</html>
Van több is az oldalon de nekem itthon
egyik sem akar működni.Nem tudom tud e valaki valami problémát ami még nem derült ki, de ha épp egy új megoldást tud valaki az is érdekellne.
Köszi!
<?php
$db_serv="localhost";
$db_user="root";
$db_pass="";
$database="omv";
$connect = mysql_connect($db_serv, $db_user, $db_pass);
mysql_select_db( $database) or die ("Nem lehet megnyitni a köv. adatbázist: $database" .mysql_error() );
?>
Szerintem ez rendben.
Az adatbázist úgy építettem fel ahogy a linken láttam.
Egyszerűen kimásoltam az sql és beraktam.
Az is rendben szerintem.
Ha lefuttatom, megjelenik a lenyíló, hibát nem ír de nincs benne semmi.Csak hogy válassz országot.
És ahogy beírtam a php-t
félig már fut.
1 ország jelenik meg de van benne 16, ha
arra kattintok ott már 2 megye is és azon belül is
2 város.
Csak ezeknél sokkal több van.
Ez mitől lehet?
Nézd meg, hogy a böngészőbe letöltött forrásban nincs-e valami hibakód.
php myadminba próbáld ki ezt a lekérdezést:
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
Minden rendben!
Az adatbázisban volt a hiba már fut rendesen!
A pont már tied, még annyi hogy valahogy lehetne visszalépést tenni a listába a második sorába?
Pl.:
válassz megyét
vissza az országokhoz
utána meg a megyék