Jump to content

Recuperar dados da pesquisa


Go to solution Solved by John Hebert Trindade,

Recommended Posts

Posted

Boa tarde,

Tenho uma model editar, nesta model recupero o resultado do banco de dados.

public function viewTecnico(int $id): void
  {
    $this->id = $id;
    $viewTecnico = new \App\adms\helpers\AdmsRead();
    $viewTecnico->fullRead(
      "SELECT id, adms_genero_id, adms_estado_civil_id, name, morada, localidade, codigo_postal, adms_distrito_id, adms_concelho_id, adms_freguesia_id, name_pai, name_mae, adms_tipo_doc_id, numero_doc, adms_arquivo_id, data_emissao, data_validade, data_nasc, nif_pais, numero_nif, beneficiario1, beneficiario2, beneficiario3, telefone1, telefone2, telemovel, email, observacoes
                            FROM adms_tecnicos
                            WHERE id=:id
                            LIMIT :limit",
      "id={$this->id}&limit=1"
    );



    $this->resultBd = $viewTecnico->getResult();  <------ VALOR DEVOLVIDO AQUI 

                                                          
                                                          
    if ($this->resultBd) {
      $this->result = true;
    } else {
      $this->utils->setSessionMsg('Erro: Técnico Funerário não encontrado!', 'danger');
      //$_SESSION['msg'] = "<p class='alert-danger'>Erro: Usuário não encontrado!</p>";
      $this->result = false;
    }
  }

Depois tenho um outra função que deverá usar parte desta pesquisa para realizar outra pesquisa

  public function listSelectConcelho(): array
  {
    $list = new \App\adms\helpers\AdmsRead();
    $list->fullRead(
      "SELECT id id_conc, name_concelho
                     FROM adms_concelhos
                     WHERE adms_distrito_id=:adms_distrito_id
                     ORDER BY name_concelho ASC",
      
      
      
      <----- AQUI COLOCO O $THIS->RESULTBD na posíção 0 com o valor a recuperar
      "adms_distrito_id= {$this->resultBd[0]['adms_distrito_id']} "
      
      
      
      
    );
    $registry['conc'] = $list->getResult();

    $this->listRegistryAdd = ['conc' => $registry['conc']];

    return $this->listRegistryAdd;
  }

Na primeira pesquisa é devolvido o seguinte array no var_dump

$this->resultBd: Array

     ( [0] => Array

              ( [id] => 1

                 [adms_genero_id] => 1

                 [adms_estado_civil_id] => 5

                 [name] => José da Silva

                 [adms_distrito_id] => 1

                 [adms_concelho_id] => 3

                 [adms_freguesia_id] => 2

                  [adms_arquivo_id] => 3

                  [data_emissao] => 2023-08-20 00:00:00

                  [data_validade] => 2026-08-20 00:00:00

                  [beneficiario2] =>

                  [beneficiario3] =>

                   [observacoes] =>

) )

Mas recebo os seguinte erros:

Fatal error: Uncaught Error: Typed property App\adms\Models\tecnico_funerario\AdmsEdit::$resultBd must not be accessed before initialization in /Applications/XAMPP/xamppfiles/htdocs/adm/app/adms/Models/tecnico_funerario/AdmsEdit.php on line 209

Error: Typed property App\adms\Models\tecnico_funerario\AdmsEdit::$resultBd must not be accessed before initialization in /Applications/XAMPP/xamppfiles/htdocs/adm/app/adms/Models/tecnico_funerario/AdmsEdit.php on line 209

O que estou fazendo de errado? 

Posted (edited)

Olá, 

É possivel ver o ficheiro AdmsEdit.php ou a linha 209 para termos mais detalhes?

O metodo construtor em AdmsEdit.php não recebe nenhuma variavel? 

O mais provavel teres alguma propriedade a null ou que devia ser definida no construtor ou inicializada com um valor dentro do AdmsEdit.php

Edited by Ivo Vicente

Feito é melhor que perfeito

Posted

Olá @Ivo Vicente agradeço imenso mas irei retirar o post, porque foi um erro meu e já vi o que fiz errado, após você ler diga algo para remover. Mas agradeço imenso.

Posted

Não precisas de remover, é mais útil partilhar a solução para o caso de acontecer a outro utilizador.

Feito é melhor que perfeito

  • Solution
Posted

O sistema tinha toda a razão em dizer que eu não poderia usar antes de a inicializar.

Porque na função anterior eu chamava sem enviar dados nenhum.

Antes eu coloquei assim:

private function viewEditTecnico(): void
  {
    $this->data['sidebarActive'] = "list-tecnicos";

    $listSelect = new \App\adms\Models\tecnico_funerario\AdmsEdit();
    $this->data['genero'] = $listSelect->listSelectGenero();

    $this->data['distrito'] = $listSelect->listSelectDistrito(NÃO ENVIEI O VALOR);

    $this->data['concelho'] = $listSelect->listSelectConcelho(NÃO ENVIEI O VALOR);

    $this->data['freguesia'] = $listSelect->listSelectFreguesia(NÃO ENVIEI O VALOR);

    $loadView = new \Core\ConfigView("adms/Views/tecnico_funerario/edit", $this->data);
    $loadView->loadView();
  }

E o correcto é:

private function viewEditTecnico(): void
  {
    $this->data['sidebarActive'] = "list-tecnicos";

    $listSelect = new \App\adms\Models\tecnico_funerario\AdmsEdit();
    $this->data['genero'] = $listSelect->listSelectGenero();

    $this->data['distrito'] = $listSelect->listSelectDistrito();

    $this->data['concelho'] = $listSelect->listSelectConcelho($this->data['form'][0]['adms_distrito_id']);

    $this->data['freguesia'] = $listSelect->listSelectFreguesia($this->data['form'][0]['adms_concelho_id']);

    $loadView = new \Core\ConfigView("adms/Views/tecnico_funerario/edit", $this->data);
    $loadView->loadView();
  }

assim já não deu o erro e as funções acima funcionaram

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.