Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Código está derrubando o Servidor


Rafael Rocha B.

Pergunta

Galera, estou desenvolvendo um programinha de cadastro e gerenciamento de usuários simples em MVC, e estou me deparando com um problema pelo qual ainda não havia passado.

É o seguinte, sempre que tento rodar a página view.php o apache para de funcionar. Já tentei rodar outros códigos e funcionaram beleza. Alguém tem alguma sugestão.

O código faz basicamente o seguinte.

View.php

Exibe o formulário de cadastro e passa as informações digitadas pelo usuário para o arquivo Controller.php

Controller.php

Recebe os dados enviados através da View.php e repassa-os para a Model.

Modelo.php

Recebe e as informações do Controller.php, faz as consultas ao banco de dados e retorna os resultados para Controller.php

Posso postar o código se necessário.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

O Código é pessoal. Quando tento todar a view.php o apache para de funcionar e não acusa nenhum erro. Quando retiro o código PHP da view.php roda normal, então o problema ou está na controller.class.php ou mais provavelmente na model.class.php. Já procurei e ainda estou procurando este bentido erro e até agora nada.

view.php

<?php require_once "../control/controlle.class.php"; ?>

<?php

$nome_cliente      = $_POST['nome_cliente'];
$profissao_cliente = $_POST['profissao_cliente'];
$telefone_cliente  = $_POST['telefone_cliente'];
$email_cliente     = $_POST['email_cliente'];
$control = new Controller();
$control->interpreta($nome_cliente, $nome_cliente, $telefone_cliente, $email_cliente);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
      <head>
                      <title>Gerenciamento de cadastro</title>
                      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                      <meta name="author" content="Rafael da Rocha" />
                      <meta name="keywords" content="Desenvolvedor Web" />
      </head>
      
      <body>
      
            <?php echo $control->retornaresultado(); ?>
            <form action="view.php" method="post">
                   <fieldset>
                             <legend>Cadastro de novo Usuário</legend>
                             <label><input type="text" name="nome_cliente">*Nome do cliente</label><br />
                             <label><input type="text" name="profissao_cliente">*Profissão</label><br />
                             <label><input type="text" name="telefone_cliente">*Telefone</label><br />
                             <label><input type="text" name="email_cliente">E-mail</label><br />
                             <input type="submit" value="Cadastrar">
                   </fieldset>
            </form>
      </body>
      
</html>
controller.class.php
<?php

     require_once("../model/model.class.php");
     
     Class Controller
     {
           public $obj = NULL;
           
           function __construct()
           {
                    $this->obj = new Cliente();
           }

           function interpreta($nome_cliente, $profissao_cliente, $telefone_cliente, $email_cliente)
           {
              if($nome_cliente == '' || $profissao_cliente == '' || $telefone_cliente == '')
              {
                    echo "Por favor preencha os campos obrigatórios";
              }
              
              else
              {
                  $this->obj->cadastrar($nome_cliente, $profissao_cliente, $telefone_cliente, $email_cliente);
              }
           }
           
           function retornaresultado()
           {
                    return $this->obj->resultado();
           }

    }

?>
model.class.php
<?php

     require_once '../db/conecta.mysql.php';
     $mysql = new Conecta('localhost' , 'root' , '', 'sistema');
     $mysql->conect();
     $mysql->erroConexao();

     Class Cliente
     {

           public $objeto = NULL;

           function __construct()
           {
                    $this->objeto = new Cliente;
           }

           function cadastrar($nome_cliente, $profissao_cliente, $telefone_cliente, $email_cliente)
           {
                    $consulta = mysql_query("SELECT nome_cliente FROM cliente WHERE nome_cliente='$nome_cliente';");
                    $linhas = mysql_num_rows($consulta);
                    
                    if ($linhas > 0)
                    {
                      $this->resposta = 'Cliente já cadastrado!';
                    }

                    else {

                    $sql = "INSERT INTO cliente (nome_cliente, profissao_cliente, telefone_cliente, email_cliente) VALUE ('$nome_cliente', '$profissao_cliente', '$telefone_cliente', '$email_cliente')"; 
                $consulta  = mysql_query($sql) or die (mysql_error());

                               if ($consulta == TRUE)
                               {
                                  $this->resposta = "Cadastro Realizado com Sucesso.";
                               }
                               else
                               {
                                   $this->resposta = "Erro ao cadastrar o cliente, Por Favor Tente Novamente!";
                               }
                        }
                        
            }
           
           function resultado()
           {
                return $this->resposta;
           }
}
?>
conecta.mysql.php
<?php

class Conecta{

      function __construct($local, $login, $senha, $banco){
               $this->local  = $local;
               $this->login  = $login;
               $this->senha  = $senha;
               $this->banco  = $banco;
      }

      function conect(){
               mysql_pconnect($this->local, $this->login, $this->senha);
               mysql_select_db($this->banco);
      }

      function erroConexao(){
               if(mysql_pconnect == FALSE){
                                echo "mysql_errno()";
               }
      }

}

?>
Nome do banco: sistema Tabela:
CREATE TABLE `cliente` (
  `id` int(11) NOT NULL auto_increment,
  `nome_cliente` text NOT NULL,
  `profissao_cliente` text NOT NULL,
  `telefone_cliente` int(10) NOT NULL,
  `email_cliente` varchar(200) NOT NULL,
  PRIMARY KEY  (`id`)
)

Editado por *FIT*
Adicionar a tag [code]! *FIT*
Link para o comentário
Compartilhar em outros sites

  • 0

<?php

//controlle.class.php

require_once("../model/model.class.php");

Class Controller
{
    public $obj = NULL;
    function __construct()
    {
        $this->obj = new Cliente();
    }
    function interpreta($nome_cliente, $profissao_cliente, $telefone_cliente, $email_cliente)
    {
        if($nome_cliente == '' || $profissao_cliente == '' || $telefone_cliente == '')
        {
            echo "Por favor preencha os campos obrigatórios";
        }
        else
        {
            $this->obj->cadastrar($nome_cliente, $profissao_cliente, $telefone_cliente, $email_cliente);
        }
    }
    function retornaresultado()
    {
        return $this->obj->resultado();
    }
}
?>
<?php 

//view.php

require_once "../control/controlle.class.php";
$nome_cliente      = $_POST['nome_cliente'];
$profissao_cliente = $_POST['profissao_cliente'];
$telefone_cliente  = $_POST['telefone_cliente'];
$email_cliente     = $_POST['email_cliente'];
$control = new Controller();
$control->interpreta($nome_cliente, $nome_cliente, $telefone_cliente, $email_cliente);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
      <head>
                      <title>Gerenciamento de cadastro</title>
                      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                      <meta name="author" content="Rafael da Rocha" />
                      <meta name="keywords" content="Desenvolvedor Web" />
      </head>
      <body>
            <?php echo $control->retornaresultado(); ?>
            <form action="view.php" method="post">
                   <fieldset>
                             <legend>Cadastro de novo Usuário</legend>
                             <label><input type="text" name="nome_cliente">*Nome do cliente</label><br />
                             <label><input type="text" name="profissao_cliente">*Profissão</label><br />
                             <label><input type="text" name="telefone_cliente">*Telefone</label><br />
                             <label><input type="text" name="email_cliente">E-mail</label><br />
                             <input type="submit" value="Cadastrar">
                   </fieldset>
            </form>
      </body>
</html>
<?php

//model.class.php

require_once '../db/conecta.mysql.php';

Class Cliente
{
    public $objeto = NULL;
    
    function __construct()
    {
        //$this->objeto = new Cliente();
    }
    function cadastrar($nome_cliente, $profissao_cliente, $telefone_cliente, $email_cliente)
    {
        $mysql = new Conecta('localhost' , 'root' , '', 'sistema');
        $mysql->conect();
        $mysql->erroConexao();
    
        $consulta = mysql_query("SELECT nome_cliente FROM cliente WHERE nome_cliente='$nome_cliente';");
        $linhas = mysql_num_rows($consulta);
        if ($linhas > 0)
        {
            $this->resposta = 'Cliente já cadastrado!';
        }
        else {
            $sql = "INSERT INTO cliente (nome_cliente, profissao_cliente, telefone_cliente, email_cliente) VALUE ('$nome_cliente', '$profissao_cliente', '$telefone_cliente', '$email_cliente')";
            $consulta  = mysql_query($sql) or die (mysql_error());
            if ($consulta == TRUE)
            {
                $this->resposta = "Cadastro Realizado com Sucesso.";
            }
            else
            {
                $this->resposta = "Erro ao cadastrar o cliente, Por Favor Tente Novamente!";
            }
        }
    }
    function resultado()
    {
        return $this->resposta;
    }
}
?>
<?php

//conecta.mysql.php

class Conecta
{
    function __construct($local, $login, $senha, $banco)
    {
        $this->local  = $local;
        $this->login  = $login;
        $this->senha  = $senha;
        $this->banco  = $banco;
    }
    function conect()
    {
        mysql_connect($this->local, $this->login, $this->senha);
        mysql_select_db($this->banco);
    }
    function erroConexao()
    {
        if(mysql_connect == FALSE){
            echo "mysql_errno()";
        }
    }
}
?>

Não use conexões persistente em webhosting (é normal mesmo o servidor web apache cair por excesso de consumo de memória)

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado ursolouco. Funcionou legal aqui. Mas achei muito estranho, até agora não consegui entender. Tipo, coloquei a conexão com o banco no topo do model.php funcionou da mesma forma, o que estava derrubando o servidor era essa função, também na model.

function __construct()
    {
        //$this->objeto = new Cliente();
    }

Quando você falou de conexões persistentes se referiu a ela??

Mais uma vez valeu pela atenção!

Link para o comentário
Compartilhar em outros sites

  • 0

Não!!

Este trecho de código (abaixo) faz uma lista circular ligada e, a maravilhosa VM do PHP, não detecta e sai alocando e esgotando a memória do servidor.

Muito obrigado ursolouco. Funcionou legal aqui. Mas achei muito estranho, até agora não consegui entender. Tipo, coloquei a conexão com o banco no topo do model.php funcionou da mesma forma, o que estava derrubando o servidor era essa função, também na model.

function __construct()
    {
        //$this->objeto = new Cliente();
    }

Quando você falou de conexões persistentes se referiu a ela??

Mais uma vez valeu pela atenção!

Editado por ursolouco
Link para o comentário
Compartilhar em outros sites

  • 0

Brother,

Isso se aprende na prática!!

São poucos programadores que possuem o conceito exato sobre o que estão fazendo. Infelizmente a realidade é essa.

Grande abraço,

Ahhhhhh saquei.

Nenhum dos livros que tive acesso citou deste pequeno GRANDE detalhe, rsrs...Valeu pelo tok!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...