Problem with donation registration

1

I am doing a final project of the course of you, so I have a problem in the registration of the donations, when soon with admin the registration and done successfully, but when I soon donate not register, obs: when I try to put the value per session to pull the donor logged in and play on the input to show his name and pull, to know who donated the donation. When you do not have a value assigned, that is, I leave a list of several donors in the 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 class method Donor

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

Kindly, someone would know to inform me what is wrong.

DonorController

<?phpif(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=newclasseDoacaoDAO;$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;
    }
}
    
asked by anonymous 27.06.2016 / 20:46

1 answer

0

I do not know if I understand your doubt completely, let's face it:

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

When you are logged in with anyone other than a donor , for example Administrator , then he should list all donors,

Now about the fact that I'm not saving, I have a chance:

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

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

When logged in as Administrator , for example the field value is the donor id , as shown in the following line of code:

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

So when you are logged in as a Donor , you are prompting him to save a value of type " String ", and when logged in with another user, value " Numeric ".

If you can show your class Control / controllerDo.php , it might help you understand the problem and see if my hypothesis is correct.

Embrace

    
27.06.2016 / 22:11