Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

visitante_php

[Resolvido] classe eh interrompida...

Recommended Posts

estou criando uma classe, mas esta dando erro, so mostra um campo

 

<?php

/**
 * @author espiritodocoracao@yahoo.com.br
 * @copyright 2008
 */

class Html{
	
	var $label;
	Var $id_field;
	var $method;
	var $action;
	var $text;
	var $address;
	var $element = array();
	var $cols;
	var $rows;
	var $enctype;
	var $type;
	
	function AddTextField($id_field, $type){
		switch($type){
			case "text":
		$this->TextField ="<input type=\"text\" name=\"".$id_field."\" id=\"".$id_field."\" /></br>";
		break;
		case "hidden":
		$this->TextField ="<input type=\"hidden\" name=\"".$id_field."\" id=\"".$id_field."\" /></br>";
		break;
		case "password":
		$this->TextField ="<input type=\"password\" name=\"".$id_field."\" id=\"".$id_field."\" /></br>";
		break;
		case "file":
		$this->TextField ="<input type=\"file\" name=\"".$id_field."\" id=\"".$id_field."\" /></br>";
		break;
		
		}
		return $this->TextField;
		
	}
	
	function AddLink($text, $address){
		$this->Link = "<a href=\"".$address."\">".$text."</a>";
		return $this->Link;
	}
	
	function AddTextArea($id_field, $cols = 45, $rows = 5){
		$this->TextArea = "<textarea name=\"".$id_field."\" id=\"".$id_field."\" cols=\"45\" rows=\"5\"></textarea>";
		return $this->TextArea;
		
	}
	
	function AddLabel($text, $element){
		$this->Label = "<label></br>".$text.": ".$element."</label></br>";
		return $this->Label;
	}
	
	function AddForm($name, $element = array()){
	$this->Form = '<form action="'.$this->action.'" method="'.$this->Method.'" enctype="'.$this->enctype.'" name="'.$name.'" id="'.$name.'">';

for ($a = 0;$a<=sizeof($element); $a++) {
	return $this->Form .=  $element[$a];
}
$this->Form .= "</br>".$this->Button."</br>";
$this->Form .= "</form>";
return $this->Form;
		
	}
	
	function SetAction($action){
		$this->action  = $action;
		return $this->action;
		
	}
	
	function SetEnctype($enctype = 2){
		switch($enctype){
			case 0:
			$this->enctype = "multipart/form-data";
			return $this->enctype;
			break;
			case 1:
			$this->enctype = "application/x-www-form-urlencoded";
			return $this->enctype;
			break;
			case 2:
			$this->enctype = "";
			return $this->enctype;
			break;
		
		}
		
	}
	
	function SetButton($name, $value){
		$this->Button = "<input type=\"submit\" name=".$name." id=".$name." value=".$value." />";
		return $this->Button;
	}
	
	function SetMethod($method = "post"){
		switch($method){
			case "post":
			$this->Method = "POST";
			return $this->Method;
			break;
			case "get":
			$this->Method = "GET";
			return $this->Method;
			break;
		}
	}
	
}

?>

na hora de mostrar o form....

 

o q pode ser...?

 

<?php

/**
 * @author espiritodocoracao@yahoo.com.br
 * @copyright 2008
 */

require("class.html.php");
$html = new Html;


$nome = $html->AddTextField("nome", "text");
$email = $html->AddTextField("email", "text");
$texto = $html->AddTextArea("comentario");
$botao = $html->SetButton("envia", "Enviar");
$acao = $html->SetAction("pagina.php");
$label_nome = $html->AddLabel("Seu nome", $nome);
$label_email = $html->AddLabel("Seu e-mail", $email);
$label_texto = $html->AddLabel("Seu comentario", $texto);

echo $html->AddForm("contato", array($label_nome,$label_email, $label_texto));




?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que acontece é que o método Html::AddTextField() define um valor para a propriedade Html::$TextField.

Então, cada vez que você chama o método, você sobrescreve o valor anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei usar arrays para armazenar caso mais de um textfield e nada, e outro detalhe, se fosse esse erro q o marcio informou, o form seria fechado e ele nao fecha, abre um form e mostr um so textfield, e nao fecha o form

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse trecho tem um erro

 

letra maiúscula na palavra Method.

a propriedade foi declarada

var $method;
o PHP interpreta como case-sensitive

$this->Form = '<form action="'.$this->action.'" method="'.$this->Method.'" enctype="'.$this->enctype.'" name="'.$name.'" id="'.$name.'">';

correção

$this->Form = '<form action="'.$this->action.'" method="'.$this->method.'" enctype="'.$this->enctype.'" name="'.$name.'" id="'.$name.'">';

 

 

o formulario nao é completado por causa do "return" dentro do loop.

o return interrompe a execução da função.

 

for ($a = 0;$a<=sizeof($element); $a++) {

return $this->Form .= $element[$a];

}

correção

 

foreach ( $element as $key => $val ) {
			$this->Form .=  $val;
		}

Compartilhar este post


Link para o post
Compartilhar em outros sites

retorna vazio porque nao tem nenhum valor definido...

 

repare bem no que está fazendo

 

declarou

 

var $method

 

e mandou escrever $this->method

 

mas onde está declaração ou atribuição de valor ?

 

 

 

tem um método chamado "SetMethod"

mas não está sendo usado...

 

 

function SetMethod($method = "post"){
		switch($method){
			case "post":
			$this->Method = "POST";
			return $this->Method;
			break;
			case "get":
			$this->Method = "GET";
			return $this->Method;
			break;
		}
	}

 

 

ao chamar "AddForm" também não tem nada referente ao método.

 

$html = new Html;

 

 

$nome = $html->AddTextField("nome", "text");

$email = $html->AddTextField("email", "text");

$texto = $html->AddTextArea("comentario");

$botao = $html->SetButton("envia", "Enviar");

$acao = $html->SetAction("pagina.php");

$label_nome = $html->AddLabel("Seu nome", $nome);

$label_email = $html->AddLabel("Seu e-mail", $email);

$label_texto = $html->AddLabel("Seu comentario", $texto);

 

echo $html->AddForm("contato", array($label_nome,$label_email, $label_texto));

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.