Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

clasa pentru generare formular [rezolvat]
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
danielsen



Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca

Trimis: Lun Iul 21, 2008 7:19 pm    Titlul subiectului: clasa pentru generare formular [rezolvat]  

Am incercat sa fac o clasa pt generat formular si campuri de formular, dar pana la un anumit punct.

Cod: class Formular {

   var $eticheta;
   var $tip;
   var $nume;
   var $valoare;

   function afisareForm($action, $method) {
      echo '<form action="'. $action .'" method="'. $method .'">' . "\n";
      echo '<table>' . "\n";

      $this->textfield( $label, $type, $name, $value );
      $this->textarea( $label, $name, $value );

      echo '</table>' . "\n";
      echo '</form>' . "\n";
   }

   function textfield($label, $type, $name, $value) {
      $this->eticheta = $label;
      $this->valoare = $value;
      $this->nume = $name;
      $this->tip = $type;
      $lab = !empty($label) ? "<tr>\n\t<td>". $label ."</td>\n\t<td>" : "<tr>\n\t<td></td>\n\t<td>";
      $val = !empty($value) ? 'value="'. $value .'"/>' : '/>';
      echo $lab . '<input type="'. $type .'" name="'. $name .'" '. $val . "</td>\n</tr>\n";
   }

   function textarea($label, $name, $value) {
      $this->eticheta = $label;
      $this->valoare = $value;
      $this->nume = $name;
      $lab = !empty($label) ? "<tr>\n\t<td>". $label ."</td>\n\t<td>" : "<tr>\n\t<td></td>\n\t<td>";
      $val = !empty($value) ? $value .'</textarea>' : '</textarea>';
      echo $lab . '<textarea name="'. $name .'">' . $val . "</td>\n</tr>\n";
   }

}

Faza e ca imi genereaza campurile asa cum trebuie, dar nu in interiorul functiei afisareForm(), ideea e ca am nevoie de o solutie sa fac sub forma asta.

exemplu de instantiere:

include 'form.class.php';

$form = new Formular;

$form->textfield('numele', 'text', 'nume', '');
$form->textfield('parola', 'password', 'parola', '');

$form->afisareForm('index.php', 'POST');

Asa cum e acuma imi genereaza ceva de genul:

<tr>
<td>numele</td>
<td><input type="text" name="nume" /></td>
</tr>
<tr>
<td>parola</td>
<td><input type="password" name="parola" /></td>
</tr>

<form action="index.php" method="POST">
<table>
<tr>
<td></td>
<td><input type="" name="" /></td>
</tr>
<tr>
<td></td>
<td><textarea name=""></textarea></td>
</tr>
</table>
</form>
Sus  
andrei009



Data înscrierii: 16/Mar/2007
Mesaje: 211

Trimis: Lun Iul 21, 2008 9:22 pm    Titlul subiectului:  

la clasa mai adaugi o variabila
Cod: $ls = array();
la functiile textfield si textarea in loc de echo $lab pui Cod: array_push($this->ls,$lab);
iar la afisareForm inainte de ultimele 2 echo-uri
Cod: foreach($this->ls as $l){
    echo $l;
}
Sus  
danielsen



Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca

Trimis: Lun Iul 21, 2008 10:23 pm    Titlul subiectului:  

Merci, imi merge partial, am pus cum ai zis tu:

Cod: class Formular {

   var $ls = array();

   function afisareForm($action, $method) {
      echo '<form action="'. $action .'" method="'. $method .'">' . "\n";
      echo '<table>' . "\n";

      foreach ($this->ls as $lista) {
         echo $lista;
      }

      echo '</table>' . "\n";
      echo '</form>' . "\n";
   }

   function textfield($label, $type, $name, $value) {
      $lab = !empty($label) ? "<tr>\n\t<td>". $label ."</td>\n\t<td>" : "<tr>\n\t<td></td>\n\t<td>";
      $val = !empty($value) ? 'value="'. $value .'"/>' : '/>';

      array_push($this->ls,$lab);

      echo '<input type="'. $type .'" name="'. $name .'" '. $val ."</td>\n</tr>\n";
   }

   function textarea($label, $name, $value) {
      $lab = !empty($label) ? "<tr>\n\t<td>". $label ."</td>\n\t<td>" : "<tr>\n\t<td></td>\n\t<td>";
      $val = !empty($value) ? $value .'</textarea>' : '</textarea>';

      array_push($this->ls,$lab);

      echo '<textarea name="'. $name .'">'. $val ."</td>\n</tr>\n";
   }

}

dar nu-mi pune tot ce e in fiecare functie, desi am incercat cu array_push($this->ls,$lab,$val ...);

Imi afiseaza ceva de genul:
Cod: <input type="text" name="nume" /></td>
</tr>
<input type="password" name="parola" /></td>
</tr>

<form action="index.php" method="POST">
<table>
<tr>
   <td>numele</td>
   <td><tr>
   <td>parola</td>
   <td></table>
</form>

Normal ar trebui sa afiseze:

Cod: <form action="index.php" method="POST">
<table>
<tr>
   <td>numele</td>
   <td><input type="text" name="nume" /></td>
</tr>
<tr>
   <td>parola</td>
   <td><input type="password" name="parola" /></td>
</tr>
</table>
</form>
Sus  
andrei009



Data înscrierii: 16/Mar/2007
Mesaje: 211

Trimis: Mar Iul 22, 2008 12:48 am    Titlul subiectului:  

oups, eram cam grabit

Cod: class Formular {

   var $ls = array();

   function afisareForm($action, $method) {
      echo '<form action="'. $action .'" method="'. $method .'">' . "\n";
      echo '<table>' . "\n";

      foreach ($this->ls as $lista) {
         echo $lista;
      }

      echo '</table>' . "\n";
      echo '</form>' . "\n";
   }

   function textfield($label, $type, $name, $value) {
      $lab = !empty($label) ? "<tr>\n\t<td>". $label ."</td>\n\t<td>" : "<tr>\n\t<td></td>\n\t<td>";
      $val = !empty($value) ? 'value="'. $value .'"/>' : '/>';
    $lab = $lab.'<input type="'. $type .'" name="'. $name .'" '. $val ."</td>\n</tr>\n";
      array_push($this->ls,$lab);
   }

   function textarea($label, $name, $value) {
      $lab = !empty($label) ? "<tr>\n\t<td>". $label ."</td>\n\t<td>" : "<tr>\n\t<td></td>\n\t<td>";
      $val = !empty($value) ? $value .'</textarea>' : '</textarea>';
    $lab = $lab.'<textarea name="'. $name .'">'. $val ."</td>\n</tr>\n";
      array_push($this->ls,$lab);
   }

}
nu trebuia sa dai echo din functia textarea sau textfield. output-ul il ti intr-o variabila si numai cand apelezi afisareForm afiseaza formularul.
Sus  
gabyrusu



Data înscrierii: 11/Iun/2006
Mesaje: 45
Locație: Brasov

Trimis: Mar Iul 22, 2008 9:39 am    Titlul subiectului:  

nu era mai simplu sa lucrezi cu quickform-ul din pear sau jquery form... si mai sunt o gramada ce clase pe care le poti folosi...
Sus  
danielsen



Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca

Trimis: Mar Iul 22, 2008 9:40 am    Titlul subiectului:  

O fi mai simplu, dar eu nu stiu folosi. Daca ai documentatie sa-mi dai si mie, arata-mi.
Sus  
gabyrusu



Data înscrierii: 11/Iun/2006
Mesaje: 45
Locație: Brasov

Trimis: Mar Iul 22, 2008 9:52 am    Titlul subiectului:  

http://www.devarticles.com/c/a/Web-Graphic-Design/Using-HTML-Quickform-for-Form-Processing/

ai aici si exemple concrete.... dar pentru a putea folosi quickform trebuie sa ai instalat pachetul PEAR ... cauta pe google cum il poti instala si folosi ... o sa te ajute foarte mult ... iti recomand sa te uiti si pe

http://pear.php.net

acolo ai toata documentatia necesara. ar trebui sa inveti sa lucrezi cu template-uri (smarty sau flexy)
Sus  
hunt_h_er



Data înscrierii: 14/Sep/2006
Mesaje: 95

Trimis: Mar Iul 22, 2008 12:48 pm    Titlul subiectului:  

Zend_Form si symfony 1.1 forms sunt solutii complete. Poti sa te inspiri din api-urile lor daca esti pasionat :)
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community