Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
ola gentes sou iniciante em php e orientação a objetos, alguém poderia me dizer o que há de errado nesse codigo?
não dá nenunhum erro, mas também não imprime nada
<?php
include "config.php";
function mediaAluno($portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia){
$media = ($portugues + $matematica + $biologia + $filosofia + $fisica + $geografia + $historia)/7;
return $media;
$sql_pegaNota = 'SELECT * FROM aluno where alunoId = :alunoId AND disciplina = :disciplinaId';
try{
$query_pegaNota = $conecta->prepare($sql_pegaNota);
$query_pegaNota->bindValue(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindValue(':disciplina',$disciplina,PDO::PARAM_STR);
$query_pegaNota->execute();
$resultado_pegaNota = $query_pegaNota->fetscAll(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaNota){
echo 'Erro ao pegar nota do aluno '.$error_pegaNota->getMessage();
}
foreach($resultado_pegaNota as $res_pegaNota){
$alunoId = $res_pegaNota['alunoId'];
$disciplinaId = $res_pegaNota['disciplinaId'];
$portugues = $res_pegaNota['portugues'];
$matematica = $res_pegaNota['matematica'];
$biologia = $res_pegaNota['biologia'];
$filosofia = $res_pegaNota['filosofia'];
$fisica = $res_pegaNota['fisica'];
$geografia = $res_pegaNota['geografia'];
$historia = $res_pegaNota['historia '];
}
$aluno = mediaAluno($portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia);
echo $aluno;
}
?>tente assim
<?php
include "config.php";
function mediaAluno($portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia){
$media = ($portugues + $matematica + $biologia + $filosofia + $fisica + $geografia + $historia)/7;
return $media;
}
try{
$query_pegaNota = $conecta->prepare('SELECT * FROM aluno where alunoId = :alunoId AND disciplina = :disciplinaId');
$query_pegaNota->bindParam(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindParam(':disciplina',$disciplina,PDO::PARAM_STR);
$query_pegaNota->execute();
$resultado_pegaNota = $query_pegaNota->fetscAll(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaNota){
echo 'Erro ao pegar nota do aluno '.$error_pegaNota->getMessage();
}
foreach($resultado_pegaNota as $res_pegaNota){
$alunoId = $res_pegaNota['alunoId'];
$disciplinaId = $res_pegaNota['disciplinaId'];
$portugues = $res_pegaNota['portugues'];
$matematica = $res_pegaNota['matematica'];
$biologia = $res_pegaNota['biologia'];
$filosofia = $res_pegaNota['filosofia'];
$fisica = $res_pegaNota['fisica'];
$geografia = $res_pegaNota['geografia'];
$historia = $res_pegaNota['historia '];
}
echo $aluno = mediaAluno($portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia);
?>>
as notas está vindo do banco de dados
na verdade acho que estou errando na montagem do banco de dados, tenho a tabela aluno e a tabela disciplinas, consigo pegar as notas das disciplinas somente pelo disciplinaId?
mudei o codigo para
<?php
include "config.php";
$sql_pegaNota = 'SELECT * FROM disciplinas where disciplina = :disciplinaId AND alunoId = :alunoId';
try{
$query_pegaNota = $conecta->prepare($sql_pegaNota);
$query_pegaNota->bindParam(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindParam(':disciplina',$disciplina,PDO::PARAM_STR);
$query_pegaNota->execute();
$resultado_pegaNota = $query_pegaNota->fetscAll(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaNota){
echo 'Erro ao pegar nota do aluno '.$error_pegaNota->getMessage();
}
foreach($resultado_pegaNota as $res_pegaNota){
$alunoId = $res_pegaNota['alunoId'];
$disciplinaId = $res_pegaNota['disciplinaId'];
$portugues = $res_pegaNota['portugues'];
$matematica = $res_pegaNota['matematica'];
$biologia = $res_pegaNota['biologia'];
$filosofia = $res_pegaNota['filosofia'];
$fisica = $res_pegaNota['fisica'];
$geografia = $res_pegaNota['geografia'];
$historia = $res_pegaNota['historia '];
function mediaAluno($portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia){
$media = ($portugues + $matematica + $biologia + $filosofia + $fisica + $geografia + $historia)/7;
return $media;
}
echo $aluno = mediaAluno($portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia);
}
?>
mas está dando o seguinte erro
Erro ao pegar nota do aluno SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
como o valor é int numeros troque $query_pegaNota->bindParam para $query_pegaNota->bindValue
como o valor é int numeros troque $query_pegaNota->bindParam para $query_pegaNota->bindValue
continua dando esse erro
Erro ao pegar nota do aluno SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
Este é todo o seu código?
Este é todo o seu código?
Sim
Tabela alunos
alunoId
disciplinaId
alunoNome
AlunoSerie
AlunoProfessor
tabela disciplinas
disciplinaId
alunoId
portugues
matematica
biologia
filosofia
fisica
geografia
historia
media
Você leu o erro? Os erros do PHP são tão didáticos... Se um dia vier a trabalhar com Java e ver um NullPointerException na tela, vai chorar...
veja este trecho:
$sql_pegaNota = 'SELECT * FROM disciplinas where disciplina = :disciplinaId AND alunoId = :alunoId';
try{
$query_pegaNota = $conecta->prepare($sql_pegaNota);
$query_pegaNota->bindParam(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindParam(':disciplina',$disciplina,PDO::PARAM_STR);$query_pegaNota = $conecta->prepare($sql_pegaNota);
$query_pegaNota->bindParam(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindParam(':disciplinaId',$disciplina,PDO::PARAM_STR);mesmo assim continua dando esses erros
Undefined variable: alunoId in D:\Program Files\wamp\www\PHP POO\functions.php on line 13
Undefined variable: disciplinaId in D:\Program Files\wamp\www\PHP POO\functions.php on line 14
não entedir sua logica maniw você esta querendo fazer uma pesquisar ou uma listagem de alunos? por veja se você for fazer uma pesquisar esta faltado tu enviar o que busca se você quer fazer uma listagem dos alunos de onde estao vindos os valores $alunoId e disciplina via POST?e pq ta enviado as materias? $portugues, $matematica, $biologia, $filosofia, $fisica, $geografia, $historia ?
tente um teste simples
<?php
include "config.php";
function mediaAluno($alunoId, $disciplina){
try{
$query_pegaNota = $conecta->prepare('SELECT * FROM disciplinas where alunoId = :alunoId AND disciplina= :disciplina');
$query_pegaNota->bindvalue(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindParam(':disciplina ',$disciplina,PDO::PARAM_STR);
$query_pegaNota->execute();
$resultado_pegaNota = $query_pegaNota->fetscAll(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaNota){
echo 'Erro ao pegar nota do aluno '.$error_pegaNota->getMessage();
}
foreach($resultado_pegaNota as $res_pegaNota){
$alunoId = $res_pegaNota['alunoId'];
$disciplinaId = $res_pegaNota['disciplinaId'];
$portugues = $res_pegaNota['portugues'];
$matematica = $res_pegaNota['matematica'];
$biologia = $res_pegaNota['biologia'];
$filosofia = $res_pegaNota['filosofia'];
$fisica = $res_pegaNota['fisica'];
$geografia = $res_pegaNota['geografia'];
$historia = $res_pegaNota['historia '];
}
$media = ($portugues + $matematica + $biologia + $filosofia + $fisica + $geografia + $historia)/7;
return $media;
}
if(isset($_POST['enviar'])){
echo mediaAluno($_POST['id'],$_POST['disciplina']);
}
}
?>
<form method="post" action="">
<input type="text" name="id" placeholder="Usuario">
<input type="text" name="disciplina" placeholder="Disciplina">
<input type="submit" value="Procurar" name="enviar">
</form>uma listagem
mas a principio nesse codigo queria apenas imprimir o valor da media do aluno cadastrado no banco de dados, essas variáveis de disciplinas pegam as notas no banco de dados pra ver se a função está correta
>
meu vc tá complicando uma coisa simples, quero saber apenas porque tá dando esses erros
Undefined variable: alunoId in D:\Program Files\wamp\www\PHP POO\functions.php on line 13
Undefined variable: disciplinaId in D:\Program Files\wamp\www\PHP POO\functions.php on line 14
o jeito é testado maniw tenta assim..
<?php
include "config.php";
function mediaAluno($alunoId){
try{
$query_pegaNota = $conecta->prepare("SELECT * FROM disciplinas WHERE id_aluno='".$alunoId."'");
$query_pegaNota->execute();
$rows = $query_pegaNota->fetscAll(PDO::FETCH_ASSOC);
}catch(PDOexception $error_pegaNota){
echo 'Erro ao pegar nota do aluno '.$error_pegaNota->getMessage();
}
foreach($rows as $x){
$alunoId = $x['alunoId'];
$disciplinaId = $x['disciplinaId'];
$portugues = $x['portugues'];
$matematica = $x['matematica'];
$biologia = $x['biologia'];
$filosofia = $x['filosofia'];
$fisica = $x['fisica'];
$geografia = $x['geografia'];
$historia = $x['historia '];
$media = ($portugues + $matematica + $biologia + $filosofia + $fisica + $geografia + $historia)/7;
return $media;
}
}
if(isset($_POST['enviar'])){
echo mediaAluno($_POST['id']);
}
?>
<form method="post" action="">
<input type="text" name="id" placeholder="Id Usuario">
<input type="submit" value="Listar" name="enviar">
</form>Mas vai dar erro mesmo... Veja o trecho de código:
$query_pegaNota->bindParam(':alunoId ',$alunoId,PDO::PARAM_STR);
$query_pegaNota->bindParam(':disciplina',$disciplina,PDO::PARAM_STR);
Agora me diga, de onde vem os valores para as variáveis $alunoId e $disciplina ? Onde elas estão declaradas? Você não fez nada disso, por isso o erro. Perceba que é um erro diferente do anterior...
de onde esses valores devem vir? Se for GET, abaixo do seu include, coloque isto:
$alunoId = isset($_GET['alunoId']) ? $_GET['alunoId'] : '';
$disciplina = isset($_GET['disciplina']) ? $_GET['disciplina'] : '';
Se for POST:
$alunoId = isset($_POST['alunoId']) ? $_POST['alunoId'] : '';
$disciplina = isset($_POST['disciplina']) ? $_POST['disciplina'] : '';agora sim entendi, obrigado Riberry e a você também Marcos
>
Resolvi o problema dos erros agora não está imprimindo a media, os valores vindo do banco estão todos certos mas não imprime
agora deu tudo certo, alguém sabe como arredondar os valores? a media tá imprimindo assim 8.428571...
Olá! Nesse código que postou você criou uma Função, mas onde a declarou com as notas dos alunos?