1
I am doing a final project of the course t.i, only I have a problem in the registration of donations, when soon with admin the registration is done successfully, but when I soon with donor not register, Obs: when I try to put the amount per session to pull the logged in donor and play in the input to pop his name and pull, to know who donated the donation. When there is no value assigned, that is, I leave a list of several donors in select register normally, so I need to restrict.
Donation Form
<?php
require_once '../Controle/DAO/classeDoadorDAO.php';
session_start();
if (isset($_SESSION['DoadorLogado']) && $_SESSION['DoadorLogado'] == 1) {
$DoadorLogado = true;
$IdDoadorLogado = $_SESSION['IdDoadorLogado'];
$NomeDoadorLogado = $_SESSION['NomeDoadorLogado'];
}
if (isset($_SESSION['iddoador']) && $_SESSION['iddoador'] != NULL) {
$idDoador=$_SESSION['iddoador'];
} else {
$idDoador=0;
}
// $idBeneficiario = $_SESSION['idbeneficiario'];
?>
<html>
<head>
<meta charset="UTF-8">
<title>Formulário</title>
<link rel="stylesheet" href="css/form.css">
</head>
<body>
<div class="area">
<form id="formDoacao"
name="formDoacao"
method="POST"
action="../Controle/controladorDoacao.php?ACAO=cadastrar"
enctype="multipart/form-data">
<legend>Doação</legend>
<input class="idDoacao" name="idDoacao"
type="hidden"
value=""><br /><br />
<label for="nome">Nome:</label>
<input class="nome" name="nome"
type="text"
value=""><br /><br />
<label for="descricao">Descrição:</label>
<input class="descricao" name="descricao"
type="text"
value=""><br /><br />
<input type="file" id="img" name="img" value="" />
<br /><br />
<input class="dataentrada" name="dataentrada"
type="hidden"
value=""><br /><br />
<input class="datasaida" name="datasaida"
type="hidden"
value=""><br /><br />
<?php
if (isset($DoadorLogado) && $DoadorLogado=TRUE) {
echo "<input type='text' name='doador' value='" . $NomeDoadorLogado . "' >";
} else {
$doadorDAO = new classeDoadorDAO();
$doadores = $doadorDAO->selecionarDoador($idDoador);
}
?>
<br><br>
<button class="btn btn-cadastrar" name="submit" type="submit" value="Cadastrar">Cadastrar</button>
<a href="../index.php" class="btn btn-voltar">Voltar para página inicial</a><br>
<br>
</form>
</div>
</body>
</html>
Donor DAO class method
public function selecionarDoador($idDoador) {
try {
$pdo = conexao::getInstance();
$sql = "SELECT iddoador, nome FROM doador;";
$stmt = $pdo->prepare($sql);
$stmt->execute();
echo "<select name='doador'>";
echo"<option value=''>Selecione Doador</option>";
while ($doador = $stmt->fetchObject(__CLASS__)) {
if ($doador->iddoador == $idDoador){
echo"<option value='" . $doador->iddoador . "' selected>" .
$doador->nome . "</option>";
} else {
echo"<option value='" . $doador->iddoador . "'>" .
$doador->nome . "</option>";
}
}
echo ' </select>';
} catch (Exception $exc) {
echo $exc->getTraceAsString();
}
}
Please, someone would let me know what’s wrong.
Donation Controller
<?php
if (isset($_GET['ACAO'])) {
$acao = $_GET['ACAO'];
switch ($acao) {
case 'listar':
require_once '../Modelo/classeDoacao.php';
require_once '../Controle/DAO/classeDoacaoDAO.php';
require_once '../Modelo/classeFoto.php';
$doacaoDAO = new classeDoacaoDAO;
$doacoes = array();
$doacoes = $doacaoDAO->listarDoacao();
echo "<div class='linha'>";
echo "<div class='coluna_nome'>Nome</div>";
echo "<div class='coluna_descricao'>Descricao</div>";
echo "<div class='coluna_dataentrada'>DataEntrada</div>";
echo "<div class='coluna_datasaida>DataSaida</div>";
echo "</div>";
if (isset($doacoes)) {
foreach ($doacoes as $doacao) {
echo "<div class='linha'>";
echo "<div class='coluna_nome'>" . $doacao->nome . "</div>";
echo "<div class='coluna_descricao'>" . $doacao->descricao . "</div>";
echo "<img src=' " . $doacao->url . "'height='250' width='250' alt='Foto' /><br />";
echo "<div class='coluna_dataentrada'> " . $doacao->dataentrada . "</div>";
echo "<div class='coluna_datasaida>" . $doacao->datasaida . "</div>";
// echo "<div class='coluna_excluir'>"
// . "<a href='index.php?PAGINA=excluirDoacao&&idDoacao="
// . $doacao->idDoacao . "' onclick='return checkDelete()'>"
// . "X</a></div>";
// echo "</div>";
}
}
// session_start();
// $_SESSION['doacao'] = serialize($doacaoes);
// header('Location:Visao/listarDoacao.php');
break;
case 'cadastrar':
require_once '../Modelo/classeDoacao.php';
require_once '../Controle/DAO/classeDoacaoDAO.php';
require_once '../Modelo/classeFoto.php';
$nome = $_POST["nome"];
$descricao = $_POST["descricao"];
$dataentrada = $_POST["dataentrada"];
$datasaida = $_POST["datasaida"];
$foto = $_FILES["img"];
$iddoador = $_POST['doador'];
// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {
$error = array();
// Largura máxima em pixels
$largura = 2000;
// Altura máxima em pixels
$altura = 2000;
// Tamanho máximo do arquivo em bytes
$tamanho = 6000000;
// Verifica se o arquivo é uma imagem
if (!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $foto["type"])) {
$error[1] = "Isso não é uma imagem.";
}
// Pega as dimensões da imagem
$dimensoes = getimagesize($foto["tmp_name"]);
// Verifica se a largura da imagem é maior que a largura permitida
if ($dimensoes[0] > $largura) {
$error[2] = "A largura da imagem não deve ultrapassar " . $largura . " pixels";
}
// Verifica se a altura da imagem é maior que a altura permitida
if ($dimensoes[1] > $altura) {
$error[3] = "Altura da imagem não deve ultrapassar " . $altura . " pixels";
}
// Verifica se o tamanho da imagem é maior que o tamanho permitido
if ($foto["size"] > $tamanho) {
$error[4] = "A imagem deve ter no máximo " . $tamanho . " bytes";
}
// Se não houver nenhum erro
if (count($error) == 0) {
$ext = strtolower(substr($_FILES['img']['name'], -4));
// Gera um nome único para a imagem
$nome_imagem = "foto" . date("dmY_hms") . $ext;
// Caminho de onde ficará a imagem
$url = "../imagem/foto/" . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
if (move_uploaded_file($foto["tmp_name"], $url)) {
echo 'Cadastrado';
} else {
echo 'Erro cadastro';
}
$urlBanco = "/imagem/foto/" . $nome_imagem;
// Insere os dados no banco
// Se houver mensagens de erro, exibe-as
}
}
$novoDoacao = new classeDoacao();
$novoDoacao->setNome($nome);
$novoDoacao->setDescricao($descricao);
$novoDoacao->setIddoador($iddoador);
// $novoDoacao->setimagem($imagem);
$novoDoacao->setdataEntrada($dataentrada);
$novoDoacao->setdataSaida($datasaida);
$novaFoto = new classeFoto();
$novaFoto->setUrl($url);
$doacaoDAO = new classeDoacaoDAO();
$cadastrarDoacao = $doacaoDAO->cadastrarDoacao($novoDoacao, $novaFoto);
if ($cadastrarDoacao == FALSE) {
header('Location:../index.php?PAGINA=principal&MSG=Cadastro Não Realizado');
} else {
echo "<script>alert('Cadastrado com Sucesso');
window.location.href='../index.php?PAGINA=listarDoacao';
</script>";
}
break;
case 'resgatar':
require_once '../Modelo/classeDoacao.php';
require_once '../Controle/DAO/classeDoacaoDAO.php';
$doacaoDAO = new classeDoacaoDAO;
$doacaoAlterada = new classeDoacao();
$iddoacao = $_POST["idDoacao"];
$idbeneficiario = $_POST["beneficiario"];
$doacaoAlterada->setIdbeneficiario($idbeneficiario);
$doacaoAlterada->setIddoacao($iddoacao);
$doacaoDAO->resgatarDoacao($doacaoAlterada);
if ($doacaoAlterada == FALSE) {
header('Location:../index.php?PAGINA=principal&MSG=regaste Não Realizado');
} else {
echo "<script>alert('Resgate com Sucesso');
window.location.href='../index.php?PAGINA=listarDoacao';
</script>";
}
break;
default:
break;
}
}
type to wanting to restrict the list as donor to show according to the user in this case is the donor, that neither in the photo register the donation with the name of the logged donor, and in the admin show all the logged in donors.
– Anderson
The donor controller is below.
– Anderson
I want to take the donor to play in the donation and know who donated that donation, and I put the input to restrict through the logged in donor, only you are not registering. Because the value has been filled , when I use select and have the options to choose to register, but when I limit not.
– Anderson
Anderson, as said, he doesn’t register just because of this: $donor = $_POST['donor'];. You wait for the donor id to save in the bank, but when you are logged in with the donor, you are ordering him to save the his name.
– Ademílson F. Tonato
To see the problem better, you can print this variable in the controller $donor = $_POST['donor'];, and you will see that when you are logged in as an administrator you save the value of the ID and when logged in as the donor you save the logged-in user name. You understand the problem?
– Ademílson F. Tonato
vlw bro solved here thank you very much.
– Anderson
Anderson, if my answer was helpful, please don’t forget to vote for it :)
– Ademílson F. Tonato