hmmm, narazie korzystam z domyslnych wygladow, dla selecta, checkboxa, oraz radio, ogolnie jak poustawiam style to sa male roznice,
i dla klienta to nie problem

hehe,
ale dzieki za wyjasnienie, zgadzam sie ze aby formularze zrobic podobne dla kazdej przegladarki jak sa pola jak wyzej, to jest porazka.
Mam kilka pytan

klasy i obiekty uzywam od jakiegos czasu, ale postanowilem wziasc sie porzadnie za to, i chce dobrze wszystko zrozumiec, i stosowac jak najlepiej

dlatego ponizej tego calego kodu, beda pytania

, mam nadzieje ze ktos odpowie

<?php
class form {
#####################################################################
# Klasa do generowania Formularzy #
# #
#####################################################################
protected $enctype='multipart/form-data';
protected
$method=array('post','get'); protected $action='';
protected
$form=array('method'=>'','action'=>'','enctype'=>'','id'=>'','class'=>'','style'=>''); public $elements=array();
function __construct($method='post',$action='',$enctype=null,$id=null,$class=null,$style=null)
{
if (!in_array($method,$this->method)) die('bledny parametr method. Podaj: post lub get'); $this->form['method']=$method;
$this->action=$action;
if ($enctype) $this->setEnctype(1);
$this->form['id']=$id;
$this->form['class']=$class;
$this->form['style']=$style;
}
public function setEnctype($set=0)
{
if ($set) $this->form['enctype']=$this->enctype;
else $this->form['enctype']=null;
}
public function setAction($set='')
{
$this->action=$set;
}
public function setMethod($set='')
{
if (!in_array($set,$this->method)) die('bledny parametr method. Podaj: post lub get'); $this->form['method']=$set;
}
public function setId($set='')
{
$this->form['id']=$set;
}
public function setClass($set='')
{
$this->form['class']=$set;
}
public function setStyle($set='')
{
$this->form['style']=$set;
}
public function newInput($type='submit',$name='name',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');')
{
$this->elements[$name]=new input($type,$name,$value,$id,$style,$class,$onclick);
}
public function newInput2($type='submit',$name='name',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');')
{
return new input($type,$name,$value,$id,$style,$class,$onclick);
}
public function generate()
{
$t='<form action="'.$this->action.'"';foreach($this->form as $id=>$val) $val?$t.=' '.$id.'="'.$val.'"':'';$t.='>';
$t.="r\n";
foreach ($this->elements as $id)
$t.=$id->generate();
$t.='</form>';
return $t;
}
}
class input {
################################################################################
# Klasa do generowania Input #
# <input type="text" value="" name="" id="" style="" class="" onclick=""> #
###########################################################################
#####
protected
$field= array('type'=>'','name'=>'name','value'=>'','id'=>'','style'=>'','class'=>'','onclick'=>''); protected
$type= array('text','hidden','image','submit','checkbox','radio');
function __construct($type='text',$name='name',$value='value',$id=null,$style=null,$class=null,$onclick=null)
{
if (!in_array($type,$this->type)) die('bledny parametr type. Podaj: text, hidden, image, lub submit'); $this->field['type']=$type;
$this->field['name']=$name;
$this->field['value']=$value;
$this->field['id']=$id;
$this->field['style']=$style;
$this->field['class']=$class;
$this->field['onclick']=$onclick;
}
/*Pobiera wartosci z field, jesli danej value nie ma. Sprawdza czy istnieje w field, jesli nie ma to killuje proces*/
public function __get($name){
if (!isset($this->field[$name])) die('Brak danego pola w bazie które możesz wywołać $obiekt -> '.$name.'!<br/>'); else return $this->field[$name];
}
/*Jesli nie ma danego pola, tworzy w tablicy nowe, i ustawia wartość*/
public function __set($name, $value){
if ($name=='type')
$this->setTyp($value);
else
$this->field[$name]=$value;
}
public public function setTyp($type)
{
if (!in_array($type,$this->type)) die('bledny parametr type. Podaj: text, hidden, image, lub submit'); $this->field['type']=$type;
}
public function generate()
{
$t='<input ';foreach($this->field as $id=>$val) $val?$t.=$id.'="'.$val.'" ':'';$t.='/>';
$t.="r\n";
return $t;
}
}
$form=new form($method='post',$action='aa',$enctype=1,$id='id',$class='c',$style='s');
$form->setEnctype(1);
$form->setAction('');
$form->setMethod('post');
$form->setId('identyfikator');
$form->setClass('class');
$form->setStyle('style');
$form->elements['input1']=new input($type='text',$name='name1',$value='value wyslij',$id='id',$style='style',$class='class',$onclick='');
$form->elements['input1']->id='nowe_id';
$form->elements['input2']=new input($type='submit',$name='name2',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');');
$form->newInput($type='submit',$name='name3',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');');
$form->elements['name3']->id='test';
$form->elements['input4']=$form->newInput2($type='radio',$name='name4',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');');
$form->elements['input4']->class='klasa';
?>
Wynik:
<form action="" method="post" enctype="multipart/form-data" id="identyfikator" class="class" style="style"> <input type="text" name="name1" value="value wyslij" id="nowe_id" style="style" class="class" /> <input type="submit" name="name2" value="value wyslij" style="style" class="class" onclick="return confirm('click');" /> <input type="submit" name="name3" value="value wyslij" id="test" style="style" class="class" onclick="return confirm('click');" /> <input type="radio" name="name4" value="value wyslij" style="style" class="klasa" onclick="return confirm('click');" />
Zaczne od konca

Zdefiniowalem klase input,
field, i type jest protected, stosuje funkcje __get, oraz __set do ustawiania pol field, praktyczne to jest?
funckje generate() - zwracaja kod html.
wywolanie funkcji input:
$c=new input($type='text',$name='name1',$value='value wyslij',$id='id',$style='style',$class='class',$onclick='');
$c->id='nowe_id';
echo $c->generate();
w konstruktorze ustawiam najwazniejsze rzeczy

, reszte mozna ustawic poprzez:
$c->id, $c->value itp,
stosuje sie takie cos? dla mnie ladnie to wyglada

ale nie wiem jeszcze czy to jest praktyczne

. Chcialem zawezic funckcje magiczne tylko dla pol fields ale chwilowo to pominalem (musialbym dac wszystkie mozliwe pola jakie input moze posiadac).
funckją setTyp($value) ustawiam type inputa, przez oddzielna funkcje, poniewaz trzeba miec kontrole akurat nad tym jednym polem

A teraz klasa Form,
jak w klasie input, najwazniejsze parametry ustawiam poprzez konstruktor,
nastepnie kazda opcje formularza mozna ustawic tylko przez metody do tego stworzone

mam tutaj glownie pytania, jak tworzyc nowe pola w takim formularzu

dalem 4 sposoby:
<?php
$form->elements['input1']=new input($type='text',$name='name1',$value='value wyslij',$id='id',$style='style',$class='class',$onclick='');
$form->elements['input1']->id='nowe_id';
$form->elements['input2']=new input($type='submit',$name='name2',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');');
$form->newInput($type='submit',$name='name3',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');');
$form->elements['name3']->id='test';
$form->elements['input4']=$form->newInput2($type='radio',$name='name4',$value='value wyslij',$id=null,$style='style',$class='class',$onclick='return confirm('click');');
$form->elements['input4']->class='klasa';
?>
jak trzeba wyjasnien do tych sposobow napiszcie, a wyjasnie

najbardziej optymalna wedlug mnie jest metoda z input4[name4]