5
respostas

Atribuição de variável

Boa tarde, Estou fazendo o curso e tentando aplicar em um projeto que tem em mente. Nessa última aula alteramos os métodos de GET para POST. Antes dessa mudança, eu consegui passar a passagem da variável do valida-inscricao.php(que na aula seria o remove-produto.php) para listacandidatos.php(na aula lista-produto.php). Quando eu valido a inscrição (que seria o processo de exclusão na aula), não consigo retornar mais o nome de quem fez a inscrição. Podem me ajudar?

Att.

###valida-inscricao.php

<?php 
include ("header.php"); 
include ("db.php");
include ("db-candidatos.php"); ?>

<?php

$id = $_POST['id'];
$nome = $_POST['nome'];
validaCandidato($conexao, $id);
header("Location: listacandidatos.php?removido=true&nome=$nome");
die();
?>
listacandidatos.php

<?php 
include ("header.php"); 
include ("db.php");
include ("db-candidatos.php"); ?>

<?php
if (array_key_exists("removido", $_GET) && $_GET["removido"]=="true"){
$nome = $_GET['nome'];    
?>

<p class="text-success">A inscrição de <?=$nome?> foi validada com sucesso!</p>
<?php
} 
?>

<table class="table table-striped table-bordered">

<?php $candidato = listaCandidato($conexao); 
foreach ($candidato as $candidatos) {
?>
<tr> 
    <td><?= $candidatos['nome'] ?></td>
    <td><?= $candidatos['email'] ?></td>
    <td><?= $candidatos['datanasc'] ?></td>
    <td>
        <form action="valida-inscricao.php" method="post">
            <input type="hidden" name="id" value="<?=$candidatos['id']?>">
            <input type="hidden" name="name" value="<?=$candidatos['nome']?>">
            <button class="btn btn-danger">Validar</button>
        </form>
    </td>
</tr>

<?php
}
?>
</table>

<?php include ("footer.php"); ?>
5 respostas

Fala, Renato!

Não fiz esse curso, mas analisando seu código, será que você não esqueceu de substituir o $_GET para o $_POST na linha abaixo?

(listacandidatos.php)

<?php if (array_key_exists("removido", $_GET) && $_GET["removido"]=="true"){ $nome = $_GET['nome'];?>

Espero ter ajudado.

É isso mesmo Allan, é necessário alterar o $_GET em todo lugar que foi utilizado

Então, funciona assim. No listacandidatos.php tem um form action para o validacandidatos.php . Após o listacandidatos passar argumentos em POST, o validacandidatos recebe esses dados. Como enviar argumentos do validacandidatos para o listacandidatos em POST? Pois fazia isso via GET no header. O arquivo validacandidatos e puramente php.

att

Renato, vou tentar te ajudar me baseando na lógica da loja. Quando removemos o Get do código, removemos essa parte também:

<?php if (array_key_exists("removido", $_GET) && $_GET["removido"]=="true"){ $nome = $_GET['nome'];?>

A inscrição de <?=$nome?> foi validada com sucesso!

<?php } ?>

a informaçãp do sucesso ou insucesso vai ser feito por outro código, o de lógica-usuario.php através das Session do usuário, essa lógica você tem que importar junto do cabecalho utilizando o require_once("nome-do-arquivo.php").

Renato,

Agora que eu entendi qual é a sua dúvida! Até onde eu sei, não temos como "devolver variáveis via POST". Acredito que da forma que você pretende fazer é necessário usar recursos mais complexos como variáveis de sessão ou requisições AJAX, etc. Neste caso, uma solução mais simples seria finalizar a execução da sua validação de candidatos na tela "valida", sendo que, ao invés de devolver uma resposta para "lista", você colocaria as possíveis respostas no "valida", mais ou menos assim:

<?php if(validaCandidato($conexao, $id)) { ?> <p class="text-success">A inscrição de <?=$nome?> foi validada com sucesso!</p> <?php } else { ?> <p class="text-danger">Ocorreu um erro ao tentar validar a inscrição de <?=$nome?> !</p> <?php } ?>

Mais pra frente, nos próximos cursos, acredito que você pode ir aprendendo as outras formas (mais complexas) de responder essas requisições.

Bons estudos!