Problem with donation registration

Asked

Viewed 78 times

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. inserir a descrição da imagem aqui

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;
    }
}

1 answer

0

I don’t know if I fully understood your doubt:

When logged in as Donor, the system should list only itself in the donor list.

When logged in with any other donor not, for example Administrator, then he should list all donors, proceed?

Now as to the fact that I’m not saving, I have a chance:

When you are logged in as Donor, the field value is the name of the donor itself, as shown in the code line below:

echo "<input type='text' name='doador' value='" . $NomeDoadorLogado . "' >";

Already when logged in as Administrator, for example the field value is donor id, as shown in the code line below:

echo"<option value='" . $doador->iddoador . "'>" . $doador->nome . "</option>";

Therefore, when you are logged in as Donor, you will be ordering him to save a value of the kind "String", and when logged in with another user will be ordering it to save a value "Numerical".

If you can show your class Control/controllerDoacao.php, maybe it helps to understand the problem and see if my hypothesis is correct.

Hug

  • 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.

  • The donor controller is below.

  • 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, 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.

  • 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?

  • vlw bro solved here thank you very much.

  • Anderson, if my answer was helpful, please don’t forget to vote for it :)

Show 2 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.