Lúcio Flávio da Silva Sales Postado Segunda às 00:49 Denunciar Share Postado Segunda às 00:49 Estou tendo dificuldade de passar essas querys por objeto: A linha return $listarProvas; do arquivo Prova.php não repassa as variáveis $prova1 e $prova2 chamadas na linha $listar_questoes = $listar_questoes->ListarProvas(); do arquivo prova.php. Arquivo onde se encontra a função: Prova.php <?php Class Provas { public function ListarProvas() { $objConexao = new Conexao(); $conexao = $objConexao->getConexao(); $sql = "select * from questoes where Id = 1"; $resposta = $conexao->query($sql); $prova1 = $resposta->fetch_assoc(); $sql = "select * from questoes where Id = 2"; $resposta = $conexao->query($sql); $prova2 = $resposta->fetch_assoc(); $listarProvas = new Provas($prova1,$prova2); return $listarProvas; } } ?> Arquivo onde os resultados devem ser apresentados prova.php <?php $listar_questoes = new Provas(); $listar_questoes = $listar_questoes->ListarProvas(); Questão 1: echo (isset ($prova1["Questao"])?$prova1["Questao"]:""); (A) echo(isset ($prova1["Alt_A"])?$prova1["Alt_A"]:""); (B) php echo(isset ($prova1["Alt_B"])?$prova1["Alt_B"]:""); (C) php echo(isset ($prova1["Alt_C"])?$prova1["Alt_C"]:""); (D) php echo(isset ($prova1["Alt_D"])?$prova1["Alt_D"]:""); (E) php echo(isset ($prova1["Alt_E"])?$prova1["Alt_E"]:""); Questão 2: echo (isset ($prova2["Questao"])?$prova2["Questao"]:""); (A) echo(isset ($prova2["Alt_A"])?$prova2["Alt_A"]:""); (B) echo(isset ($prova2["Alt_B"])?$prova2["Alt_B"]:""); (C) echo(isset ($prova2["Alt_C"])?$prova2["Alt_C"]:""); (D) echo(isset ($prova2["Alt_D"])?$prova2["Alt_D"]:""); (E) echo(isset ($prova2["Alt_E"])?$prova2["Alt_E"]:""); ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
1 Frank K Hosaka Postado Segunda às 03:52 Denunciar Share Postado Segunda às 03:52 <?php // mysql.teste.provas(id,questao) // (1,'Quem descobriu o Brasil?,Pedro,João,Maria,Nenhuma das anteriores'), // (2,'O Brasil tem futuro?,Sim,Não,Talvez') class Provas { function listar($id) { $conexao=new mysqli("localhost","root","","teste"); return $conexao->query("select * from provas where id=$id")->fetch_assoc(); } } for($q=1;$q<=2;$q++) { $prova=(new Provas)->listar($q); $vetores=explode(',',$prova['questao']); foreach($vetores as $chave => $vetor) { if($chave==0) { echo "<br>"; echo $q . ". " . $vetor . "<br>"; } else { echo chr($chave+64) . ". " . $vetor . "<br>"; } } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lúcio Flávio da Silva Sales Postado ontem às 01:39 Autor Denunciar Share Postado ontem às 01:39 Em 16/09/2024 em 00:52, Frank K Hosaka disse: <?php // mysql.teste.provas(id,questao) // (1,'Quem descobriu o Brasil?,Pedro,João,Maria,Nenhuma das anteriores'), // (2,'O Brasil tem futuro?,Sim,Não,Talvez') class Provas { function listar($id) { $conexao=new mysqli("localhost","root","","teste"); return $conexao->query("select * from provas where id=$id")->fetch_assoc(); } } for($q=1;$q<=2;$q++) { $prova=(new Provas)->listar($q); $vetores=explode(',',$prova['questao']); foreach($vetores as $chave => $vetor) { if($chave==0) { echo "<br>"; echo $q . ". " . $vetor . "<br>"; } else { echo chr($chave+64) . ". " . $vetor . "<br>"; } } } ObrIgado, Frank, meu professor! Vou ver como fizeste a passagem da variavel. Pode ser que eu tenha omitido alguma informaçao. Eu preciso fazer as consultas separadas, porque cada uma corresponde a uma questao da prova e quero mudar a posiçao da questao de acordo com o tipo de prova. então, fazer por foreach me parece não permitir fazer essas alteraçoes de posiçao da questao e das alternativas. O problema e que como são variaveis contendo listas, não estou sabendo retornar para a chamada da funçao. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado ontem às 11:11 Denunciar Share Postado ontem às 11:11 (editado) <?php // mysql.teste.provas(id,questao) // (1,'Quem descobriu o Brasil?,Pedro,João,Maria,Nenhuma das anteriores'), // (2,'O Brasil tem futuro?,Sim,Não,Talvez') // (3, 'Quanto é 1+1?,1,2,3,4,5') // (4, 'Quanto é o logaritimo de 10 na base 10?,1,2,3,4,5') class Provas { private $Conexao; function __construct() { $this->Conexao=new mysqli("localhost","root","","teste"); } function selecionar($id) { return $this->Conexao->query("select * from provas where id=$id") ->fetch_assoc(); } function imprimir($vetor) { $q=0; foreach($vetor as $v) { $prova=$this->selecionar($v); $vetores=explode(',',$prova['questao']); foreach($vetores as $chave => $vetor) { if($chave==0) { echo "<br>"; $q++; echo $q . ". " . $vetor . "<br>"; } else { echo chr($chave+64) . ". " . $vetor . "<br>"; } } } } } (new Provas)->imprimir([4,3]); Editado ontem às 11:58 por Frank K Hosaka Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lúcio Flávio da Silva Sales Postado 15 horas atrás Autor Denunciar Share Postado 15 horas atrás (editado) 14 horas atrás, Frank K Hosaka disse: <?php // mysql.teste.provas(id,questao) // (1,'Quem descobriu o Brasil?,Pedro,João,Maria,Nenhuma das anteriores'), // (2,'O Brasil tem futuro?,Sim,Não,Talvez') // (3, 'Quanto é 1+1?,1,2,3,4,5') // (4, 'Quanto é o logaritimo de 10 na base 10?,1,2,3,4,5') class Provas { private $Conexao; function __construct() { $this->Conexao=new mysqli("localhost","root","","teste"); } function selecionar($id) { return $this->Conexao->query("select * from provas where id=$id") ->fetch_assoc(); } function imprimir($vetor) { $q=0; foreach($vetor as $v) { $prova=$this->selecionar($v); $vetores=explode(',',$prova['questao']); foreach($vetores as $chave => $vetor) { if($chave==0) { echo "<br>"; $q++; echo $q . ". " . $vetor . "<br>"; } else { echo chr($chave+64) . ". " . $vetor . "<br>"; } } } } } (new Provas)->imprimir([4,3]); Entendi a ideia dessa função. Nela eu posso definir em que ordem as questões virão. Mas ela ainda gera um relatório, e para fazer as alternâncias na ordem das questões e das alternativas eu teria que alterá-la para cada tipo de prova. O que eu tento fazer é criar uma variável com o select para cada questão. Nela vai a pergunta e as alternativas. Quando eu conseguir passar essas variáveis, então consigo montar a prova colocando a pergunta e as alternativas correspondentes em qualquer ordem na prova, e também alterando a ordem das alternativas em cada questão. A minha dificuldade é passar essas consultas numa chamada única do arquivo onde já tenho as questões e alternativas posicionadas em locais diferentes em cada prova. Por enquanto estou tendo que fazer as consultas todas em cada prova: È um exemplo bem abreviado. Estou omitindo boa parte do código para facilitar a escrita. Prova 1: $sql1 = "select * questoes where id = 1" $sql2 = "select * questoes where id = 2" Questão 1 - $sql1['questão'] (A) $sql1['alternativa A'] (B) $sql1['alternativa B'] (C) $sql1['alternativa C'] (D) $sql1['alternativa D'] (E) $sql1['alternativa E'] Questão 2 - $sql2['questão'] (A) $sql2['alternativa A'] (B) $sql2['alternativa B'] (C) $sql2['alternativa C'] (D) $sql2['alternativa D'] (E) $sql2['alternativa E'] Prova 2: $sql1 = "select * questoes where id = 1" $sql2 = "select * questoes where id = 2" Questão 1 - $sql2['questão'] (A) $sql2['alternativa E'] (B) $sql2['alternativa A'] (C) $sql2['alternativa C'] (D) $sql2['alternativa B'] (E) $sql2['alternativa D'] Questão 2 - $sql1['questão'] (A) $sql1['alternativa C'] (B) $sql1['alternativa A'] (C) $sql1['alternativa E'] (D) $sql1['alternativa D'] (E) $sql1['alternativa B'] É assim que estou conseguindo fazer. Se eu conseguir centralizar as consultas ao banco de dados num arquivo só, a escrita da página da prova vai ficar enxuta. Fico muito grato pelo esforço! Editado 15 horas atrás por Lúcio Flávio da Silva Sales Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado 7 horas atrás Denunciar Share Postado 7 horas atrás (editado) Hahahahaha... agora, eu entendi. Você não confia nos alunos: <?php // mysql.teste.provas(id,questao) // (1,'Quem descobriu o Brasil?,Pedro,João,Maria,Nenhuma das anteriores'), // (2,'O Brasil tem futuro?,Sim,Não,Talvez') // (3, 'Quanto é 1+1?,1,2,3,4,5') // (4, 'Quanto é o logaritimo de 10 na base 10?,1,2,3,4,5') class Provas { private $Conexao; function __construct() { $this->Conexao=new mysqli("localhost","root","","teste"); } function imprimir($vetor) { echo "Prova 1<br>"; $numeroQuestao=0; foreach($vetor as $v) { $prova=$this->selecionar($v); $vetores=explode(',',$prova['questao']); $questao=array_shift($vetores); $numeroQuestao++; $this->imprimirQuestao($questao,$numeroQuestao); $indicador=0; foreach($vetores as $alternativa) { $indicador++; echo chr($indicador+64) . ". " . $alternativa . "<br>"; } } echo "<br>--------- picote aqui----<br>"; echo "<br>Prova 2<br>"; shuffle($vetor); $numeroQuestao=0; foreach($vetor as $v) { $prova=$this->selecionar($v); $vetores=explode(',',$prova['questao']); $questao=array_shift($vetores); $numeroQuestao++; $this->imprimirQuestao($questao,$numeroQuestao); shuffle($vetores); $indicador=64; foreach($vetores as $alternativa) { $indicador++; echo chr($indicador) . ". " . $alternativa . "<br>"; } } } function imprimirQuestao($questao,$numeroQuestao) { echo "<br>"; echo $numeroQuestao . ". " . $questao . "<br>"; } function selecionar($id) { return $this->Conexao->query("select * from provas where id=$id") ->fetch_assoc(); } } (new Provas)->imprimir([4,3]); Editado 6 horas atrás por Frank K Hosaka Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lúcio Flávio da Silva Sales
Estou tendo dificuldade de passar essas querys por objeto:
A linha
return $listarProvas;
do arquivo Prova.php não repassa as variáveis $prova1 e $prova2 chamadas na linha
$listar_questoes = $listar_questoes->ListarProvas();
do arquivo prova.php.
Arquivo onde se encontra a função:
Prova.php
<?php
Class Provas
{
public function ListarProvas()
{
$objConexao = new Conexao();
$conexao = $objConexao->getConexao();
$sql = "select * from questoes where Id = 1";
$resposta = $conexao->query($sql);
$prova1 = $resposta->fetch_assoc();
$sql = "select * from questoes where Id = 2";
$resposta = $conexao->query($sql);
$prova2 = $resposta->fetch_assoc();
$listarProvas = new Provas($prova1,$prova2);
return $listarProvas;
}
}
?>
Arquivo onde os resultados devem ser apresentados
prova.php
<?php
$listar_questoes = new Provas();
$listar_questoes = $listar_questoes->ListarProvas();
Questão 1:
echo (isset ($prova1["Questao"])?$prova1["Questao"]:"");
(A) echo(isset ($prova1["Alt_A"])?$prova1["Alt_A"]:"");
(B) php echo(isset ($prova1["Alt_B"])?$prova1["Alt_B"]:"");
(C) php echo(isset ($prova1["Alt_C"])?$prova1["Alt_C"]:"");
(D) php echo(isset ($prova1["Alt_D"])?$prova1["Alt_D"]:"");
(E) php echo(isset ($prova1["Alt_E"])?$prova1["Alt_E"]:"");
Questão 2:
echo (isset ($prova2["Questao"])?$prova2["Questao"]:"");
(A) echo(isset ($prova2["Alt_A"])?$prova2["Alt_A"]:"");
(B) echo(isset ($prova2["Alt_B"])?$prova2["Alt_B"]:"");
(C) echo(isset ($prova2["Alt_C"])?$prova2["Alt_C"]:"");
(D) echo(isset ($prova2["Alt_D"])?$prova2["Alt_D"]:"");
(E) echo(isset ($prova2["Alt_E"])?$prova2["Alt_E"]:"");
?>
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.