Enviando dados via $_POST com php com classes
Olá pessoa estou fazendo um sistema de provas pra o meu site, sou aprendiz em php. Tenho os seguintes códigos:
ProvaData.class.php:
<?php
//header('Content-Type: text/plain');
class ProvaData extends CodonModule {
public $codprova;
public $titulo;
public $perguntas = array();
static public function getByCodigo($codprova){
$pdo = new PDO('mysql:host=localhost;dbname=xxxxxxxxxxx','xxxxxxx','xxxxxx');
$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*/ RAND()/*op.ordem RAND()*/';
$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()
{
switch($this->post->action)
{
case 'pr':
$this->pr();
case 'EnviaProva':
$this->Send();
default:
$this->i();
}
}
public function i()
{
if(!Auth::LoggedIn()) {
$this->set('message', 'You must be logged in to access this feature!');
$this->render('core_error.tpl');
return;
}
/*$this->set('recebeProva', ProvaData::PegarProva());*/
//$this->set('prova', ProvaData::getByCodigo($codprova));
$this->render('Prova/index.tpl');
$respotasProva = $this->post->codopcao;
if(isset($this->post->action))
{
if($this->post->action == 'codopcao')
{
$this->mostra_resultado();
}
}
}
protected function mostra_resultado()
{
if(!Auth::LoggedIn())
{
$this->set('message', 'Você precisa estar logado para acessar esta função!');
$this->render('core_error.tpl');
return;
}
$userinfo = Auth::$userinfo;
foreach($prova->perguntas as $pergunta){
$correta = $opcao->codpergunta;
if($respotasProva == $correta)
{
$params = array(
'code' => Auth::$userinfo->code,
'respoas_prova_recebidas' => $this->post->codopcao,
'email' => $this->post->email,
'retired' => false
);
echo '<script type="text/javascrip">alert("PROVA CONCLUIDA COM SUCESSO")</script>';
}
}
}
public function pr()
{
if(!Auth::LoggedIn()) {
$this->set('message', 'You must be logged in to access this feature!');
$this->render('core_error.tpl');
return;
}
/*$this->set('recebeProva', ProvaData::PegarProva());*/
//$this->set('prova', ProvaData::getByCodigo($codprova));
session_name(md5('sal'.$_SERVER['REMOTE_ADDR'].'sal'.$_SERVER['HTTP_USER_AGENT'].'session_iniciada_a_prova'));
$this->render('Prova/questoes.tpl');
$calcProva = DB::escape($this->get->calcProva);
$this->set('resultado', $_GET['pergunta[%d]']);
}
public function Send()
{
if(!Auth::LoggedIn()) {
$this->set('message', 'Você Precisa estar logado para acessar essa função!');
$this->render('core_error.tpl');
return;
}
// $this->post->'%d';
// $userProva = DB::escape($this->post->%d);
$resposta = $this->post->codopcao;
}
}
// 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 $codprova;
public $titulo;
public $perguntas = array();
public $codopcao;
public $codpergunta;
public $texto;
public $ordem;
public $correta;
}
index.php:
<form action="<?php echo url('/prova'); ?>" name="prova" id="prova" method="post">
<?php
//// aqui você pode pegar por GET/POST/SESSION.
//// O que melhor servir no teu caso
$codprova = 1;
$prova = ProvaData::getByCodigo($codprova);
if(!empty($prova)){
?>
<h4 class="sub-header">Exibindo as perguntas da prova: <?php echo $prova->titulo?></h4>
<div class="control-group">
<?php foreach($prova->perguntas as $pergunta){?>
<div class="block block-themed">
<div class="block-title">
<h4><i class="icon-circle text-info"></i><?php echo $pergunta->texto?></h4>
</div>
<div class="block-content">
<?php echo '<ul style="margin-bottom: 30px">';
foreach($pergunta->opcoes as $opcao){
printf('<label><input type="radio" name="pergunta[%d]" value="%d" /> %s</label>',
$opcao->codpergunta,
$opcao->codopcao,
$opcao->texto
);
}
?>
</div>
</div>
<?php
}
}
echo $userProva;
echo $resposta;
?>
Mas os valores não passam pelo post porque não me retorna nem um resultado, nem mesmo o alerta do javascript! Alguém pode me ajudar com isso ai pessoa?Discussão (5)
Carregando comentários...