Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Não sei se pelo título do tópico da para entender, mas é o seguinte.
Primeiro tem uma página "busca-avancada.php", onde há um form, com action para "/search/0/" e method="post" contendo vários selects, textfields entre outros.
Depois tem a página "search.php" que corresponde ao endereço "/search/0".
Contem isso <?php if($_POST['s']) header("Location: [http://www.site.com/search/".$_POST](http://www.site.com/search/.%24_POST)['s']."/"); ?>
$_POST['s'] corresponde a um textfield do form da "busca-avancada.php" que seria a query da busca.
O problema é que depois que redireciona, os outros $_POST do form não estão mais gravados na página. Tem alguma forma de os outros $_POST serem salvos junto o redirecionamento? Também não posso utilizar de $_GET.
Como poderia fazer isso?
tente utilizar sessão
Vou ver como funciona e volto pra dizer se deu. Abraços.
>
Não sei se pelo título do tópico da para entender, mas é o seguinte.
Primeiro tem uma página "busca-avancada.php", onde há um form, com action para "/search/0/" e method="post" contendo vários selects, textfields entre outros.
Depois tem a página "search.php" que corresponde ao endereço "/search/0".
Contem isso <?php if($_POST['s']) header("Location: [http://www.site.com/search/".$_POST](http://www.site.com/search/.%24_POST)['s']."/"); ?>
$_POST['s'] corresponde a um textfield do form da "busca-avancada.php" que seria a query da busca.
O problema é que depois que redireciona, os outros $_POST do form não estão mais gravados na página. Tem alguma forma de os outros $_POST serem salvos junto o redirecionamento? Também não posso utilizar de $_GET.
Como poderia fazer isso?
kra eu tbm tive um problema parecido, precisava passar uma serie de variáveis por várias páginas só que a ssessão criada dava problema se o usuário resolvesse voltar na página inicial a primeira sessão continuava ativa, dae resolvi desistir das sessions.
dae resolvi assim:
dentro do seu formulário
<input type=hidden name=variavel value=valordavariavel>
dae eh só pegar do outro lado $_POST['variável'];
vê se ajuda.
abraço
Acontece o seguinte, creio estar gastando recursos ou utilizando-os errados.
O que quero fazer creio que seja bem simples eu não sei como fazer.
Serie pegar um valor do formulário antes de enviar, no caso name="s".
Mas não tem como fazer por $_POST pois ele pega depois que se envia.
<form action="/search/<?php echo $_POST['s']; ?>/">
<input type="text" name="s" value="" />
<input type="text" name="data" value="" />
<input type="text" name="imp" value="" />
<input type="submit" value="Buscar" />
(entre outras inputs, selects, ...)
</form>
O resto eu usaria $_POST agora a primeira name="s" teria que pegar antes para formar a url.
Como faria isso? :mellow:
>
Acontece o seguinte, creio estar gastando recursos ou utilizando-os errados.
O que quero fazer creio que seja bem simples eu não sei como fazer.
Serie pegar um valor do formulário antes de enviar, no caso name="s".
Mas não tem como fazer por $_POST pois ele pega depois que se envia.
<form action="/search/<?php echo $_POST['s']; ?>/">
<input type="text" name="s" value="" />
<input type="text" name="data" value="" />
<input type="text" name="imp" value="" />
<input type="submit" value="Buscar" />
(entre outras inputs, selects, ...)
</form>
O resto eu usaria $_POST agora a primeira name="s" teria que pegar antes para formar a url.
Como faria isso? :mellow:
nesse caso acho que tem que ser session mesmo:
você está usando session em alguma parte do script?
posta o codigo ae, que dae fica mais fácil.
>
>
Acontece o seguinte, creio estar gastando recursos ou utilizando-os errados.
O que quero fazer creio que seja bem simples eu não sei como fazer.
Serie pegar um valor do formulário antes de enviar, no caso name="s".
Mas não tem como fazer por $_POST pois ele pega depois que se envia.
<form action="/search/<?php echo $_POST['s']; ?>/">
<input type="text" name="s" value="" />
<input type="text" name="data" value="" />
<input type="text" name="imp" value="" />
<input type="submit" value="Buscar" />
(entre outras inputs, selects, ...)
</form>
O resto eu usaria $_POST agora a primeira name="s" teria que pegar antes para formar a url.
Como faria isso? :mellow:
nesse caso acho que tem que ser session mesmo:
você está usando session em alguma parte do script?
posta o codigo ae, que dae fica mais fácil.
Tentei usar session mas deu erro:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ...
E na verdade tentei usar, mas me compliquei. E não entendi qual seria o resultado.
>
>
>
Acontece o seguinte, creio estar gastando recursos ou utilizando-os errados.
O que quero fazer creio que seja bem simples eu não sei como fazer.
Serie pegar um valor do formulário antes de enviar, no caso name="s".
Mas não tem como fazer por $_POST pois ele pega depois que se envia.
<form action="/search/<?php echo $_POST['s']; ?>/">
<input type="text" name="s" value="" />
<input type="text" name="data" value="" />
<input type="text" name="imp" value="" />
<input type="submit" value="Buscar" />
(entre outras inputs, selects, ...)
</form>
O resto eu usaria $_POST agora a primeira name="s" teria que pegar antes para formar a url.
Como faria isso? :mellow:
nesse caso acho que tem que ser session mesmo:
você está usando session em alguma parte do script?
posta o codigo ae, que dae fica mais fácil.
Tentei usar session mas deu erro:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ...
E na verdade tentei usar, mas me compliquei. E não entendi qual seria o resultado.
Posta ae a parte do codigo que envia e parte do codigo que recebe.
dae fica mais fácil.
Para resolver esse último erro "headers already sent...", coloque o seguinte código no início(primeira linha) da página principal(caso seja include de um index ou algo parecido). Caso não seja, coloque nesse aquivo que você está alterando:
PHP
<?php[ob_start](http://br.php.net/ob_start)();
?>
e no fim(última linha):
PHP
<?php[ob_end_flush](http://br.php.net/ob_end_flush)();
?>
: - )
O código é o seguinte
header.php
<?php ob_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
(...)
search.php
<?php include('header.php'); ?>
<?php
session_start();
session_register("s"); ?>
<form action="[http://www.site.com/search/
footer.php
(...)
<?php
ob_end_flush();
?>
result-search.php (equivale a /search/<string>/ e fica dentro de index.php, e como o próprio nome já diz mostra os resultados da busca)
<h2>Resultado da Busca</h2>
<p>Mostrando todos os resultados da busca por "<?php the_search_query(); ?>" em ordem <strong><?php if($_POST['ordem'] == 'asc') echo 'ascendesse'; elseif($_POST['ordem'] == 'desc') echo 'descendente'; else echo 'ascendesse'; ?></strong>, visualizando <strong><?php if($_POST['resultados']) echo $_POST['resultados']; else echo '10'; ?></strong> resultados por página.</p>
<?php
if($user_ID == '1') : else : $cliente = "&author=1,".$user_ID.""; endif;
if($_POST['resultados']) $resultados = "&posts_per_page=".$_POST['resultados'].""; else $resultados = "&posts_per_page=10";
if($_POST['ordem']) $ordem = '&order='.$_POST['ordem'].''; else $ordem = '&order=ASC';
if($_POST['impacto'] and $_POST['video'] == '3' or $_POST['impacto'] and $_POST['audio'] == '4') $impacto = '&impacto='.$_POST['impacto'].'';
if($_POST['prioridade'] and $_POST['mensagem'] == '1') $prioridade = '&prioridade='.$_POST['prioridade'].'';
if($_POST['mensagem'] == '1') $tipo .= ''.$_POST['mensagem'].'';
if($_POST['video'] == '3') $tipo .= ','.$_POST['video'].'';
if($_POST['audio'] == '4') $tipo .= ','.$_POST['audio'].'';
if($_POST['novidade'] == '5') $tipo .= ','.$_POST['novidade'].'';
if($_POST['veiculo']) $veiculo = ','.$_POST['veiculo'].'';
if($_POST['programa']) $programa = ','.$_POST['programa'].'';
if($_POST['categoria1' and $_POST['mensagem'] == '1']) $categoria1 = ','.$_POST['categoria1'].'';
if($_POST['categoria5'] and $_POST['novidade'] == '5') $categoria5 = ','.$_POST['categoria5'].'';
?>
<?php query_posts($query_string . "".$cliente."&cat=".$tipos."".$veiculo."".$programa."".$categoria1."".$categoria5."".$resultados."".$ordem."&day=".$_POST['dd']."&monthnum=".$_POST['mm']."&year=".$_POST['aaaa']."".$impacto."".$prioridade.""); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
(...)
<?php endwhile; ?>
<?php else : ?>
<h2 class="center">Nenhum resultado foi encontrado. Deseja <a href="#editar" onclick="">editar a busca</a>?</h2>
<?php endif; ?>
Obs.: As funções que aparecem ai são originais do sistema, que é pronto.
Resumidamente postei como estava tentando puxar o valor de uma input antes de enviar.
Acho que da pra entender agora.
up
up
tente utilizar sessão