Witam. Posiadam następujący skrypt do wypełniania selectów w zależności od wcześniejszego wyboru. Wybór pomiędzy dwoma selectami działa poprawnie. Dołożenie trzeciego selecta skojarzonego z dwoma poprzednimi jest tym co chcę osiągnąć.
Select 1 - wybieram imiona z bazy
Select 2 - wybieram nazwiska z bazy skojarzone z wybranym wcześniej imieniem (redirect)
Select 3 - (niezaimplementowane) - wybieram pesel dla wybranego wcześniej imienia i nazwiska.(redirect2)
<form name="doublecombo">
<p>
<select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
<?
include 'db.php';
$TABLE_TABELE="awizacja";
$result1 = pg_query ($conn, "SELECT distinct imiekierowcy FROM ".$TABLE_TABELE." order by 1"); if (!$result1) {
echo "Wystąpił błąd przy pobieraniu danych.\n"; }
if ($result1)
{
for ($licznik1=0;$licznik1<$count1;$licznik1++)
{
echo '<OPTION value="'.$arr[0].'">'; }
}
?>
</select>
<select name="stage2" size="1" onChange="redirect2(this.options.selectedIndex)">
<option value="Wybierz">----</option>
</select>
<select name="stage3" size="1">
<option value="Wybierz">----2</option>
</select>
<input type="button" name="test" value="Wczytaj!"
onClick="go()">
</p>
<?php
/*
Double Combo Script Credit
By Website Abstraction (www.wsabstract.com)
Over 200+ free JavaScripts here!
*/
var groups=document.doublecombo.example.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
';
//$j=0;
$result2 = pg_query($conn, "SELECT DISTINCT imiekierowcy FROM awizacja"); //$row = pg_fetch_array($result2,1,PGSQL_NUM);
if ($result2)
{
for ($licznik1=0;$licznik1<$count1;$licznik1++)
{
//echo $arr[0].' ';
$result3 = pg_query($conn, "SELECT DISTINCT nazwiskokierowcy FROM awizacja WHERE imiekierowcy='{$arr[0]}'"); if ($result3)
{
for ($licznik2=0;$licznik2<$count2;$licznik2++)
{
//echo $arr2[0].'<BR>';
echo "group[$licznik1][$licznik2]=new Option(\"".$arr2[0]."\",\"".$arr[0]."\")\n"; }
}
}
}
echo 'var temp=document.doublecombo.stage2
function redirect(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
function go(){
location=temp.options[temp.selectedIndex].value
}
</script>
';
//obsluga trzeciego selecta
var groups=document.doublecombo.stage2.options.length
var group=new Array(groups)
for (i=0; i<groups; i++)
group[i]=new Array()
';
$TABLE_TABELE="awizacja";
//$j=0;
$result4 = pg_query($conn, "SELECT DISTINCT imiekierowcy FROM awizacja"); if ($result4)
{
for ($licznik4=0;$licznik4<$count4;$licznik4++)
{
$result5 = pg_query($conn, "SELECT DISTINCT nazwiskokierowcy FROM awizacja WHERE imiekierowcy='{$arr[0]}'"); if ($result5)
{
for ($licznik5=0;$licznik5<$count5;$licznik5++)
{
$result6= pg_query($conn, "SELECT peselkierowcy FROM awizacja WHERE imiekierowcy='{$arr4[0]}' and nazwiskokierowcy='{$arr5[0]}'");; if ($result6)
{
for ($licznik6=0;$licznik6<$count6;$licznik6++)
{
echo "group[$licznik4][$licznik5][$licznik6]=new Option(\"".$arr6[0]."\",\"".$arr5[0]."\",\"".$arr4[0]."\")\n"; }
}
}
}
}
}
echo 'var temp=document.doublecombo.stage3
function redirect2(x){
for (m=temp.options.length-1;m>0;m--)
temp.options[m]=null
for (i=0;i<group[x].length;i++){
temp.options[i]=new Option(group[x][i].text,group[x][i].value)
}
temp.options[0].selected=true
}
';
S
?>
Moim zdaniem funkcja redirect2 w tym momencie powinna przyjmować dwa argumenty, imię i nazwisko aby wszystko sprawnie działało. Mogę się mylić i funkcja redirect w wyjściowej postaci wystarczy. Proszę o pomoc przy rozbudowie skryptu i wszelkie uwagi.
Pozdrawiam
Powód edycji: dodałem tag i zmodyfikowałem temat (cysiaczek)