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 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"; ?>  
    • By MatheusSmidt
      Bom dia,
      Estou precisando de ajuda com o código do formulário de um sistema de cadastro.
      A página é para consulta mas tem a possibilidade de adicionar ou retirar "faltas" de cada profissional cadastrado através de botões simples e também apagar um ou múltiplos profissionais da lista, através de checkbox..
      Essa ações atualizam o banco de dados e já retornam na tela automaticamente.
      O problema é que não fui eu que estruturei o código PHP e não consigo aliar as duas funções que falei anteriormente. Quando consigo fazer funcionar o sistema de adição e redução de faltas, consigo apenas excluir o último nome da lista, mesmo selecionando vários. E quando consigo resolver a parte de excluir vários nomes, não consigo adicionar e reduzir o número de faltas.
       
      Provavelmente é um problema no "WHILE" ou na abertura e fechamento de formulário. Porém não consegui resolver.
      Se alguém conseguir resolver seria ótimo.
      Agradeço desde já. Em anexo envio um print da página para melhor entendimento.
       
       
       
       
    • By Hlameiras
      Olá!
       
      Estou tentando desenvolver um formulário dinâmico em PHP, em que o utilizador ao clicar num determinado botão possa acrescentar campos de INPUTs ou SELECTs no mesmo.
      Encontrei este exemplo que funciona mas tem limitações:
      https://www.formget.com/how-to-dynamically-add-form-fields-and-increment-name-attribute-of-the-field/
       
      O problema é que os campos adicionais são gerados pelo lado do cliente (Javascript) e não pelo lado do servidor, logo no caso de gerar SELECTS que vão buscar informação a uma Base de Dados, as opções de escolha não são apresentadas. Qual será a melhor solução para resolver este problema?
       
      Agradecido!
       
       
       
    • By Numero 0800
      Sou bastante iniciante e estou aprendendo sobre HTML, CSS e JavaScript. Estou querendo fazer algo que acredito ser bem simples mas eu não tenho ideia de por onde começar, meu problema é o seguinte:
      Imagina um site de vendas (na parte do administrador do site) e quando o administrador clica em "Adicionar um novo produto" ele preenche um formulário, e assim  este produto aparece logo em seguida na pagina com as informações que foi inserida no formulário.
       
      A minha duvida é a seguinte ---> Como eu faço para que sempre que eu preencher um formulário o site criar automaticamente uma DIV com as informações que foram ali inseridas?
      Eu só preciso de um simples exemplo que o resto eu me viro, porque não estou conseguindo encontrar esta informação na net, só acho formulários do tipo "Crie sua conta" onde você envia informações para ficarem no servidor, mas eu quero um formulário onde ao ser preenchido ele simplesmente crie uma div nova na pagina e que todos possam ver.
       
      Por exemplo: Esse pot de agora, onde estou preenchendo um formulário e quando eu terminar ele vai criar a div automaticamente para todos poderem vem.
       
      OBS: Eu já tenho o modelo da div que eu quero, expliquem também como faz para essa div que vai ser criada seja uma copia da div anterior.
×

Important Information

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