ERRO Warning: call_user_func_array()
Pessoal estou com o seguinte erro:
Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'Prova' does not have a method 'questoes' in /home/xxxx/public_html/xx/core/classes/MainController.class.php on line 218
Como posso resolve-los? Abaixo há os meu códigos:
ProvaData.class.php:
<?php
//header('Content-Type: text/plain');
class Questionario {
public $codprova;
public $titulo;
public $perguntas = array();
static public function getByCodigo($codprova){
$pdo = new PDO('mysql:host=localhost;dbname=prova','prova','**********');
$prova = null;
$sql = 'SELECT pr.codprova,
pr.titulo,
pe.codpergunta,
pe.texto as pergunta,
pe.ordem as ordem_pergunta,
op.codopcao,
op.texto as opcao,
op.ordem as ordem_opcao,
op.correta
FROM prova pr
LEFT JOIN pergunta pe ON pe.codprova = pr.codprova
LEFT JOIN opcao op ON op.codpergunta = pe.codpergunta
WHERE pr.codprova = :codprova
ORDER BY pe.ordem, op.ordem';
$rs = $pdo->prepare($sql);
$rs->bindValue( ':codprova', $codprova );
$rs->execute();
while($row = $rs->fetch(PDO::FETCH_ASSOC)){
if(empty($prova)){
$prova = new Prova();
$prova->codprova = $row['codprova'];
$prova->titulo = $row['titulo'];
}
if(!empty($row['codpergunta'])){
if(!isset($prova->perguntas[$row['codpergunta']])){
$pergunta = new Pergunta();
$pergunta->codpergunta = $row['codpergunta'];
$pergunta->codprova = $row['codprova'];
$pergunta->texto = $row['pergunta'];
$pergunta->ordem = $row['ordem_pergunta'];
$prova->perguntas[$row['codpergunta']] = $pergunta;
} else {
$pergunta = $prova->perguntas[$row['codpergunta']];
}
}
if(!empty($row['codopcao'])){
if(!isset($pergunta->opcoes[$row['codopcao']])){
$opcao = new Opcao();
$opcao->codopcao = $row['codopcao'];
$opcao->codpergunta = $row['codpergunta'];
$opcao->texto = $row['opcao'];
$opcao->ordem = $row['ordem_opcao'];
$opcao->correta = !empty($row['correta']);
$pergunta->opcoes[$row['codopcao']] = $opcao;
}
}
}
if(!empty($prova)){
$prova->perguntas = array_values($prova->perguntas);
foreach($prova->perguntas as $pergunta){
$pergunta->opcoes = array_values($pergunta->opcoes);
}
}
return $prova;
}
}Prova.php
<?php
// classe que representa prova
class Prova extends CodonModule {
public $codprova;
public $titulo;
public $perguntas = array();
public function index()
{
$this->render('Prova/index.tpl');
}
}
// Classe que representa pergunta
class Pergunta extends CodonModule {
public $codpergunta;
public $codprova;
public $texto;
public $ordem;
public $opcoes = array();
}
// Classe que representa opcao
class Opcao extends CodonModule {
public $codopcao;
public $codpergunta;
public $texto;
public $ordem;
public $correta;
}
Layout.tpl:
<?php
//// aqui você pode pegar por GET/POST/SESSION.
//// O que melhor servir no teu caso
$codprova = 1;
$prova = Prova::getByCodigo($codprova);
if(!empty($prova)){
echo '<h1>Exibindo as perguntas da prova: ',$prova->titulo,'</h1>';
echo '<ol>';
foreach($prova->perguntas as $pergunta){
echo '<li>',$pergunta->texto;
echo '<ul style="margin-bottom: 30px">';
foreach($pergunta->opcoes as $opcao){
printf('<li><label><input type="radio" name="pergunta[%d]" value="%d" /> %s</label></li>',
$opcao->codpergunta,
$opcao->codopcao,
$opcao->texto
);
}
echo '</ul>';
}
echo '</ol>';
}
?>Alguem me ajuda pessoal com este erro ai??
Discussão (3)
Carregando comentários...