Thread: [Phphtmllib-devel] multiple select box
Status: Beta
Brought to you by:
hemna
From: winston r. <win...@al...> - 2002-06-05 11:08:36
|
SGksDQpNdXN0IHNheSBncmVhdCBjbGFzcywgaXQncyBtYWRlIG15IGpvYiBhIGhlbGwgb2Yg bG90IGVhc2llci4NCk5pY2Ugc3RhbmRhcmQsIGNsZWFuIGVhc3kgdG8gcmVhZCBIVE1MLiBK dXN0IGEgc21hbGwgcXVlcnkuDQpJIGhhdmUgbG9va2VkIHRocm91Z2ggdGhlIGNsYXNzZXMg YW5kIGNvdWxkbid0IGZpbmQgaG93IHlvdQ0Kd291bGQgZHJhdyBhIG11bHRpcGxlIHNlbGVj dCBib3guDQplZzsNCjxzZWxlY3QgbmFtZT10ZXN0IG11bHRpcGxlPXRydWU+DQo8b3B0aW9u PjE8L29wdGlvbj4NCjxvcHRpb24+Mjwvb3B0aW9uPg0KPC9zZWxlY3Q+DQoNClRoZSBmb2xs b3dpbmcgd291bGQgc3VmZmljZSA6IGllIGNoYW5nZSB0aGUgZm9ybV9zZWxlY3QgbWV0aG9k IHRvDQpzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nDQoNCg0KZnVuY3Rpb24gZm9ybV9z ZWxlY3QoJG5hbWUsICRvcHRpb25zPWFycmF5KCksICRzZWxlY3RlZD0iIikgew0KDQogICAg JHNlbGVjdCA9IG5ldyBTRUxFQ1R0YWcoIGFycmF5KCJuYW1lIiA9PiAkbmFtZSkgKTsNCg0K ICAgIHdoaWxlKCBsaXN0KCRsYWJlbCwgJHZhbHVlKSA9IGVhY2goJG9wdGlvbnMpICkgew0K ICAgICAgICAkc2VsZWN0ZWRfdmFsdWUgPSAiIjsNCiAgICAgICAgaWYgKCRsYWJlbCA9PSAk c2VsZWN0ZWQpIHsNCiAgICAgICAgICAgICRzZWxlY3RlZF92YWx1ZSA9ICJTRUxFQ1RFRCI7 DQogICAgICAgIH0NCiAgICAgICAgJGF0dHJpYnV0ZXMgPSBhcnJheSggInZhbHVlIiA9PiAk dmFsdWUsICRzZWxlY3RlZF92YWx1ZSApOw0KICAgICAgICAkb3B0aW9uID0gbmV3IE9QVElP TnRhZyggJGF0dHJpYnV0ZXMgKTsNCiAgICAgICAgJG9wdGlvbi0+cHVzaCggJGxhYmVsICk7 DQogICAgICAgICRzZWxlY3QtPnB1c2goICRvcHRpb24gKTsNCiAgICB9DQogICAgcmV0dXJu ICRzZWxlY3Q7DQp9DQoNClRoZW4gY2FsbCB0aGUgbWV0aG9kIGxpa2Ugc286DQpmb3JtX3Nl bGVjdCgkYW5vbnltb3VzX2FycmF5W10sICAkb3B0aW9uc19hcnJheSwgIiIsICJtdWx0aXBs ZSA9Pg0KdHJ1ZSIpOw0KDQpCdXQgbWF5YmUgSSBtaXNzZWQgc29tZXRoaW5nIGFuZCBpdCdz IGFscmVhZHkgdGhlcmU/IEtlZXAgdXAgdGhlIGdyZWF0DQp3b3JrLg0KTXVzdCBkb3dubG9h ZCBhbmQgdHJ5IG91dCB0aGUgbmV3IHZlcnNpb24gdmVyeSBzb29uLg0KUmVnYXJkcywNCg0K V2luc3Rvbg0KDQoNCg== |
From: winston r. <win...@al...> - 2003-03-12 14:46:17
|
SGksDQpJIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhlIG11bHRpcGxlIHNlbGVjdCBib3guIEkg dGhpbmsgaXQncyBhIGJ1ZywgYnV0DQptYXliZSBJJ20gZG9pbmcgc29tZXRoaW5nIHdyb25n Lg0KDQpJIGhhdmUgYSBzZWxlY3QgYm94IGxpa2U6DQo8U0VMRUNUIG5hbWU9InByb2R1Y3Rz W10iIG11bHRpcGxlPSJ0cnVlIiBzaXplPSIxNSI+DQogICAgICAgICAgICAgIDxPUFRJT04g dmFsdWU9IjIyIiBTRUxFQ1RFRD4NCiAgICAgICAgICAgICAgICBwcm9kdWN0MQ0KICAgICAg ICAgICAgICA8L09QVElPTj4NCiAgICAgICAgICAgICAgPE9QVElPTiB2YWx1ZT0iMDIiIFNF TEVDVEVEPg0KICAgICAgICAgICAgICAgIHByb2R1Y3QyDQogICAgICAgICAgICAgIDwvT1BU SU9OPg0KICAgICAgICAgICAgICA8T1BUSU9OIHZhbHVlPSIwNSIgU0VMRUNURUQ+DQogICAg ICAgICAgICAgICAgcHJvZHVjdDMNCiAgICAgICAgICAgICAgPC9PUFRJT04+DQogICAgICAg ICAgICAgIDxPUFRJT04gdmFsdWU9IjA0IiBTRUxFQ1RFRD4NCiAgICAgICAgICAgICAgICBw cm9kdWN0NA0KICAgICAgICAgICAgICA8L09QVElPTj4NCiAgICAgICAgICAgICAgPE9QVElP TiB2YWx1ZT0iMTAiIFNFTEVDVEVEPg0KICAgICAgICAgICAgICAgIHByb2R1Y3Q1DQogICAg ICAgICAgICAgIDwvT1BUSU9OPg0KPC9TRUxFQ1Q+DQoNCkFuZCB1c2luZyBwaHBodG1sbGli LCBJIGNhbGwgaXQgYXMgc286DQokc2VsZWN0ID0gZm9ybV9zZWxlY3QoInByb2R1Y3RzW10i LCAkUHJvZHVjdExpc3QsICRlbmdpbmVQcm9kdWN0TGlzdCwNCiJ0cnVlIik7DQoNCldoZW4g aXQgZHJhd3MgdGhlIHNlbGVjdCBib3ggYWxsIGl0cyB2YWx1ZXMgYXJlIHRoZSBsYXN0IHZh bHVlDQppbiB0aGUgJGVuZ2luZVByb2R1Y3RMaXN0IGFycmF5Lg0KDQoNCkhlcmVzIHdoYXQg SSB0aGluayB0aGUgc2VsZWN0IGZ1bmN0aW9uIHNob3VsZCBiZS4gTk9URTogJHZhbHVlIGlz IHVzZWQNCnR3aWNlIGFuZCBnZXRzIG92ZXJ3cml0dGVuIHNvIGkndmUgdXNlZCAkdmFsdWUy DQoNCmZ1bmN0aW9uIGZvcm1fc2VsZWN0KCRuYW1lLCAkb3B0aW9ucz1hcnJheSgpLCAkc2Vs ZWN0ZWQ9IiIpIHsNCg0KICAgICRzZWxlY3QgPSBuZXcgU0VMRUNUdGFnKCBhcnJheSgibmFt ZSIgPT4gJG5hbWUpICk7DQoNCiAgICB3aGlsZSggbGlzdCgkbGFiZWwsICR2YWx1ZSkgPSBl YWNoKCRvcHRpb25zKSApIHsNCiAgICAgICAgJHNlbGVjdGVkX3ZhbHVlID0gIiI7DQogICAg ICAgIGlmKGlzX2FycmF5KCRzZWxlY3RlZCkpew0KDQojIE5vdGUgdGhlIHVzZSBvZiAkdmFs dWUyIHNvIGl0IGRvZXNuJ3Qgb3ZlcndyaXRlICR2YWx1ZSBhYm92ZQ0KICAgICAgICAgICAg Zm9yZWFjaCgkc2VsZWN0ZWQgYXMgJGtleSA9PiAkdmFsdWUyKXsNCiAgICAgICAgICAgICAg ICBpZiAoJGxhYmVsID09ICRrZXkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHNlbGVjdGVk X3ZhbHVlID0gIlNFTEVDVEVEIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9 DQogICAgICAgICAgICByZXNldCgkc2VsZWN0ZWQpOw0KICAgICAgICB9IGVsc2Ugew0KICAg ICAgICAgICAgaWYgKCRsYWJlbCA9PSAkc2VsZWN0ZWQpIHsNCiAgICAgICAgICAgICAgICAk c2VsZWN0ZWRfdmFsdWUgPSAiU0VMRUNURUQiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9 DQogICAgICAgICRhdHRyaWJ1dGVzID0gYXJyYXkoICJ2YWx1ZSIgPT4gJHZhbHVlLCAkc2Vs ZWN0ZWRfdmFsdWUgKTsNCiAgICAgICAgJG9wdGlvbiA9IG5ldyBPUFRJT050YWcoICRhdHRy aWJ1dGVzICk7DQogICAgICAgICRvcHRpb24tPnB1c2goICRsYWJlbCApOw0KICAgICAgICAk c2VsZWN0LT5wdXNoKCAkb3B0aW9uICk7DQogICAgfQ0KICAgIHJldHVybiAkc2VsZWN0Ow0K fQ0KDQpIb3BlIEkndmUgbWFkZSBteXNlbGYgY2xlYXIuIEFueSBxdWVzdGlvbnMsIHBvcCBt ZSBhIGxpbmUuDQoNClJlZ2FyZHMsDQpXaW5zdG9uDQoNCi0tDQpXaW5zdG9uIFJhbHBoIC0t IFN5c3RlbXMgRGV2ZWxvcGVyDQoNCg0K |
From: Walt B. <wab...@3g...> - 2003-03-12 17:54:44
|
Hi winston,=20 can you send me a the code that hows the error that you have? I haven't seen this problem with doing multiple selects before. Also I noticed the 4th param to the form_select() call, you are passing a string "true", which is incorrect. it should be a boolean, which is TRUE or FALSE Walt On Wed, 2003-03-12 at 06:50, winston ralph wrote: > Hi, > I have a problem with the multiple select box. I think it's a bug, but > maybe I'm doing something wrong. >=20 > I have a select box like: > <SELECT name=3D"products[]" multiple=3D"true" size=3D"15"> > <OPTION value=3D"22" SELECTED> > product1 > </OPTION> > <OPTION value=3D"02" SELECTED> > product2 > </OPTION> > <OPTION value=3D"05" SELECTED> > product3 > </OPTION> > <OPTION value=3D"04" SELECTED> > product4 > </OPTION> > <OPTION value=3D"10" SELECTED> > product5 > </OPTION> > </SELECT> >=20 > And using phphtmllib, I call it as so: > $select =3D form_select("products[]", $ProductList, $engineProductList, > "true"); >=20 > When it draws the select box all its values are the last value > in the $engineProductList array. >=20 >=20 > Heres what I think the select function should be. NOTE: $value is used > twice and gets overwritten so i've used $value2 >=20 > function form_select($name, $options=3Darray(), $selected=3D"") { >=20 > $select =3D new SELECTtag( array("name" =3D> $name) ); >=20 > while( list($label, $value) =3D each($options) ) { > $selected_value =3D ""; > if(is_array($selected)){ >=20 > # Note the use of $value2 so it doesn't overwrite $value above > foreach($selected as $key =3D> $value2){ > if ($label =3D=3D $key) { > $selected_value =3D "SELECTED"; > } > } > reset($selected); > } else { > if ($label =3D=3D $selected) { > $selected_value =3D "SELECTED"; > } > } > $attributes =3D array( "value" =3D> $value, $selected_value ); > $option =3D new OPTIONtag( $attributes ); > $option->push( $label ); > $select->push( $option ); > } > return $select; > } >=20 > Hope I've made myself clear. Any questions, pop me a line. >=20 > Regards, > Winston >=20 > -- > Winston Ralph -- Systems Developer >=20 >=20 > N=18=C2=ACHY=C3=9E=C2=B5=C3=A9=C2=9A=C2=8AX=C2=AC=C2=B2=C2=9A'=C2=B2=C2= =8A=C3=9Eu=C2=BC=C2=82=C2=AF*m (Z=C2=96W=C2=A7=C2=81=C3=A8=C2=AC=C2=9E=C2= =8C(=C2=A5=C3=A9=C3=86z=C3=97+i=C3=89"=C2=9E=06=C2=A7v=C2=B7 =C2=8A=C3=8B= ^=C2=AE=17=C2=ABy=C3=BA+=C2=B2=C2=89=C2=9E=C2=9A)=C3=9Dn=C2=88 =C2=96)=C3= =A0~=C3=A9=C3=9A=C2=9D=C3=9Bay=C3=88Z=C2=9D=C3=87=C2=A8=7F=08=C2=A7=C2=9E= )=C3=A0jp)=C2=A6W=C2=A2>=C2=87a=C2=B6=C3=9A=7F=C3=BD=C2=A7l=C2=B2=C2=8B=C2= =ABq=C3=A7=C3=A8=C2=AE=07=C2=A7z=C3=9F=C3=9C=C2=82&=C3=A2=C2=9F=C3=BA=C3=9E= v*=C3=9Er=C3=9Ae=C2=B6=16=C2=B0=C3=93M=C3=B5zs=C3=A1=C2=A6=1Bf=C2=96X=C2=9B= u=C3=AB=C3=9E=C2=96f=C2=A2=C2=96)=C3=A0=C2=96+->=1Aa=C2=B6ie=C2=89=C2=B7^= =C2=BD=C3=A9e=C2=8A=C3=8Bl=C2=B2=C2=8B=C2=ABq=C3=A7=C3=A8=C2=AE=07=C2=A7z= =C3=98m=C2=B6=C2=9B?=C3=BEX=C2=AC=C2=B6=C3=8B(=C2=BA=C2=B7=1E~=C2=8A=C3=A0= zw=C2=AD=C3=BEX=C2=AC=C2=B6=C3=8F=C3=A5=C2=8A=C3=8Bb=C2=9D=C3=BA?=C2=A6=1A= a=C2=B6ie=C2=89=C2=B7^ |
From: Walter A. B. I. <wab...@bu...> - 2002-06-05 22:18:37
|
Howdy, I actually found this issue as well, and have it fixed in the CVS version (2.0.0) of the libs. There is a 4th param to the form_select() function that is a flag to make the select tag add the multiple attribute. function form_select($name, $options=array(), $selected="", $multiple_flag=FALSE) { $select = new SELECTtag( array("name" => $name) ); if ($multiple_flag) { $select->set_tag_attribute("MULTIPLE"); } ... Walt On Wed, 2002-06-05 at 04:12, winston ralph wrote: > Hi, > Must say great class, it's made my job a hell of lot easier. > Nice standard, clean easy to read HTML. Just a small query. > I have looked through the classes and couldn't find how you > would draw a multiple select box. > eg; > <select name=test multiple=true> > <option>1</option> > <option>2</option> > </select> > > The following would suffice : ie change the form_select method to > something like the following > > > function form_select($name, $options=array(), $selected="") { > > $select = new SELECTtag( array("name" => $name) ); > > while( list($label, $value) = each($options) ) { > $selected_value = ""; > if ($label == $selected) { > $selected_value = "SELECTED"; > } > $attributes = array( "value" => $value, $selected_value ); > $option = new OPTIONtag( $attributes ); > $option->push( $label ); > $select->push( $option ); > } > return $select; > } > > Then call the method like so: > form_select($anonymous_array[], $options_array, "", "multiple => > true"); > > But maybe I missed something and it's already there? Keep up the great > work. > Must download and try out the new version very soon. > Regards, > > Winston > > |