Ir para o conteúdo
alphasil

Ajuda numa dúvida

Mensagens Recomendadas

alphasil

Boa noite

Tenho aqui uma dúvida que gostaria de tirar já que nunca fui confrontado com uma situação dessas.

Tenho um formulário que me manda as variáveis para esta função.

public function novaAula($atividade, $turmas, $local, $dataAula, $inicio, $fim, $fundamentacao, $observacoes, $id_professor){
    try{
	    $stmt = $this->db->prepare("INSERT INTO `aulas_exterior` (`atividade`,`id_turma`,`local`,`data_aula`,`inicio`,`fim`,`fundamentacao`,`observacoes`)
						    VALUES (:atividade,:id_turma,:local,:data_aula,:inicio,:fim,:fundamentacao,:observacoes);");
	    $stmt->bindparam(":atividade", $atividade);
	    $stmt->bindparam(":local", $local);
	    $stmt->bindparam(":data_aula", $dataAula);
	    $stmt->bindparam(":inicio", $inicio);
	    $stmt->bindparam(":fim", $fim);
	    $stmt->bindparam(":fundamentacao", $fundamentacao);
	    $stmt->bindparam(":observacoes", $observacoes);
	    $turma = explode(',', $turmas);
	    foreach ($turma as $id_turma) {
		    $stmt->bindParam(':id_turma', $id_turma, PDO::PARAM_INT);
		    $result = $stmt->execute();
		    $idAula = $this->db->lastInsertId(); //Como pode ser escolhida mais do que uma turma está num ciclo
		    $this->insertPedidoByLastId($idAula,$id_professor, $id_turma); //Guarda na tabela relacional o id_aula, id_prof, id_turma
		    $nome_turma = $this->getTurmaById($id_turma); // Vai buscar o nome da turma pelo ID
		    $nome_professor = $this->getNomeById($id_professor);// Vai buscar o nome do professor pelo ID
		    $this->setTurma($nome_turma); //Uso set para definir noma da turma usando o Setter
		    $this->setProfessor(($nome_professor));//Uso set para definir noma do professor usando o Setter
		    $this->getTurmaeProfessor(); //Chamo a funcao para ter os nomes
	    }
	    if (!$result) {
		    print_r($stmt->errorInfo());
		    return array('status' => 'error', 'message' => 'Problema ao gravar esta nova atividade...');
	    }
	    else{
		    return array('status' => 'success', 'message' => 'O pedido foi criado com sucesso...');
	    }
    } catch (Exception $ex) {
	    echo $ex->getMessage();
    }
   }

Passando para a última função comentada pretendo ter aqui o nomes através do "Getter"

public function getTurmaeProfessor(){
    $professor = $this->getProfessor(); //Receber o nome do professor através do Getter
    $turma = $this->getTurma(); //Receber o nome da turma através do Getter
    $arr = array($professor, $turma); //Cria um array para guardar os dados
    print_r($arr);
   }

O print_r dá-me

Array ( [0] => Nome do professor [1] => 5ºA )

Até aqui tudo funciona bem....agora a dúvida é como passar isso quando esta última função é chamada noutro ficheiro.

Isto é, quero num ficheiro receber os dados desta função public function getTurmaeProfessor()

Estou a tentar fazer assim mas não dá

$dados = $esmaior->getTurmaeProfessor();
if(!$dados){
 echo "sem dados";
}
print_r($dados);

Não me batam muito sff :cheesygrin: :cheesygrin:

Obrigado

Editado por alphasil

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

boas

grava o array numa sessão

ou

como está a utilizar classe, numa propriedade publica.

cumps

acao

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

quando dizes noutro ficheiro estás a referir-te a outro pedido ou simplesmente outro ficheiro que chama a função ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alphasil

Oi Happy

O outro ficheiro que digo é um ficheiro que vai ser PDF, mas tenho de recolher o nome do professor e a turma em string não em int através da função function getTurmaeProfessor()

Tinha começado assim

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include_once '../db/dbconfig.php';
$esmaior = new ESMAIOR($DB_con);
require_once __DIR__ . '/../vendor/autoload.php';
set_include_path('../src/' . PATH_SEPARATOR . get_include_path());
$dados = $esmaior->getTurmaeProfessor();
   if(!$dados){
    echo "sem dados";
   }
   print_r($dados);

mas o array aparece vazio quando esta função é chamada dentro deste novo ficheiro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

qual o código de retorno da função ?

por outras palavras : em que parte do teu código estás a retornar os dados da função ?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alphasil

Uppsss

Esqueci de o pôr...

Eu tinha isso

$professor = $this->getProfessor(); //Receber o nome do professor através do Getter
	    $turma = $this->getTurma(); //Receber o nome da turma através do Getter
	    $arr = array($professor, $turma); //Cria um array para guardar os dados
return $arr;

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

pois ... mas agora eu não sei o que tens agora e se já seuqer testaste depois de fazeres essa alteração ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alphasil

Eu tinha assim, mas segui o conselho do acao em que usei $_SESSION e funciona mas gostava de aprender como poderia fazer da forma como tinha inicialmente

Que me aconselhas?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

pois ... mas agora eu não sei o que tens agora e se já seuqer testaste depois de fazeres essa alteração ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alphasil

O que tenho agora

public function novaAula($atividade, $turmas, $local, $dataAula, $inicio, $fim, $fundamentacao, $observacoes, $id_professor){
    try{
	    $stmt = $this->db->prepare("INSERT INTO `aulas_exterior` (`atividade`,`id_turma`,`local`,`data_aula`,`inicio`,`fim`,`fundamentacao`,`observacoes`)
													    VALUES (:atividade,:id_turma,:local,:data_aula,:inicio,:fim,:fundamentacao,:observacoes);");
	    $stmt->bindparam(":atividade", $atividade);
	    $stmt->bindparam(":local", $local);
	    $stmt->bindparam(":data_aula", $dataAula);
	    $stmt->bindparam(":inicio", $inicio);
	    $stmt->bindparam(":fim", $fim);
	    $stmt->bindparam(":fundamentacao", $fundamentacao);
	    $stmt->bindparam(":observacoes", $observacoes);
	    $turma = explode(',', $turmas);
	    foreach ($turma as $id_turma) {
		    $stmt->bindParam(':id_turma', $id_turma, PDO::PARAM_INT);
		    $result = $stmt->execute();
		    $idAula = $this->db->lastInsertId(); //Como pode ser escolhida mais do que uma turma está num ciclo
		    $this->insertPedidoByLastId($idAula,$id_professor, $id_turma); //Guarda na tabela relacional o id_aula, id_prof, id_turma
		    $nome_turma = $this->getTurmaById($id_turma); // Vai buscar o nome da turma pelo ID
		    $nome_professor = $this->getNomeById($id_professor);// Vai buscar o nome do professor pelo ID
		    $this->getTurmaeProfessor($idAula, $nome_professor, $nome_turma, $atividade, $local, $dataAula,$inicio, $fim, $fundamentacao, $observacoes); //Chamo a funcao para ter os nomes
	    }
	    if (!$result) {
		    print_r($stmt->errorInfo());
		    return array('status' => 'error', 'message' => 'Problema ao gravar esta nova atividade...');
	    }
	    else{
		    return array('status' => 'success', 'message' => 'O pedido foi criado com sucesso...');
	    }
    } catch (Exception $ex) {
	    echo $ex->getMessage();
    }
   }

public function getTurmaeProfessor($idAula, $nome_professor, $nome_turma, $atividade, $local, $dataAula,$inicio, $fim, $fundamentacao, $observacoes){
    $professor = $this->getProfessor(); //Receber o nome do professor através do Getter
    $turma = $this->getTurma(); //Receber o nome da turma através do Getter
    $_SESSION['professor'] = $nome_professor;
    $_SESSION['turma'] = $nome_turma;
    $_SESSION['idAula'] = $idAula;
    $_SESSION['atividade'] = $atividade;
    $_SESSION['local'] = $local;
    $_SESSION['data'] = $dataAula;
    $_SESSION['inicio'] = $inicio;
    $_SESSION['fim'] = $fim;
    $_SESSION['fundamentacao'] = $fundamentacao;
    $_SESSION['observacoes'] = $observacoes;
    return true;
   }

E o ficheiro onde quero receber está assim

error_reporting(E_ALL);
ini_set('display_errors', 1);
include_once '../db/dbconfig.php';
$esmaior = new ESMAIOR($DB_con);
require_once __DIR__ . '/../vendor/autoload.php';
set_include_path('../src/' . PATH_SEPARATOR . get_include_path());
$professor = $_SESSION['professor'];
$turma = $_SESSION['turma'];
$idAula = $_SESSION['idAula'];
$atividade = $_SESSION['atividade'];
$local = $_SESSION['local'];
$inicio = $_SESSION['inicio'];
$fim = $_SESSION['fim'];
$fundamentacao = $_SESSION['fundamentacao'];
$observacoes = $_SESSION['observacoes'];
$data_aula = $_SESSION['data'];

Dentro do html...depois do ajax success, chamo a página onde vou receber essas variaveis

<script type="application/javascript">
   function pedidoAulaExterna() {
    window.open("http://esmaior.pt/miga/pdf/pdfAulas.php","_blank");
   }
</script>

Que achas??

E agora estou com um problema que não foi pensado que me surgisse, mas primeiro diz-me o que achas?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

quando dizes noutro ficheiro estás a referir-te a outro pedido ou simplesmente outro ficheiro que chama a função ?

responde a isto, porque ainda não deu para perceber o que tens/estás a fazer


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alphasil

ok vou tentar explicar

Como tinha, o outro ficheiro chamava a funcão, mas o array vinha vazio apesar de dentro da função estar com dados, estava assim o outro ficheiro que chamaria a função

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include_once '../db/dbconfig.php';
$esmaior = new ESMAIOR($DB_con);
require_once __DIR__ . '/../vendor/autoload.php';
set_include_path('../src/' . PATH_SEPARATOR . get_include_path());
$dados = $esmaior->getTurmaeProfessor();
   if(!$dados){
    echo "sem dados";
   }
   print_r($dados);
//print_r($dados) gives me - Array ( [0] => [1] => )
Como tenho agora recebo os dados que estão armazenados na função mas não a chama visto que os dados estão guardados em sessão.

Este é um exemplo do meu ficheiro pdf

http://esmaior.pt//miga/pdf/2016-06-27_7%C2%BAB.pdf

Este é o meu ficheiro de gravação no ficheiro pdf

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include_once '../db/dbconfig.php';
$esmaior = new ESMAIOR($DB_con);
require_once __DIR__ . '/../vendor/autoload.php';
set_include_path('../src/' . PATH_SEPARATOR . get_include_path());
$professor = $_SESSION['professor'];
$turma = $_SESSION['turma'];
$idAula = $_SESSION['idAula'];
$atividade = $_SESSION['atividade'];
$local = $_SESSION['local'];
$inicio = $_SESSION['inicio'];
$fim = $_SESSION['fim'];
$fundamentacao = $_SESSION['fundamentacao'];
$observacoes = $_SESSION['observacoes'];
$data_aula = $_SESSION['data'];
$center = array('', '', '', 'justification' => 'center');
$pdf = new Cezpdf('a4', 'portrait');
$pdf->ezSetMargins(20, 20, 20, 20);
$pdf->ezStartPageNumbers(320, 20, 10, 'right', 'Página {PAGENUM} de {TOTALPAGENUM}');
$mainFont = 'Times-Roman';
$codeFont = 'fonts/Helvetica';
$pdf->selectFont($mainFont);
$pdf->openHere('Fit');
$escola = utf8_decode("<b>N.º do Código do Estabelecimento de Ensino 151567 </b>\n");
$contatos = utf8_decode("<b>N.º de Telefone: 258800020 / Fax: 258800029</b>\n");
$info = utf8_decode("<b>AVALIAÇÃO DA VISITA DE ESTUDO </b>\n");
$pdf->ezImage("../img/logo_esmaior.jpg", 0, 500, 'none', 'left');
$pdf->selectFont("fonts/Helvetica-Bold.afm");
$pdf->ezText($escola, 11, $center);
$pdf->ezText($contatos, 11, $center);
$pdf->setLineStyle(1, '', '', array());
$pdf->line(30, 700, 550, 700);
$pdf->ezText('Atividade no Exterior – Pedido de Autorização', 11, $center);
$pdf->rectangle(50, 30, 480, 625);
if ($atividade == "") {
   $pdf->setColor(1, 0, 0);
   $sem = "<b>Não existem pedidos</b>\n";
   $pdf->ezText($sem, 12, $center);;
} else {
   $pdf->addText(70, 635, 11, "Atividade:");
   $pdf->addText(70, 620, 11, "Turma:");
   $pdf->addText(70, 605, 11, "Local:");
   $pdf->addText(70, 590, 11, "Docente:");
   $pdf->addText(70, 575, 11, "Data:");
   $pdf->addText(70, 560, 11, "Início:");
   $pdf->addText(70, 545, 11, "Fim:");
   $pdf->addText(70, 530, 11, "Fundamentação:");
   $pdf->addText(70, 400, 11, "Observações:");
   $pdf->selectFont($codeFont);
   $pdf->addText(130, 635, 11, $atividade);
   $pdf->addText(115, 620, 11, $turma);
   $pdf->addText(110, 605, 11, $local);
   $pdf->addText(120, 590, 11, $professor);
   $pdf->addText(105, 575, 11, $data_aula);
   $pdf->addText(105, 560, 11, $inicio);
   $pdf->addText(95, 545, 11, $fim);
   $pdf->rectangle(100, 420, 375, 100);
   $pdf->addTextWrap(105, 510, 11, $fundamentacao, 350, 'full');
   $pdf->rectangle(100, 290, 375, 100);
   $pdf->addTextWrap(105, 380, 11, $observacoes, 350, 'full');
   $pdf->selectFont("fonts/Helvetica-Bold.afm");
   $pdf->addText(70, 250, 11, "Diretor:");
   $pdf->setColor(0.9,0.9,0.9);
   $pdf->filledRectangle(100, 180, 375, 60);
   $pdf->setColor(0, 0, 0);
   $pdf->selectFont($codeFont);
   $pdf->addText(105, 225, 11, "Despacho:");
   $pdf->addText(105, 200, 11, "Data: ___/___/______");
   $pdf->addText(280, 200, 11, "Assinatura: ______________________");
   $impresso = "<b>Impresso em:</b> " . date("d/m/Y - H:i");
   $pdf->addText(400, 35, 8, $impresso);
}
$pdfcode = $pdf->ezOutput();
$pdf_name = $data_aula . "_" . $turma . ".pdf";
$fp = fopen($pdf_name, 'wb');
fwrite($fp, $pdfcode);
fclose($fp);
$uploaddir = $_SERVER['DOCUMENT_ROOT'] . '/miga/pdf/';
$target_path = "/miga/pdf/" . basename($pdf_name);
try {
   $stmt = $DB_con->prepare("UPDATE `rel_turma_prof_aula` SET `path` = :path WHERE `id_aula` = :id_aula");
   $stmt->bindparam(":path", $target_path, PDO::PARAM_STR);
   $stmt->bindparam(":id_aula", $idAula, PDO::PARAM_INT);
   if (!$stmt->execute()) {
    print_r($stmt->errorInfo());
   } else {
    print_r("Tudo ok");
   }
} catch (PDOException $e) {
   echo $e->getMessage();
}
$pdf->ezStream();
 

Como vês está tudo em sessão agora

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alphasil

Boas

Se fosse como tinha inicialmente sim, era outro pedido.

Estava a fazer tudo mal da forma como quis implementar. A questão da Base de Dados estava certa, o problema é que ao depois de gravar na BD tinha uma função para ir buscar o nome do professor e a a turma em vez do id para preencher o pdf. Como é que ia abrir o pdf? Através deste código

$.ajax({
		    url: xxxxx',
		    type: 'POST',
		    data: $form.serialize(),
		    success: function (data) {
			    var result = data.status;
			    console.log(result);
			    if (result === 'success') {
				    $("#myModalAvaliacaoProjetos").modal('hide');
				    $('#success .modal-body').html('Informação: ' + data.message);
				    $('#success').modal('show');
				    criaPdfAtividades();
				    $('#success').on('hidden.bs.modal', function () {
					    window.location.reload(true);
				    });
			    }
			    else {
				    $("#myModalAvaliacaoProjetos").modal('hide');
				    $('#danger .modal-body').html('Informação: ' + data.message);
				    $('#danger').modal('show');
			    }
		    }
	    });

E isso estava errado por causa do ciclo, se fosse só um registo funcionava, como pode haver mais do que um, só fazia um pdf

Não sei se é isso que perguntas... :cheesygrin:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.