Ir para conteúdo

Arquivado

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

gedmilson

[Resolvido] Mensagem de Erro

Recommended Posts

Já olhei em todo o codigo mas não consigo encontrar a solução dessa mensagem:

 

Catchable fatal error: Argument 1 passed to UsuarioController::RetornarUsuarios() must be an instance of string, string given, called in C:\wamp\www\Site_Vereadores\Admin-bc\View\UsuarioView\UsuarioView.php on line 49 and defined in C:\wamp\www\Site_Vereadores\Controller\UsuarioController.php on line 23

 

se alguém já passou por esse problema por favor me digam como conseguiram resolver.

estou tentando migrar para o padrao MVC.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a mensagem diz que tem que ser passada uma instância de uma string e está sendo passada uma string. tem que ver aí o que é essa string que tá sendo passada no lugar da instância.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou mostrar o que foi feito onde indica o erro

 

    public function RetornarUsuarios(string $termo, int $tipo) {
        if ($termo != "" && $tipo >= 1 && $tipo <= 4) {
            echo "ok";
            return $this->usuarioDAO->RetornarUsuarios($termo, $tipo);
        } else {
            return null;
        }
    }

essa é a outra parte que correlaciona esse código

    public function RetornarUsuarios(string $termo, int $tipo) {
        try {
            $sql = "";
            switch ($tipo) {
                case 1:
                    $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE nome LIKE :termo ORDER BY nome ASC";
                    break;
                case 2:
                    $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE email LIKE :termo ORDER BY nome ASC";
                    break;
                case 3:
                    $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE cpf LIKE :termo ORDER BY nome ASC";
                    break;
                case 4:
                    $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE usuario LIKE :termo ORDER BY nome ASC";
                    break;
            }
            $param = array(
                ":termo" => "%{$termo}%"
            );
            $dataTable = $this->pdo->ExecuteQuery($sql, $param);
            $listaUsuario = [];
            foreach ($dataTable as $resultado) {
                $usuario = new Usuario();
                $usuario->setCod($resultado["cod"]);
                $usuario->setNome($resultado["nome"]);
                $usuario->setUsuario($resultado["usuario"]);
                $usuario->setStatus($resultado["status"]);
                $usuario->setPermissao($resultado["permissao"]);
                
                $listaUsuario[] = $usuario;
            }
            return $listaUsuario;
        } catch (PDOException $ex) {
            if ($this->debug) {
                echo "ERRO: {$ex->getMessage()} LINE: {$ex->getLine()}";
            }
            return null;
        }
    }

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a função code do forum para colocar o código formatado como código pra ajudar na hora de ler. é só selecionar o código, clicar em <> e escolher a linguagem PHP e clicar em Inserir. isso ajuda demais na hora da gente ler. não sei como que tá a parte de conexão com o banco mas talvez vai ter que passar a variável dela como public antes do restante aí tipo se é

 

$con = new PDO...

 

botar assim

public function RetornarUsuarios(string $termo, int $tipo) {
    public $con;
    ...

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, marsolim disse:

use a função code do forum para colocar o código formatado como código pra ajudar na hora de ler. é só selecionar o código, clicar em <> e escolher a linguagem PHP e clicar em Inserir. isso ajuda demais na hora da gente ler. não sei como que tá a parte de conexão com o banco mas talvez vai ter que passar a variável dela como public antes do restante aí tipo se é

Muito obrigado pela dica esse é o código do banco de dados.

12 minutos atrás, marsolim disse:

$con = new PDO...

 

botar assim


public function RetornarUsuarios(string $termo, int $tipo) {
    public $con;
    ...

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa foi a ligação que fiz com o banco de dados:

 

    public function getConnection() {
        try {
            if (self::$connection == null) {
                self::$connection = new PDO("mysql:host={$this->server};dbname={$this->database};charset=utf8", $this->user, $this->password);
                self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                self::$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
                self::$connection->setAttribute(PDO::ATTR_PERSISTENT, true);
            }
            return self::$connection;
        } catch (PDOException $ex) {
            if ($this->debug) {
                echo "<b>Error on getConnection(): </b>" . $ex->getMessage() . "<br/>";
            }
            die();
            return null;
        }
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comentei uma partes do código e funcionou mas não consigo fazer as partes comentadas funcionarem.

Tem como vocês darem uma olhadinha e me dizerem o que estou fazendo de errado?

 

Banco:


 

class Banco {
    private static $connection;
    private $debug;
    private $server;
    private $user;
    private $password;
    private $database;
    public function __construct() {
        $this->debug = true;
        $this->server = "localhost";
        $this->user = "root";
        $this->password = "";
        $this->database = "brasilclassificados";
    }
    /**
     * Create a database connection or return the connection already open using Singletion Design Patern
     * @return PDOConnection|null
     */
    public function getConnection() {
        try {
            if (self::$connection == null) {
                self::$connection = new PDO("mysql:host={$this->server};dbname={$this->database};charset=utf8", $this->user, $this->password);
                self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                self::$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
                self::$connection->setAttribute(PDO::ATTR_PERSISTENT, true);
            }
            return self::$connection;
        } catch (PDOException $ex) {
            if ($this->debug) {
                echo "<b>Error on getConnection(): </b>" . $ex->getMessage() . "<br/>";
            }
            die();
            return null;
        }
    }

 

UsuarioDAO

    public function RetornarUsuarios(/*string $termo, int $tipo*/) {
        try {
            $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario";
            // switch ($tipo) {
            //     case 1:
            //         $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE nome LIKE :termo ORDER BY nome ASC";
            //         break;
            //     case 2:
            //         $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE email LIKE :termo ORDER BY nome ASC";
            //         break;
            //     case 3:
            //         $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE cpf LIKE :termo ORDER BY nome ASC";
            //         break;
            //     case 4:
            //         $sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE usuario LIKE :termo ORDER BY nome ASC";
            //         break;
            // }
            // $param = array(
            //     ":termo" => "%{$termo}%"
            // );
            $dataTable = $this->pdo->ExecuteQuery($sql/*, $param*/);
            $listaUsuario = [];
UsuarioController

 public function RetornarUsuarios(/*string $termo, int $tipo*/) {
        
/*        if ($termo != "" && $tipo >= 1 && $tipo <= 4) {*/
            return $this->usuarioDAO->RetornarUsuarios($termo, $tipo);
/*        } else {
            return null;
        }*/
    }

UsuarioView

 

$listaUsuariosBusca = $usuarioController->RetornarUsuarios(/*$termo, $tipo*/);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

UsuarioController

 public function RetornarUsuarios(/*string $termo, int $tipo*/) {
        
/*        if ($termo != "" && $tipo >= 1 && $tipo <= 4) {*/
            return $this->usuarioDAO->RetornarUsuarios($termo, $tipo);
/*        } else {
            return null;
        }*/
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que não passa o tipo diretamente pra não precisar de switch e coisas que tais? aí pode usar só uma linha sql

 

$sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE '$tipo' LIKE :termo ORDER BY nome ASC";

 

ou pode botar os tipos numa array e usar o índice da array pra passar o tipo pra consulta


 

$arr_tipo = array('nome', 'email, 'cpf', 'usuario');
$ret_tipo = $arr_tipo[$tipo - 1];

$sql = "SELECT cod, nome, usuario, status, permissao FROM usuario WHERE '$ret_tipo' LIKE :termo ORDER BY nome ASC";

só aí já enxuga um pouco o código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notei que está utilizando o mesmo nome de função

 public function RetornarUsuarios(string $termo, int $tipo)

para rotinas de código diferentes, não teria que ter nomes diferentes para cada rotina de função?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tem uns 20 anos que eu não programo absolutamente nada. Eu estudei programação de computadores foi na década de 80.  Atualmente eu estou tentando aprender PHP, Java e Python. E tentando me lembrar do C e C++.  Em 2015/2016 estudei o HTML5 com CSS3 e o Bootstrap.

2 minutos atrás, gedmilson disse:

Então quer dizer que isso pode está causando o erro? ok vou mudar

 

 

Eu já programei em PASCAL ná década de 80, lembrei que no PASCAL a rotina de lógica de função tem que ter nomes diferentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, gedmilson disse:

Faz mais ou menos esse tempo que ando apanhando no ramo da programação

 

 

Quando eu consegui resolver um problema técnico com projeto de telecomunicação e projeto de CFTV, eu ganhei do meu ex-chefe uma promoção de cargo com aumento de salário (1996) e desde então eu não pensei mais em programação de computadores.  Meu foco tem sido Servidor Windows e suporte técnico-administrativo para advogados, contadores, recursos humanos, etc.

Mas o pessoal do trabalho andou acabando com a minha paciência, aturei eles de 1992 até 2014, em 2014 pedi demissão.

Meu stress do ex-emprego foi todo embora.  Agora estou com o meu cérebro bom para estudar programação de novo.

Eu achei parte da sintaxe da rotina de função que usou nesse seu código, muito semelhante a rotina de função do PASCAL. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo..

Estou tentando criar um site que fiscalize o trabalho dos vereadores e faça o povo votar em seus projetos.

o voto de cada cidadão entraria como um abaixo assinado para depois ser votado pelos vereadores.

O problema é que não estou nem conseguindo inserir uma simples consulta no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um teste trocando o nome da função,  porque a função fica na memória na hora da execução do software,

e você está usando códigos diferentes para cada função.  Isso pode estar criando um loop infinito em algo.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei mudar mas continua aparecendo a mesma mensagem de erro.

 

Catchable fatal error: Argument 1 passed to UsuarioController::RetornaUsuar() must be an instance of string, string given, called in C:\wamp\www\Site_Vereadores\Admin-bc\View\UsuarioView\UsuarioView.php on line 60 and defined in C:\wamp\www\Site_Vereadores\Controller\UsuarioController.php on line 23

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites
32 minutos atrás, gedmilson disse:

tentei mudar mas continua aparecendo a mesma mensagem de erro.

 

Catchable fatal error: Argument 1 passed to UsuarioController::RetornaUsuar() must be an instance of string, string given, called in C:\wamp\www\Site_Vereadores\Admin-bc\View\UsuarioView\UsuarioView.php on line 60 and defined in C:\wamp\www\Site_Vereadores\Controller\UsuarioController.php on line 23

 

 

Acho que eu já achei a causa do erro = C:\wamp\www\Site_Vereadores\Admin-bc\View\UsuarioView\UsuarioView.php

 

Está com o IIS instalado no seu computador?  

 

Tem algum domínio de internet que seja seu?  para você poder testar o código online?  

 

cria uma pasta dentro do domínio de internet para uso com testes online.  

Esse erro pelo que eu li e entendi ele é falha de comunicação com o servidor de rede.

A sua máquina utilizada é um servidor windows? servidor linux? ou máquina windows comum?

Em servidor Windows e máquina Windows comum tem que ter o IIS instalado.

 

Internet Information Services (IIS) 8.0 Express

https://www.microsoft.com/pt-br/download/details.aspx?id=34679

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Wilherme
      Boa tarde galera, preciso de uma ajuda,
       
      Tenho um gráfico no meu Power Bi porem apresenta o erro abaixo:
       

       
      já habilitei as funções porém ainda com erro.
       
       
      Obrigado.
    • Por 4Unknow
      Bom dia comunidade Imasters.

      Venho aqui tratar de um problema dúvida que estou tendo com um layout que estou tentando usar o formulário php dele.
      Quando clico em enviar ele me enviar para um arquivo .php  (assets/vendor/simple-forms/sendmail.php)

      Ele não envia o e-mail, acredito que deveria aparecer uma mensagem que o contato foi enviado corretamente.
      Vou deixar os arquivos aqui em anexo quem puder me ajudar nessa, ficaria muito grato.
       
      Link Website (wetransfer.com)
    • Por Algorithm
      Olá a todos
       
      Eu estou codificando um exemplo de uso do GraphQL com Nodejs, mas eu estou recebendo um erro de syntax relacionado a [ : ] [ Dois Pontos ], mas eu comparei meu codigo, com o da documentação oficial e esta tudo certo. Será que alguem, conseguiria achar o erro ?
       
      OBS: Esta incluso neste post [ Exemplo Documentação, Meu Exemplo, Mensagem de Erro, Código Completo ]
       
      Exemplo Documentação
      module.exports = /* GraphQL */ ` type Client { id: ID! name: String age: Int products: [Product] } type Query { clients: [Client] client(id: ID!): Client } type Mutation { addClient(name: String!, age: Int!): Client } `  
      Meu Exemplo
      const typeDefs = ` type Pessoa { _id: ID _codigo: Float _nome: String _idade: Int _email: String } input inputPessoa { _codigo: Float _nome: String _idade: Int _email: String } type Query { resposta: String saudacao(nome: String!): String findPessoaOne(codigo: Float): Pessoa findPessoa(input: inputPessoas): [Pessoa] } type Mutation { insertPessoa(input: inputPessoa): Pessoa updatePessoa(codigo: Float, input: inputPessoa) Pessoa deletePessoa(codigo: Float) [Pessoa] } `;  
      Mensagem de Erro
      C:\Users\Core\node\node_modules\graphql\language\parser.js:1413 throw (0, _syntaxError.syntaxError)( ^ GraphQLError: Syntax Error: Expected ":", found Name "Pessoa". at syntaxError (C:\Users\Core\node\node_modules\graphql\error\syntaxError.js:15:10) at Parser.expectToken (C:\Users\Core\node\node_modules\graphql\language\parser.js:1413:40) at Parser.parseFieldDefinition (C:\Users\Core\node\node_modules\graphql\language\parser.js:847:10) at Parser.optionalMany (C:\Users\Core\node\node_modules\graphql\language\parser.js:1510:28) at Parser.parseFieldsDefinition (C:\Users\Core\node\node_modules\graphql\language\parser.js:831:17) at Parser.parseObjectTypeDefinition (C:\Users\Core\node\node_modules\graphql\language\parser.js:803:25) at Parser.parseDefinition (C:\Users\Core\node\node_modules\node_modules\graphql\language\phql\language\parser.js:171:23) at Parser.many (C:\Users\Core\node\node_modules\graphql\language\parser.js:1529:26) at Parser.parseDocument (C:\Users\Core\node\node_modules\graphql\language\parser.js:121:25) at parse (C:\Users\Core\node\node_modules\graphql\language\parser.js:32:17) { path: undefined, locations: [ { line: 26, column: 57 } ], extensions: [Object: null prototype] {} }  
      Codigo Completo
      // Requires const express = require('express'); const GraphQL_HTTP = require('express-graphql'); const { mergeSchemas } = require('@graphql-tools/schema'); // Run // const connect = MongoClient.connect(''); const app = express(); const getCode = () => { return 10 }; // GraphQL Definitions || Query and Mutation const typeDefs = ` type Pessoa { _id: ID _codigo: Float _nome: String _idade: Int _email: String } input inputPessoa { _codigo: Float _nome: String _idade: Int _email: String } type Query { resposta: String saudacao(nome: String!): String findPessoaOne(codigo: Float): Pessoa findPessoa(input: inputPessoas): [Pessoa] } type Mutation { insertPessoa(input: inputPessoa): Pessoa updatePessoa(codigo: Float, input: inputPessoa) Pessoa deletePessoa(codigo: Float) [Pessoa] } `; // Functions const resolvers = { Query: { resposta: function() { return `GraphQL Conectado com Sucesso...`; }, saudacao: function(_, args) { return `Olá ${args.nome}! Seja Muito Bem Vindo(a) a GraphQL!!!! ` }, findPessoaOne: function(_, args) { return db.collection('GraphQL-Pessoa').findOne({codigo: args.codigo}) .then((result) => { return result; }); }, findPessoa: function(_, args) { return db.collection(`GraphQL-Pessoa`).find(args.input).toArray() .then((result) => { return result; }); }, Mutation: { insertPessoa: function(_, args) { args.input.codigo = getCode(); return db.collection(`GraphQL-Pessoa`).insertOne(args.input) .then((result) => { return result.ops[0]; }); }, updatePessoa: function(_, args) { return db.collection('GraphQL-Pessoa').updateOne({codigo: args.codigo}, {$set: args.input}) .then((result) => { if(result.result.n > 0) return `Registro Alterado com Sucesso!`; else return `Ocorreu um erro ao alterar o registro`; }); }, deletePessoa: function(_, args) { return db.collection(`GraphQL-Pessoa`).deleteOne({codigo: args.codigo}) .then((result) => { if(result.result.n > 0) return `Registro Deletado com Sucesso!`; else return `Ocorreu um erro ao deletar o registro`; }); } } } }; const schema = mergeSchemas({ typeDefs: typeDefs, resolvers: resolvers }) // Listen app.listen(3005, () => { console.log(`Servidor Rodando na Porta 3005`); })  
       
      Obrigado
    • Por Kefatif
      Prezados, bom dia.
       
      Preciso da ajuda dos Srs!
       
      Não estou conseguindo localizar o erro no arquivo abaixo.
       
      Ao clicar no botão ele me envia a mensagem: "Erro ao registrar estoque !"
       
      Poderiam me ajudar?
       
      Agradeço desde já pela ajuda.
       
      <?php include_once 'autenticacao.php'; include_once'../../conexao.php'; include_once '../../funcoes.php'; include_once '../../decodepost.php'; if( !isset($_POST["cont"]) or !isset($_SESSION["cnes"]) ){ ECHO "Erro"; }else{ $cnes = $_SESSION["cnes"]; $idusuario = $_SESSION["idusuario"]; $cont = $_POST["cont"]; $sql = "insert into LESAO_ESTOQUE values(null,curdate(), '".$cnes."',".$idusuario.")"; if(mysqli_query($con, $sql)){ $idestoque = mysqli_insert_id($con); $coberturas = 0; for($i=1 ; $i<=$cont; $i++){ if(isset($_POST[$i])){ if($_POST[$i]<=0){ }else{ $qtd = $_POST[$i]; $sqlqtd = "insert into LESAO_REL_ESTOQUE_COBERTURAS values(".$idestoque.", ".$i.", ".$qtd.", ".$idusuario.")"; if(mysqli_query($con, $sqlqtd)){ $coberturas = $coberturas+1; } } } } $grav = "Registrado estoque de ".$coberturas." coberturas !"; }else{ $grav = "Erro ao registrar estoque !"; } //5- Fechar a conexão mysqli_close($con); ?> <script> alert('<?php echo $grav; ?>'); location.href="estoque-registrar.php"; </script> <?php } ?>  
    • Por Sapinn
      Opa galera, tudo blz? Recentemente comecei a estudar reactjs e para praticar estou fazendo o clone da Netiflix. Mas estou com um erro ao tentar chamar as imagens da API do TMDB o erro é: 
      TypeError: Cannot read properties of undefined (reading 'results')
       
      Já tentei refazer o código varias vezes mas não consegui resolver o problema. Vou postar o resto do código aqui
       
      App.js:
      import React, {useEffect, useState} from 'react'; import Tmdb from './Tmdb'; import MovieRow from './components/MovieRow'; const App = () =>{   const [movieList, setMovieList] = useState([]);   useEffect(()=>{     const loaddAll = async () =>{       let list = await Tmdb.getHomeList();       setMovieList(list)     }     loaddAll();   }, []);   return(       <div className="page">           <section className="lists">               {movieList.map((item, key)=>(                     <MovieRow key={key} title={item.title} items={item.items}/>               ))}                         </section>       </div>   ); } export default App; Consumir a api:
      Tmdb.js:
      const API_KEY = '******************************'; const API_BASE = 'https://api.themoviedb.org/3'; const basicFetch = async (endpoint) =>{     const req = await fetch(`${API_BASE}${endpoint}`)     const json = await req.json();     return json; } export default {     getHomeList: async () =>{         return [             {                 slug: 'originals',                 title: 'Originais da Netflix',                 items: await basicFetch(`/discover/tv?with_networks=213&language=pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'trending',                 title: 'Recomendados para você',                 item: await basicFetch(`/trending/all/week?language=pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'toprated',                 title: 'Em alta',                 item: await basicFetch(`/movie/top_rated?language=pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'action',                 title: 'Ação',                 item: await basicFetch(`/discover/movie?width_genres=28&language-pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'comedy',                 title: 'Comédia',                 item: await basicFetch(`/discover/movie?width_genres=35&language-pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'horror',                 title: 'Terror',                 item: await basicFetch(`/discover/movie?width_genres=27&language-pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'romance',                 title: 'Romance',                 item: await basicFetch(`/discover/movie?width_genres=10749&language-pt-BR&api_key=${API_KEY}`)             },             {                 slug: 'documentary',                 title: 'Documentários',                 item: await basicFetch(`/discover/movie?width_genres=99&language-pt-BR&api_key=${API_KEY}`)             },                     ]     } }  
       
      Componente para mostrar os filmes:
      MovieRow.js:
      import React from "react"; import './MovieRow.css'; export default ({title, items}) =>{         return (         <div>             <h2>{title}</h2>             <div className="moviewRow--listarea">                 {items.results.length > 0 && items.results.map((key, item)=>(                     <img src={`https://image.tmdb.org/t/p/w300${item.poster_path}`} />                 ))}             </div>         </div>     ); }  
      Se alguém pudesse me ajudar eu ficaria muito grato.
×

Informação importante

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