John Hebert Trindade Posted December 3, 2023 at 05:46 PM Report #632294 Posted December 3, 2023 at 05:46 PM 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?
Ivo Vicente Posted December 3, 2023 at 10:07 PM Report #632295 Posted December 3, 2023 at 10:07 PM (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 December 3, 2023 at 10:10 PM by Ivo Vicente Feito é melhor que perfeito
John Hebert Trindade Posted December 5, 2023 at 12:09 PM Author Report #632318 Posted December 5, 2023 at 12:09 PM 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.
Ivo Vicente Posted December 5, 2023 at 02:43 PM Report #632321 Posted December 5, 2023 at 02:43 PM Não precisas de remover, é mais útil partilhar a solução para o caso de acontecer a outro utilizador. Feito é melhor que perfeito
Solution John Hebert Trindade Posted December 5, 2023 at 05:25 PM Author Solution Report #632324 Posted December 5, 2023 at 05:25 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now