Jump to content

Recuperar dados da pesquisa


John Hebert Trindade
Go to solution Solved by John Hebert Trindade,

Recommended Posts

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? 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • Solution

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

Link to comment
Share on other sites

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.