Toon posts:

[php & javascript] selected maken van selectbox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik heb een javascriptje die een zogenoemde hoofdgroep / subgroep structuur maakt

in een selectbox selecteer ik een hoofdgroep en vervolgens komen in de volgende selectbox de subgroepen te staan behorend bij de geselecteerde hoofdgroep

dit werkt allemaal prima

nu wil ik het zo maken dat een bepaalde hoofdgroep met een van de bijbehorende subgroepen geselecteerd is

de gegevens voor de hoofdgroeppen komen uit de database
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<?php 
//inporteren van database settings
include ("database.php"); 
//bepalen van de query en uitvoeren
$query = "SELECT school_id, naam FROM inschrijf_school;"; 
$result = mysql_query($query, $connection); 

?> 


<script language="Javascript1.2"> 
<!-- 
var tmpContent='Maak uw keuze... '; 

var arrayHoofdgroepen=new Array( 
new Array(0,'null') 

<?php 
$selected_waarde = 5;

//hier worden de gegevens voor de hoofdgroepen uit de database gehaald
//als $row[school_id] == $selected_waarde dan moet die selected zijn 

while ($row = mysql_fetch_array($result)) { 
     print ",new Array($row[school_id],'$row[naam]')"; 
} 
?> 

); 

var arraySubgroepen=new Array( 
new Array(0,0,'null'), 
new Array(1,1,'Bas'), 
new Array(2,1,'Wim'), 
new Array(3,1,'Andere nassauers') 
); 

function fillOptions(mySource,myField,filter,filterValue) { 
   var sourceLength=mySource.length; 

   //empty optionlist in myField 
   clearList(myField); 

   //fill myField from mySource 
   for (i=1;i<sourceLength;i++) { 
      if (mySource[i][filter]!=filterValue) { 
         myField.options[i]=new Option(mySource[i][1]); 
         myField.options[i].value=mySource[i][0]; 
      } 
   } 
} 

function fillSubgroepen(myValue) { 
   var counter=0; 
   var myField=window.document.forms['zoek'].subgroepen; 

   //empty optionlist in myField 
   clearList(myField); 

   if (myValue!='-') { 
      for (i=1;i<arraySubgroepen.length;i++) { 
         if (arraySubgroepen[i][1]==myValue) { 
            myField.options[counter]=new Option(arraySubgroepen[i][2]); 
            myField.options[counter].value=arraySubgroepen[i][0]; 
            counter++; 
         } 
      } 
   } else clearList(myField); 

    
} 

function clearList(myField) { 
   //empty optionlist in myField 
   for(i=myField.options.length;i>=0;i--) { 
      myField.options[i]=null; 
   } 

   //init hoofdgroepen on "tmpContent" 
   myField.options[0]=new Option(tmpContent);    
   myField.options[0].value=tmpContent;   
} 


//--> 
</script> 

</head> 

<body onLoad="fillOptions(arrayHoofdgroepen,window.document.forms['zoek'].hoofdgroepen,0,0);"> 


    <form name="zoek" method="post" action="verder.php"> 
     
            Hoofdgroepen: 
            <select name="hoofdgroepen" onChange="fillSubgroepen(this.value)"> 

            </select><p> 
Subgroepen: <select name="subgroepen"> 

            </select> 
<input type="submit" value="verder"> 

</form> 
</body> 
</html> 

Heeft iemand een oplossing?

[ Voor 19% gewijzigd door Verwijderd op 06-11-2003 11:38 . Reden: spelfoutjes eruitgehaald ]


  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ik denk dat je even wat duidelijker moet zijn over wat je precies wil en wat er precies niet lukt.

Systeem | Strava


  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 13:52
Misschien iest als dit: :?

PHP:
1
2
3
4
5
6
7
8
9
10
11
$optionHtml = "";
$waarde = 2;
$selectArray = array( 1 => "Bla", 2 => "Sjaak");
foreach($selectArray as $optionValue => $optionName)
{
   if ($waarde == $optionValue)
      $selected = "selected";
   else
      $selected = "";
   $optionHtml .= "<option ".$selected." value=".$optionValue.">".$optionName;
}


En dan later die optionHtml echooen???

[ Voor 23% gewijzigd door Banpei op 06-11-2003 11:56 ]


Verwijderd

Topicstarter
Brakkie schreef op 06 november 2003 @ 11:50:
Ik denk dat je even wat duidelijker moet zijn over wat je precies wil en wat er precies niet lukt.
het resultaat van de code van mij is dus 2 selectboxjes onder elkaar

als ik uit de 1e selectbox school a selecteer komt in de 2e selectbox de docenten van school a te staan

de scholen haal ik uit de database de docenten staan nu ff in de code maar dit komt in de toekomst ook uit de database (is me al gelukt in een test scriptje)

wat nu de bedoeling is is dat er een van de scholen bijvoorbeeld school b geselecteerd is

school b heeft bijvoorbeeld een $row[school_id] van 5 dus ik wil in de code zoiets hebben van als $row[school_id] == 5 dan school 5 selected maken in het selectboxje

ik heb dus geen id hoe ik in die javascript code selected toe kan voegen...

in html gaat dat zo
<option value = "blaat" selected>
<option value = "paashaas">
blaat is dus nu selected...

ik hoop dat dit duidelijker is...

[ Voor 13% gewijzigd door Verwijderd op 06-11-2003 12:38 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

JavaScript:
1
document.forms['test'].elements['selectbox'].selectedIndex = 3;

HTML:
1
2
3
4
5
6
7
8
9
<form id="test" action="#">
  <select name="selectbox">
    <option>optie 1</option>
    <option>optie 2</option>
    <option>optie 3</option>
    <option>optie 4</option>
    <option>optie 5</option>
  </select>
</form>


duidelijk zo?

Intentionally left blank


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zullen we 'm dan maar gelijk moven naar WG? Want het lijkt me meer om een HTML/JS vraag gaan dan om PHP eigenlijk

PW -> WG

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
crisp schreef op 06 november 2003 @ 12:41:
JavaScript:
1
document.forms['test'].elements['selectbox'].selectedIndex = 3;

HTML:
1
2
3
4
5
6
7
8
9
<form id="test" action="#">
  <select name="selectbox">
    <option>optie 1</option>
    <option>optie 2</option>
    <option>optie 3</option>
    <option>optie 4</option>
    <option>optie 5</option>
  </select>
</form>


duidelijk zo?
dit ziet er inderdaad duidelijk uit en het werkt ook

maar ik kan nu geen andere opties selecteren dan degene die ik selected heb gemaakt

en een 2e maar als optie 3 selected is komen de subgroepen van optie 3 er niet bij te staan..

[ Voor 34% gewijzigd door Verwijderd op 06-11-2003 12:57 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

ik snap eigenlijk ook niet waarom je de hoofdGroepen met javascript vult, maar goed. Ik denk dat je het selected maken in je functie fillOptions moet zetten.

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 06 november 2003 @ 13:11:
ik snap eigenlijk ook niet waarom je de hoofdGroepen met javascript vult, maar goed. Ik denk dat je het selected maken in je functie fillOptions moet zetten.
daar had ik hem in staan

maar als je een id hebt hoe ik het anders op zou kunnen lossen, alle sugesties zijn welkom ik ben ook niet echt te spreken over javascript maar weet geen betere oplossing..

is dit bijvoorbeeld ook mogelijk in php?

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 06 november 2003 @ 13:19:
[...]


daar had ik hem in staan

maar als je een id hebt hoe ik het anders op zou kunnen lossen, alle sugesties zijn welkom ik ben ook niet echt te spreken over javascript maar weet geen betere oplossing..

is dit bijvoorbeeld ook mogelijk in php?
ja, zie het voorbeeld van Banpei

En imho is er niets mis met javascript hoor; ik vind het een mooiere taal dan PHP :P

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 06 november 2003 @ 13:24:
[...]

ja, zie het voorbeeld van Banpei

En imho is er niets mis met javascript hoor; ik vind het een mooiere taal dan PHP :P
wat betreft javascript dat is ieders mening natuurlijk
een van de nadelen vind ik dat de source van het script gewoon in de html staat en dat is bij bijvoorbeeld php niet [maar dit is een beetje offtopic]

met het voorbeeld van Banpei kan ik inderdaad een veld selected maken daarvoor heb ik ook wel andere manieren die werken maar in dat voorbeeld heb ik niet meer de hoofdgroepen / subgroepen structuur zitten en daar gaat het juist om...

[ Voor 13% gewijzigd door Verwijderd op 06-11-2003 13:29 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

zet tussen regel 53 en 54 eens het volgende:

PHP:
1
myField.selectedIndex = <?php echo $selected_waarde; ?>;

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 06 november 2003 @ 13:45:
zet tussen regel 53 en 54 eens het volgende:

PHP:
1
myField.selectedIndex = <?php echo $selected_waarde; ?>;
Dit heeft het zelfde effect als crisp's eerdere voorbeeld, hij werkt wel maar een andere waarde selecteren heeft geen effect omdat ie steeds weer terug springt naar de selected waarde, ook de subgroep selectbox word niet gevult...

ik heb misschien zelf al een id om het in php te gaan doen maar dan steeds de pagina refreshen dat heeft als nadeel dat je de pagina dus steeds refreshed maar als voordeel dat je niet je hele tabel in een array hoeft te laden maar alleen de relevante data..

[ Voor 18% gewijzigd door Verwijderd op 08-11-2003 09:37 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 08 november 2003 @ 09:35:
[...]


Dit heeft het zelfde effect als crisp's eerdere voorbeeld, hij werkt wel maar een andere waarde selecteren heeft geen effect omdat ie steeds weer terug springt naar de selected waarde, ook de subgroep selectbox word niet gevult...

ik heb misschien zelf al een id om het in php te gaan doen maar dan steeds de pagina refreshen dat heeft als nadeel dat je de pagina dus steeds refreshed maar als voordeel dat je niet je hele tabel in een array hoeft te laden maar alleen de relevante data..
ik weet het niet hoor, maar de fillOptions functie wordt toch maar 1x aangeroepen - nl onload? Ik heb dit gewoon met je voorbeeldcode getest, en ik heb daar geen last van verspringen en de 2e select werd netjes gevuld.
Of ik snap je probleem niet helemaal, of je doet toch echt iets fout...

Intentionally left blank

Pagina: 1