Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Fatal error: Uncaught Error: Call to undefined method

Bom dia. Fiz uma classe e um formulario para inserir representações de uma empresa. porém estou recebendo um erro. Já revirei o código mas não encontro o erro. Segue os códigos

classes/Representacao.php


<?php
    class Representacao
    {
        public function listar() 
        {
            $query = "SELECT nome, percentual FROM representacao";
            $conexao = new PDO('mysql:host=127.0.0.1;dbname=teste','master','senhapadrao');
            $resultado = $conexao->query($query);
            $lista = $resultado->fetchAll();
            return $lista;
        }

        public function inserir($nome, $percentual) 
        {
            $query = "INSERT INTO representacao (nome) VALUES ('{$nome}','{$percentual}')";
            $conexao = new PDO('mysql:host=186.202.152.62;dbname=tecnologia01','tecnologia01','brain987');
            $conexao->exec($query);
        }

    }

?>

representacao-inserir.php

<?php

    require_once 'classes/Representacao.php';

    $representacao = new Representacao();

    $nome = $_POST['nome'];
    $CNPJ = $_POST['percentual'];

    $representacao->inserir($nome,$percentual);

    header ('Location: representacao.php');

representacao.php

<?php require_once 'classes/Representacao.php' ?>

<!DOCTYPE HTML>
<html>

    <body class="is-preload">

    <?php
        $repres = new Representacao();
        $lista = $repres->listar();
    ?>

            <section id="main" class="wrapper">
                <div class="inner">
                <h2>REPRESENTAÇÕES</h2>
                    <div class="content">    
                        <h3>REPRESENTAÇÕES CADASTRADAS</h3>                        
                        <div class="table-wrapper">
                            <table>
                                <thead>
                                    <tr>
                                        <th>Nome</th>
                                        <th>%</th>
                                    </tr>
                                </thead>
                                <tbody>

                                    <?php foreach ($lista as $linha): ?>
                                    <tr>
                                        <td><?php echo $linha[0] ?></td>
                                        <td><?php echo $linha[1] ?></td>
                                    </tr>
                                    <tr>
                                        <td colspan=2>
                                            <a href="#" class="button">Editar</a>
                                            <a href="#" class="button primary">Remover</a></td>
                                    </tr>
                                    <?php endforeach ?>
                                </tbody>
                            </table>
                            <hr>
                        <h3>INSERIR NOVA REPRESENTAÇÃO</h3>                        
                        <form method="post" action="representacao-inserir.php">
                                <div class="row gtr-uniform">
                                    <div class="col-6 col-12-xsmall">
                                        <input type="text" name="nome" id="nome" value="" maxlenght=5 placeholder="Nome" />
                                    </div>
                                    <div class="col-6 col-12-xsmall">
                                        <input type="text" name="percentual" id="percentual" value="" size="5" placeholder="Percentual de comissão" />
                                    </div>
                                    <div class="col-12">
                                        <ul class="actions">
                                            <li><input type="submit" value="Inserir" class="primary" /></li>
                                        </ul>
                                    </div>
                                </div>
                            </form>    
                        </div>   
                    </div>
                </div>
            </section>

    </body>
</html>

Quando executo, recebo a seguinte mensagem: Fatal error: Uncaught Error: Call to undefined method Representacao::inserir() in /home/storage/localhost/public_html/representacao-inserir.php:10 Stack trace: #0 {main} thrown in /home/storage/localhost/public_html/representacao-inserir.php on line 10

3 respostas

No seu representacao-inserir.php, voce está chamando a funcão inserir passando ($nome, $percentual) mas acredito que voce deu o nome do percentual pra variavel $CNPJ.

logo deveria chamar inserir($nome,$CNPJ).

Estou aprendendo tambem mas acredito que deve ser isso..

Obrigado pela dica, já fiz a correção, porém o erro ainda persiste, com a mesma mensagem inclusive.

Fatal error: Uncaught Error: Call to undefined method Representacao::listar() in /home/storage/localhost/public_html/representacao.php:10 Stack trace: #0 {main} thrown in /home/storage/1/9e/6b/w01tecnologia/public_html/representacao.php on line 10

solução!

Descobri. o Programa de FTP estava colocando a classe fora da biblioteca classe.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software