Jump to content
Zero Minamoto

Como usar $_REQUEST para receber dados na URL?

Recommended Posts

Tô fazendo um teste para tentar editar dados de um banco MySQL, usei o $_REQUEST para receber a id de um campo, mas sempre que clico no botão de submit deste formulário o valor da id não é enviado, apenas o que foi escrito no formulário(mas não é salvo no banco de dados). A URL fica assim depois de apertar no botão:http://localhost/teste/editar.php?id=&new1=novoValor&new2=NovoValor&atualizar=atualizar

 

Aqui o painel que lista as informações JÁ SALVAS no banco, e um link de "Editar Postagem" que leva para o formulário de edição.

<!DOCTYPE html>
<html lang="pt-br">

<head>
	<meta charset="UTF-8"/> 
	<title>Página Principal</title>
</head>

<body>
<h1>Postagens:</h1>
<?php
include_once("connection.php");

$sql = "SELECT * FROM testesinho ORDER BY id";
$result = mysqli_query($conn, $sql);

while($row = mysqli_fetch_array($result)) {
	$id = $row['id'];
	$cA = $row['campoA'];
	$cB = $row['campoB'];
?>

<p><?php echo $cA; ?></p> <p><?php echo $cB . "<a href='editar.php?id=$id'>Editar</a>"; ?></p>  --- </hr> 

<?php
}
?>
</body>
</html>

Aqui o próprio formulário que recebe nele mesmo suas informações:

<?php
	if(isset($_REQUEST['atualizar'])) {
		$nc1	 = $_REQUEST['new1'];
		$nc2	 = $_REQUEST['new2'];

		include_once("connection.php");
		$id_post = $_REQUEST['id'];
		$busca = "SELECT * FROM testesinho WHERE id = '$id_post";
		$sql = "UPDATE testesinho SET campoA = '$nc1', campoB = '$nc2' WHERE id = '$busca'";
		$query = mysqli_query($conn, $sql);
	}
?>
<!DOCTYPE html>
<html lang="pt-br">

<head>
	<meta charset="UTF-8"/>
	<title> Editar </title>
</head>

<body>
<form method="request" action="editar.php">
	<input type="hidden" name="id"/>
	Novo C1: <input type="text" name="new1"/>
	Novo C2: <input type="text" name="new2"/>

	<input type="submit" name="atualizar" value="atualizar"/>
</form>
</body>

Share this post


Link to post
Share on other sites

O method do formulário pode ser apenas GET ou POST.

 

A superglobal $_REQUEST deve ser usada só, e somente só, quando não é possível prever qual a origem do input (GET/POST).

 

Pois podem haver conflitos no input.

Share this post


Link to post
Share on other sites

<input type="hidden" name="id"/>

Cadê a "value" dele?

Se o input não tem um valor, nada será retornado dele...

Share this post


Link to post
Share on other sites
<input type="hidden" name="id"/>

Cadê a "value" dele?

Se o input não tem um valor, nada será retornado dele...

 

Obrigado por me lembrar!

 

Mas agora surgiu uma outra dúvida: O que eu coloco no value? Tentei colocar

 value = "<?php $id_post; ?>"

que lá em cima estava recebendo o $_GET['id'], mas ainda assim o valor de id na URL ficou vazio quando eu enviei o formulário. Sinto que estou deixando passar algo simples, mas não faço ideia do que seja

Share this post


Link to post
Share on other sites
 value = "<?php $id_post; ?>"

que lá em cima estava recebendo o $_GET['id'], mas ainda assim o valor de id na URL ficou vazio quando eu enviei o formulário. Sinto que estou deixando passar algo simples, mas não faço ideia do que seja

value = "<?php echo $id_post; ?>"

Sem o echo não vai mostrar mesmo.

  • +1 1

Share this post


Link to post
Share on other sites
value = "<?php echo $id_post; ?>"

Sem o echo não vai mostrar mesmo.

 

Okay. Coloquei o echo, e assim que tentei acessar o sistema pelo localhost: Notice: Undefined variable: id_post in C:\wamp\www\teste\editar.php on line 23 Call Stack #TimeMemoryFunctionLocation 10.0014134816{main}( )..\editar.php:0 "/>

Share this post


Link to post
Share on other sites

"Undefined variable: id_post " = Variável indefinida: id_post.

id_post é o nome da sua variável? Até onde vi, as suas variáveis de id se chamam apenas "$id", e não "$id_post".

Share this post


Link to post
Share on other sites

"Undefined variable: id_post " = Variável indefinida: id_post.

 

id_post é o nome da sua variável? Até onde vi, as suas variáveis de id se chamam apenas "$id", e não "$id_post".

Sim, a variável que está recebendo o id pela URL se chama $id_post. A action do form está para "editar.php", o mesmo arquivo em que o form é escrito.

<?php
	if(isset($_REQUEST['atualizar'])) {
		$nc1	 = $_REQUEST['new1'];
		$nc2	 = $_REQUEST['new2'];

		include_once("connection.php");
		$id_post = $_REQUEST['id'];
		$busca = "SELECT * FROM testesinho WHERE id = '$id_post";
		$sql = "UPDATE testesinho SET campoA = '$nc1', campoB = '$nc2' WHERE id = '$busca'";
		$query = mysqli_query($conn, $sql);
	}
?>

Share this post


Link to post
Share on other sites

 

Sim, a variável que está recebendo o id pela URL se chama $id_post. A action do form está para "editar.php", o mesmo arquivo em que o form é escrito.

<?php
	if(isset($_REQUEST['atualizar'])) {
		$nc1	 = $_REQUEST['new1'];
		$nc2	 = $_REQUEST['new2'];

		include_once("connection.php");
		$id_post = $_REQUEST['id'];
		$busca = "SELECT * FROM testesinho WHERE id = '$id_post";
		$sql = "UPDATE testesinho SET campoA = '$nc1', campoB = '$nc2' WHERE id = '$busca'";
		$query = mysqli_query($conn, $sql);
	}
?>

Agora tentei usar um isset para validar o $_GET e aí criar uma variável para armazenar ele, mas continua na mesma.

<?php
	if(isset($_GET['atualizar'])) {
		if(isset($_GET['id'])){
		$id_post = $_GET['id'];
		$nc1	 = $_GET['new1'];
		$nc2	 = $_GET['new2'];

		include_once("connection.php");
		$busca = "SELECT * FROM testesinho WHERE id = '$id_post";
		$sql = "UPDATE testesinho SET campoA = '$nc1', campoB = '$nc2' WHERE id = '$busca'";
		$query = mysqli_query($conn, $sql);
	}
}
?>

Share this post


Link to post
Share on other sites

Veja que a sua variável id_post está dentro de um IF, ou seja, se não existir o envio da variável "atualizar", ela não vai existir.

O seu parâmetro "atualizar" só existe quando o formulário é enviado, ou seja, antes disso, a variável id_post não existe.
Remova a variável id_post de dentro do IF.

  • +1 1

Share this post


Link to post
Share on other sites

Veja que a sua variável id_post está dentro de um IF, ou seja, se não existir o envio da variável "atualizar", ela não vai existir.

 

O seu parâmetro "atualizar" só existe quando o formulário é enviado, ou seja, antes disso, a variável id_post não existe.

Remova a variável id_post de dentro do IF.

A SUA DICA FUNCIONOU! Após eu colocar esse isset acima do isset de "atualizar", o aviso de erro sumiu. Após reenviar o formulário numa nova tentativa, vi que o valor da id foi enviado para a URL, mas ainda não havia sido alterado na URL. Então revi mais um pouco o código e vi que a linha

$busca = "SELECT * FROM testesinho WHERE id = '$id_post";

era desnecessária e estava provavelmente causando um conflito. Então coloquei ela comentário e tentei novamente, e não é que funcionou?! Muito obrigado pelo sua ajuda e paciência, não teria conseguido sem isso! Agora finalmente tenho tudo o que preciso apra criar um blog! :'D

 

Abraços!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By douglas79
      Boa noite pessoal,
      Estou seguindo um livro em PHP,  existe um campo pra inserir a imagem de um determinado produto. Fiz um formulário como teste e juntei uns códigos que achei na internet e até está dando certo, os dados estão indo pro BD. Mas tenho duas dúvidas e queria a ajuda do pessoal. Uma é colocar a sequencia nas fotos quando cadastrados (exemplo foto01, foto02 .... foto n) e ao inserir a imagem que é somente pode imagem com a suas extensões e uma mensagem informando.

      Eis o código:
       
      <?php
      include "conn.php";
      $nome = $_POST['nome'];
      $email = $_POST['email'];
      $foto = $_FILES['foto'];
      $pasta = "img/";

      $sql = "INSERT INTO cad (nome,email,foto) VALUES ('".$nome."','".$email."','".$_FILES['foto']['name']."')";
      mysql_query($sql,$con);
      $nome_final = time(). '.jpg';
      if (move_uploaded_file($foto['tmp_name'], $pasta . $nome_final)) {
          
          header("location:index.php");
      } else {
          echo "Erro";
      }
      ?>
      Aguardo as ajudas, desde já obrigado! []'s
    • By Helinho Coelho
      Olá pessoal,
       
      Não estou conseguindo passar o valor de uma simples variável de um formulário. Alguém pode me ajudar a entender o que estou fazendo de errado?
       
      // FORMULÁRIO <form id="form1" method="POST"> <input id="curso" type="text" value="<?php echo $curso; ?>" > <input type="submit" value="ATUALIZAR"> </form> // AJAX $('#form1').on('submit', function() { $.ajax({ url: 'admin.php?page=my_update', type: 'POST', data: 'curso=' + $('#curso').val(), success: function(data) { window.location.replace("admin.php?page=my_home"); }, }); }); // RETORNO PHP (my_home) $novoNome = false; if(isset($_POST['curso'])){ $novoNome = $_POST['curso']; echo "NOVO NOME DO CURSO: " . $novoNome; } print_r($_POST); // Tá retornando vazio, ou seja, o valor da variável 'curso' não está chegando.  
    • By CRIARTEweb
      Olá, amigos!
      Depois de muito tempo estou aqui novamente em busca da ajuda de vocês.
      Quero publicar um formulário de Contato, para não deixar o meu domínio só com a famosa Error 404 Not Found. 

      Alguém pode me ajudar com scripts prontos?
    • By renatamdk
      Oii gente!
      Eu sou iniciante em html e estou tendo dificuldade em mudar a cor do campo de um formulário...
       
      Já procurei aqui, e o que encontrei não entendi muito bem também ):
       
      Se alguém puder me ajudar, agradeço.
       
      Vou deixar um anexo de como está o formulário. Queria deixar o fundo mais cinzinha, pois branco está destacando demais. Só isso...
       
       
       
      O código:
       
      <!-- Formulário -->
      <form id="llCaptureForm" class="llformCustom" action="//paginas.rocks/capture" method="post">
         <input type="hidden" id="mid" name="mid" value="328302">
         <input type="hidden" id="fid" name="fid" value="14926">
         <div>
             <label style="color: rgba(255, 255, 255, 1) !important;" for="llfield32417">Nome</label>
             <input type="text" id="llfield32417" name="llfield32417" placeholder="Seu nome">
             <div class="field-error" id="llerror32417"></div>
         </div>
         <div>
             <label style="color: rgba(255, 255, 255, 1) !important;" for="llfield32419">Contato</label>
             <input type="tel" id="llfield32419" name="llfield32419" placeholder="DDD + Número">
             <div class="field-error" id="llerror32419"></div>
         </div>
         <div>
             <label style="color: rgba(255, 255, 255, 1) !important;" for="llfield32418">E-mail</label>
             <input type="email" id="llfield32418" name="llfield32418" placeholder="Informe seu e-mail" data-required="true">
             <div class="field-error" id="llerror32418"></div>
         </div>
         <div class="button-bar">
             <button style="background-color: rgba(255, 179, 38, 1) !important;" type="submit">Cadastrar</button>
         </div>
         <div class="loading-box">
             <img src="//paginas.rocks/content/images/spinner.gif">
             <div>loading...</div>
         </div>
         <div class="error-box">
             <img src="//paginas.rocks/content/images/error-icon.png">
             <div></div>
             <button type="button" class="btn" id="btn-error">Ok</button>
         </div>
         <img src="https://llimages.com/redirect/redirect.aspx?A=V&amp;f=14926&amp;m=328302" style="display: none;">
      </form>

    • By flarique
      iae pessoal, então eu estou querendo fazer o envio de um email do meu formulário por intermédio de um php que estou testando em um servidor ativo!
      este é o formulário e o meu problema é explicitamente com a passagem de informação do bootstrap 4 escrito em html para o php.
      este é o formulário.
      <!-- Formulario --> <div class="container"> <div class="row"> <div class="col-12 text-center my-5"> <h1 class="display-4 text-danger"><i class="fa fa-paper-plane text-danger" aria-hidden="true"></i>Enviar e-mail</h1> </div> </div> <div class="row justify-content-center mb-5"> <div class="col-sm-12 col-md-10 col-lg-8"> <form action="../Teste.php" method="post" role="form"> <div class="form-row"> <div class="form-group col-sm-6"> <label class="text-dark" for="InputName" >Nome completo</label> <input type="text" class="form-control" id="InputName" name="nome" required placeholder="Nome"> </div> </div> <div class="form-row"> <div class="form-group col-sm-12"> <label class="text-dark" for="inputEnd">Email</label> <input type="email" class="form-control" id="inputEnd" nome="email" required placeholder="Endereço completo"> </div> </div> <div class="form-row"> <div class="form-group col-sm-6"> <label class="text-dark" for="inputCidade">Sua cidade</label> <input type="text" class="form-control" id="inputCidade" name="cidade" required placeholder="Cidade"> </div> </div> <div class="form-row"> <div class="col-sm-12"> <button type="submit" class="btn btn-primary">Enviar</button> <a tabindex="0" class="btn btn-secondary ml-2" role="button" data-toggle="popover" data-placement="right"data-trigger="focus" title="Ajuda!" data-content="Preença todas as caixas.">Ajuda</a> </div> </div> </form> </div> </div> </div> e este é o php que deve receber as informações do formulario pelo method="post" e o action="../Teste.php" mas as variaveis do php não mudam.
      este é o php.
      <?php $name = $_POST['name']; $email = $_POST['email']; $cidade = $_POST['cidade']; $email_from = 'Teste'; $email_subject = 'Teste2'; $email_body = "Name: $name.\n". "Email: $email.\n". "Cidade: $cidade.\n"; $to = "enriboliveira@gmail.com"; $headers = "From $email_from \r\n"; $headers .= "Reply-to: $email \r\n"; echo "nome : $name"; ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.