Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Gostaria de saber como eu posso passar valores de um form para um if numa mesma pagina, sei que nesse meu codigo se eu colocasse action para otra pagina funcionaria, mas eu quero fazer na mesma pg.
Quero q o valor no input radio seja atribuido a varivel $camp do Where do select
<center>
<form name="form1" method="post" action="">
<input type="radio" name="campanha" id="camp" value="1">1
<input type="radio" name="campanha" id="camp" value="2">2
<input type="radio" name="campanha" id="camp" value="3">3
<input type="radio" name="campanha" id="camp" value="4">4
<input type="radio" name="campanha" id="camp" value="5">5
<input type="submit" name="campanha" id="campanha" value="Consultar">
</form></center>
<?
$camp = $_POST['mailing_campanha'];
$sql = "SELECT mailing_ba,mailing_campanha,mailing_temperatura,mailing_data_abertura,mailing_login,mailing_status FROM retencao_mailing WHERE mailing_campanha = '$camp'";
$result = mysql_query($sql) or die(mysql_error());
if($_POST['campanha']) {
echo "
<br /><br />
<table width='80%'>
<tr>
<th colspan='20' height='40' ><font size='4'>Historíco BA </font></th>
</tr>
<tr>
<th>BA</th>
<th>CAMPANHA</th>
<th>TEMPERATURA</th>
<th>INICIOÇÃO</th>
<th>LOGIN</th>
<th>STATUS</th>
</tr>";echo "<tr>";
echo "<td>" .$dados['0']. "</td>";
echo "<td>" .$dados['1']. "</td>";
echo "<td>" .$dados['2']. "</td>";
echo "<td>" .$dados['3']. "</td>";
echo "<td>" .$dados['4']. "</td>";
echo "<td>" .$dados['5']. "</td>";
}
echo "</table>";
echo "<form name='form1' method='post'></form>";
}entendi, vou procurar como fazer isso com ajax.
Teria algum exemplo para me mostrar?
Veja se este lhe ajuda:
Basicamente você tem que definir um bloco (eventualmente uma div) para receber o conteúdo carregado pelo ajax.
$("#idDaDiv").load('arquivo.php');
Você pode passar para o arquivo tanto por $_POST como por $_GET. Você que define o que se adequa melhor ao seu caso.beleza, valeu a dica. Vou tentar fazer aqui.
@Gabriel Heming
O load não se aplica porque ele precisa passar o valor do formulário, é preciso fazer um post.
--
@peterlink Você pode fazer o seguinte:
Criar um HTML com o formulário e uma chamada para o jQuery no Head, que vai ter isso:
<center>
<form name="form1" method="post" action="">
<input type="radio" name="campanha" class="camp" value="1">1
<input type="radio" name="campanha" class="camp" value="2">2
<input type="radio" name="campanha" class="camp" value="3">3
<input type="radio" name="campanha" class="camp" value="4">4
<input type="radio" name="campanha" class="camp" value="5">5
<input type="submit" name="campanha" id="campanha" value="Consultar">
</form></center>
<div id="resp"></div>
<script type="text/javascript">
$('.camp').click(function(){
$.post("actions.php",
{camp:$(this).val()},
function(data){
$('#resp').html(data);
});
});
</script>
PS. Não estou colocando a chamada Javascript, você precisa fazer isso no topo da página.
actions.php
$camp = $_POST['camp'];
$sql = "SELECT mailing_ba,mailing_campanha,mailing_temperatura,mailing_data_abertura,mailing_login,mailing_status FROM retencao_mailing WHERE mailing_campanha = '$camp'";
$result = mysql_query($sql) or die(mysql_error());
if($_POST['camp']) {
echo "
<br /><br />
<table width='80%'>
<tr>
<th colspan='20' height='40' ><font size='4'>Historíco BA </font></th>
</tr>
<tr>
<th>BA</th>
<th>CAMPANHA</th>
<th>TEMPERATURA</th>
<th>INICIOÇÃO</th>
<th>LOGIN</th>
<th>STATUS</th>
</tr>";
while($dados = mysql_fetch_row($result)) {
echo "<tr>";
echo "<td>" .$dados['0']. "</td>";
echo "<td>" .$dados['1']. "</td>";
echo "<td>" .$dados['2']. "</td>";
echo "<td>" .$dados['3']. "</td>";
echo "<td>" .$dados['4']. "</td>";
echo "<td>" .$dados['5']. "</td>";
}
echo "</table>";
echo "<form name='form1' method='post'>
<input type='button' value='Voltar'
onclick='history.go(-1)'>
</form>";
}Você pode utilizar o $PHP_SELF para fazer isso. Porém, o usuario terá que atualizar a página clickando no form.
Não precisa de Ajax não. Faça do jeito simples.
A questão é: você só vai processar os dados quando o usuário enviar o formulário.
Para fazer isso:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POSST){
$camp = $_POST['mailing_campanha'];
$sql = "SELECT mailing_ba,mailing_campanha,mailing_temperatura,mailing_data_abertura,mailing_login,mailing_status FROM retencao_mailing WHERE mailing_campanha = '$camp'";
$result = mysql_query($sql) or die(mysql_error());
if($_POST['campanha']) {
echo "
<br /><br />
<table width='80%'>
<tr>
<th colspan='20' height='40' ><font size='4'>Historíco BA </font></th>
</tr>
<tr>
<th>BA</th>
<th>CAMPANHA</th>
<th>TEMPERATURA</th>
<th>INICIOÇÃO</th>
<th>LOGIN</th>
<th>STATUS</th>
</tr>";
while($dados = mysql_fetch_row($result)) {
echo "<tr>";
echo "<td>" .$dados['0']. "</td>";
echo "<td>" .$dados['1']. "</td>";
echo "<td>" .$dados['2']. "</td>";
echo "<td>" .$dados['3']. "</td>";
echo "<td>" .$dados['4']. "</td>";
echo "<td>" .$dados['5']. "</td>";
}
echo "</table>";
echo "<form name='form1' method='post'>
<input type='button' value='Voltar'
onclick='history.go(-1)'>
</form>";
}}Pelo que eu entendi, ele não quer carregar outra página, procede?
Galera, parem e pensem, ele não quer processar em outra página, para processar na mesma página você pode usar o $PHP_SELF e usar um gatilho de escape que seja ativo só quando a pessoa completar o que o formulario exige.
E como ele vai saber que o usuário terminou de preencher o formulário de modo válido para enviar a página?
É assim que funciona: o usuário preenche o formulário e clica no botão "Enviar".
Se você não quer que a página se atualize quando o usuário enviar o formulário (o que eu acho "firula"), pesquise por "Ajax Form Submit"...
Dessa forma que você propôs é impossível, o Php não pode carregar só depois do usuário escolher o radio button.
Seria possível com Ajax.