 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|