Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá!
Pessoal...preciso criar um mecanismo onde será transmitido diversos dados de um formulário para outra página, e quando chegar nessa página, esses dados serão recebidos e uma consulta será realizada em um banco de dados para exibição do resultado nessa mesma página. Quero fazer isso com PHP, ajax, js.
1 - Tenho um arquivo index.php, onde nele teremos campos de formulário, e o submit dele irá disparar envio dos dados e o load() da pagina seguinte.
2 - Essa segunda página, chamada pagina2.php, recebe os dados do formulário via POST ou GET, com ajax, e logo rewaliza a consulta mysql pra exibir o resultado nela mesma.
* O problema é que quando chega na pagina2.php, apresenta um erro PHP onde não identifica nenhum valor recebido...
Notice: Undefined index: campo_texto in C:\xampp\htdocs\...\pagina2.php on line 10
Códigos que estou tentando:
index.php
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<div class="recept_box">
<b>Início</b>
<form id="form_save">
<input type="text" name="campo_texto" required></input>
<button type="submit">Salvar</button>
</form>
</div><!-- /recept_box-->
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#form_save').submit(function(){
var dados = jQuery( this ).serialize();
jQuery.ajax({
type: "POST",
url: "paginas/pagina2.php",
data: dados,
success: function( data ){
alert(data);
$('.recept_box').load('paginas/pagina2.php');
}//end success
});//end post ajax
return false;
});
});
</script>
pagina2.php
<?php
/*
session_start();
$campo_texto = $_POST['campo_texto'];
$_SESSION['campo_texto'] = $campo_texto;
$exibir = $_SESSION['campo_texto'];
echo $exibir;die;$campo_texto = $_POST['campo_texto'];
echo $campo_texto;die;
?>
<b>Página2</b>
<form id="form_save_pg2">
<input type="text" required></input>
<button type="submit">Voltar</button>
</form>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#form_save_pg2').submit(function(){
var dados = jQuery( this ).serialize();
jQuery.ajax({
type: "POST",
url: "oraculo/cad1.php",
data: dados,
success: function( data )
{
$('.recept_box').load('index.php');
}
});
return false;
});
});
</script>
Compreendem a questão?
>
Você tem duas opções:
1 - Usar o ajax para disparar os dados e exibir o retorno na página onde os dados são disparados (index.php)
2 - Disparar o formulário para a página seguinte (pagina2.php) e exibir tudo lá.
O que você está fazendo é disparar o ajax e depois requisitar a página, por óbvio quando você requisitar não haverá post/get algum.
Compreendo...
A segunda opção que mencionou "2 - Disparar o formulário para a página seguinte (pagina2.php) e exibir tudo lá." me parece ser o que quero atingir...
E o ponto que me parece estar errado no que estou montando de acordo com o q você falou, deve ser esse:
$('.recept_box').load('index.php');
Então, como poderia montar para que saia corretamente o resultado esperado? Conseguiria aplicar nesse código?
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#form_save').submit(function(){
var dados = jQuery( this ).serialize();
jQuery.ajax({
type: "POST",
url: "paginas/pagina2.php",
data: dados,
success: function( data ){
alert(data);
$('.recept_box').load('paginas/pagina2.php');
}//end success
});//end post ajax
return false;
});
});
</script>data contêm o valor da página, logo:
...
success: function( data ){
alert(data);
$('.recept_box').html(data);
...>
data contêm o valor da página, logo:
...
success: function( data ){
alert(data);
$('.recept_box').html(data);
...
Perfeito..conseguimos algo... mas agora como faria para que esse dado fosse utilizado para uma consulta mysql e exibir seu resultado?
Por exemplo, escrevi no input do index.php o número '1'... agora quero que na pagina2.php com um layout de tabela, exiba todos os resultados como "SELECT * FROM tabela WHERE id='$palavra_escrita_no_input' "...
(Nesse exemplo é somente 1 input, mas terei vários campos a serem utilizados nesse mecanismo, e por consequencia mtas clausulas where...)
...Como ficaria isso? :unsure:
Tchê, é só questão de usar a cabeça, qual a diferença do ajax para um post "normal"? Apenas que no primeiro os dados serão enviados e recebidos na mesma página sem refresh, o resto será exatamente igual.
Dê um print_r($_POST) na página de destino e você terá a informação de tudo o que está sendo recebido, a partir disto, a parte da montagem do script é exatamente igual.
>
Tchê, é só questão de usar a cabeça, qual a diferença do ajax para um post "normal"? Apenas que no primeiro os dados serão enviados e recebidos na mesma página sem refresh, o resto será exatamente igual.
Dê um print_r($_POST) na página de destino e você terá a informação de tudo o que está sendo recebido, a partir disto, a parte da montagem do script é exatamente igual.
Sim, exato... mas isso me leva ao motivo inicial que coloquei no primeiro post... quando faço o print, o PHP está exibindo Notice: Undefined index: campo_texto in C:\xampp\htdocs\...\pagina2.php on line 10...
Sim, exato... mas isso me leva ao motivo inicial que coloquei no primeiro post... quando faço o print, o PHP está exibindo Notice: Undefined index: campo_texto in C:\xampp\htdocs\...\pagina2.php on line 10...
Vamos lá, copiei/colei o seu script, apenas fazendo a alteração que citei anteriormente, ai está o resultado:
>
Vamos lá, copiei/colei o seu script, apenas fazendo a alteração que citei anteriormente, ai está o resultado:
http://edgarserra.com/testeimasters/
hmmm eu havia testado mas ainda não tinha aberto a mente...Se entendi nesse caso, o dado foi até a página2.php e exibiu na 'recept_box'.. então se eu tiver consulta sql na pagina2.php, da mesma forma será exibido...isso?
Sim...
Sim...
hmmm perfeito....creio que está resolvido..mto obrigado brother!!!
Você tem duas opções:
1 - Usar o ajax para disparar os dados e exibir o retorno na página onde os dados são disparados (index.php)
2 - Disparar o formulário para a página seguinte (pagina2.php) e exibir tudo lá.
O que você está fazendo é disparar o ajax e depois requisitar a página, por óbvio quando você requisitar não haverá post/get algum.