Jump to content
cheires

Valor de variável

Recommended Posts

cheires

Olá a todos,

Estou a construir um programa em php para incrições numa determinada actividade.

O Problema é o seguinte:

Tenho uma página (index) onde o utilizador escolhe a actividade em que se quer inscrever, e mediante essa actividade é redireccionado para uma de duas páginas onde pode efectuar a sua inscrição.

Estou a passar a variavel inscição da seguinte forma:

header('Location:escola.php?inscricao='.$inscricao);

No ficheiro escola.php queria usar essa variável para tratamento dos dados, o problema é que não estou a conseguir "apanhar" essa variável

Exemplo:

Se "apanhar" logo a seguir ao <body> com o seguinte código

<?php
            $inscricao = $GET['inscricao'];
        ?>

E a escrever na página, consigo ler o valor da variável.

Depois tenho código HTML para construção do formulário de inscrição e de regresso ao código PHP quando volto a escrever o valor da mesma variável esse valo já não é escrito.

Como posso armazenar o valor dessa variável?

Uma variávl só apresenta o valor dentro das tags PHP, certo? Por isso é que eu não a consigo voltar a ler?

Um abraço a todos, e obrigado.

Share this post


Link to post
Share on other sites
scorch

Se percebi o que queres, queres passar uma variável de uma página para outra, cert?

Se sim, podes usar o Metodo POST ou QueryStrings. Se quiseres podes ainda usar Sessions, e guardar o valor da variável numa sessão. ;)


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
cheires

Sim é isso mesmo, mas isso eu já consegui.

O Problema é agora conseguir ler esse valor para poder ser utilizado.

Só o consigo ler se colocar isto

<?php
            $inscricao = $GET['inscricao'];
        ?>

logo a seguir ao <body>

Sessões seria bom, mas não sei muito bem como é que se utilizam, uma vez que já testei e continuei com o mesmo problema.

Share this post


Link to post
Share on other sites
ruimcosta

para utilizares sessions, basta:

<?php

ob_start();
session_start();

$_SESSION['inscricao'] = "teu_valor";
?>

Quando precisares do valor está na session.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
cheires

para utilizares sessions, basta:

<?php

ob_start();

session_start();

$_SESSION['inscricao'] = "teu_valor";

?>

Quando precisares do valor está na session.

Obrigado.

No entanto tenho uma duvida.

Tenho que iniciar a sessão logo no ficheiro de onde quero ler a variável.

Posso inicia-la em qualquer lado? Ou é necessário o inicio da sessão ser antes do <html>?

No ficheiro onde quero ler a variável é a mesma coisa? terei que iniciar novamente a sessão?

Todas os valores da sessão estão em $_SESSION['valor'], n é?

Obrigado

Share this post


Link to post
Share on other sites
ruimcosta

em todas as páginas tens de ter o session_start() a não ser que utilizes includes de ficheiros no index.php, se assim for basta colocar no inicio do index.php mesmo antes de qualquer tag html.

Quando obtiveres o valor da inscrição pela 1ª vez, guardas de imediato na $_SESSION['inscricao']. Depois sempre que quiseres ler o valor da inscrição basta, por exemplo:

echo $_SESSION['inscricao'];

ou $sql ="select * from tabela where inscricao = '".$_SESSION['inscricao']."'";

Sao apenas exemplos.... :(


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
scorch

para utilizares sessions, basta:

<?php

ob_start();
session_start();

$_SESSION['inscricao'] = "teu_valor";
?>

Quando precisares do valor está na session.

O ob_start(); não é necessário. :(


PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
cheires

Olá mais uma vez.

Há algum valor máximo de variáveis que cada sessão pode transportar?

Share this post


Link to post
Share on other sites
ruimcosta

O ob_start(); não é necessário. :(

Somente para garantir o bom funcionamento caso algum header ja tenha sido enviado antes deste sessioN_start();


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
ruimcosta

Olá mais uma vez.

Há algum valor máximo de variáveis que cada sessão pode transportar?

Isto é de uma rtigo ja com uns anos, mas da para teres uma ideia:

The spec for URL length does not dictate a minimum or maximum URL length, but implementation varies by browser. On Windows: Opera supports ~4050 characters, IE 4.0+ supports exactly 2083 characters, Netscape 3 -> 4.78 support up to 8192 characters before causing errors on shut-down, and Netscape 6 supports ~2000 before causing errors on start-up.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
cheires

Somente para garantir o bom funcionamento caso algum header ja tenha sido enviado antes deste sessioN_start();

No meu caso necessitava mesmo do ob_start();

E obrigado pelos esclarecimentos. Mais uma vez :(

Share this post


Link to post
Share on other sites
cheires

Sem querer estar a abusar.

O que pretendia fazer utilizando as sessões, seria para o utilizador poder rever os dados que inseriu.

Tipo, preenche um formulário, carrga no OK, ou SUBMETER etc, e os dados apareceriam numa página para verificação e só depois de verificados seriam introduzidos na base de dados.

Alguma ideia de como fazer este tipo de verificação?

Na sessão não consigo transtportar mais do que 2 variáveis, e todas as outras têm muitos caracteres.

Peço-vos desculpas por estar a "melgar", mas não sou muito experiente com PHP, se fosse em java já estava pronto....

Mais uma vez, grato pelas ajudas.

Share this post


Link to post
Share on other sites
ruimcosta
Na sessão não consigo transtportar mais do que 2 variáveis, e todas as outras têm muitos caracteres.

Porquê?

$_SESSION['var1'] = 'valor1';

$_SESSION['var2'] = 'valor2';

$_SESSION['var3'] = 'valor3';

$_SESSION['var4'] = 'valor4';

$_SESSION['var5'] = 'valor5';

$_SESSION['var6'] = 'valor6';

Isto dá para fazer....depois so tens de comparar as várias $_SESSIONS com o tipo de valor que pretendes


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
simonoop

As sessões são gravadas em disco no lado servidor (podes procurar por documentos "sess_" na pasta tmp do teu servidor web) pelo que não há um limite para o "tamanho" da sessão. Ou melhor... há limite mas é relativamente grande.

Claro que não podes(deves) abusar e enfiar lá uma bd inteira por razões óbvias de performance, segurança e outras.

Há várias formas de matar um gato.

$_SESSION["formVals"] = array(
    "nome" => $_POST["nome"],
    "email" => $_POST["email"]
);

//ou então

$_SESSION["formVals"] = $_POST;

Share this post


Link to post
Share on other sites
herty

Olá a todos,

Estou a construir um programa em php para incrições numa determinada actividade.

O Problema é o seguinte:

Tenho uma página (index) onde o utilizador escolhe a actividade em que se quer inscrever, e mediante essa actividade é redireccionado para uma de duas páginas onde pode efectuar a sua inscrição.

Estou a passar a variavel inscição da seguinte forma:

header('Location:escola.php?inscricao='.$inscricao);

No ficheiro escola.php queria usar essa variável para tratamento dos dados, o problema é que não estou a conseguir "apanhar" essa variável

Exemplo:

Se "apanhar" logo a seguir ao <body> com o seguinte código

<?php
            $inscricao = $GET['inscricao'];
        ?>

E a escrever na página, consigo ler o valor da variável.

Depois tenho código HTML para construção do formulário de inscrição e de regresso ao código PHP quando volto a escrever o valor da mesma variável esse valo já não é escrito.

Como posso armazenar o valor dessa variável?

Uma variávl só apresenta o valor dentro das tags PHP, certo? Por isso é que eu não a consigo voltar a ler?

Um abraço a todos, e obrigado.

Bem no teu caso o unico problema que tens é no

<?php
            $inscricao = $GET['inscricao'];
        ?>

Tas a errar o get

tens de fazer assim

$inscricao = $_GET['inscricao'];

Quanto a usares Sessions, neste caso axo um desperdicio de memoria, pois com o Get da variavel do link serve perfeitamente

Share this post


Link to post
Share on other sites
cheires

Bem no teu caso o unico problema que tens é no

<?php
            $inscricao = $GET['inscricao'];
        ?>

Tas a errar o get

tens de fazer assim

$inscricao = $_GET['inscricao'];

Quanto a usares Sessions, neste caso axo um desperdicio de memoria, pois com o Get da variavel do link serve perfeitamente

Sim esse problema com o _GET foi erro meu mesmo.

O Get serve para passar de uma página para outra, e quando, na 2ª página o código php é continuo.

Como o meu código php está dividio em vários blocos dentro do html a variável passada não vai ser lida, ainda por cima porque a pretendo ler depois de carregar num botão (submeter um formulário).

Acho que as variáveis em php só existem dentro dos blocos de { } ou <?php ?> quando é terminado elas são eliminadas (penso eu que é assim).

Entretanto estava a complicar demais na resolução do meu problema.

A variável que pretendo aceder na 3ª página, iniciada na 1ª, vai para a sessão, e assim posso aceder-lhe quando necessitar.

As restantes, iniciadas na 2ª página, podem (e penso que devem) ser enviadas por POST ou GET, escolhi o POST mas é indiferente (no get os argumentos são passados no link à vista, no post não).

O que me estava a faltar é que, normalmente, executo todo o código do formulário (html) e o PHP que trata o formulário na mesma página, e estava a fazer o redireccionamento através do HEADER. Na tag de inicio do formulário foi só trocar o nome do ficheiro, e ficou o problema resolvido (pelo menos por agora :) ).

Abraço a todos

Share this post


Link to post
Share on other sites
brunoais

Acho que as variáveis em php só existem dentro dos blocos de { } ou <?php ?> quando é terminado elas são eliminadas (penso eu que é assim).

Não é. Eu sei por experiência própria e segundo o que está no manual de instruções.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
herty

Sim esse problema com o _GET foi erro meu mesmo.

O Get serve para passar de uma página para outra, e quando, na 2ª página o código php é continuo.

Como o meu código php está dividio em vários blocos dentro do html a variável passada não vai ser lida, ainda por cima porque a pretendo ler depois de carregar num botão (submeter um formulário).

Acho que as variáveis em php só existem dentro dos blocos de { } ou <?php ?> quando é terminado elas são eliminadas (penso eu que é assim).

Entretanto estava a complicar demais na resolução do meu problema.

A variável que pretendo aceder na 3ª página, iniciada na 1ª, vai para a sessão, e assim posso aceder-lhe quando necessitar.

As restantes, iniciadas na 2ª página, podem (e penso que devem) ser enviadas por POST ou GET, escolhi o POST mas é indiferente (no get os argumentos são passados no link à vista, no post não).

O que me estava a faltar é que, normalmente, executo todo o código do formulário (html) e o PHP que trata o formulário na mesma página, e estava a fazer o redireccionamento através do HEADER. Na tag de inicio do formulário foi só trocar o nome do ficheiro, e ficou o problema resolvido (pelo menos por agora :) ).

Abraço a todos

Completamente errado, o php estando em blocos diferentes enquanto esta numa pagina vai ter sempre as memas variaveis...

Repara que consegues fazer isto

<?php
for ($i=0;$i<100;$i++){?>
<a href="link_<? echo $i; ?>">Link <? echo $i; ?>< /a>
<?php 
}
?>

Aqui consegues ver que independente dos blocos consegues passar as variavais e continuar o codigo anterior....

Share this post


Link to post
Share on other sites
cheires

Não é. Eu sei por experiência própria e segundo o que está no manual de instruções.

Completamente errado, o php estando em blocos diferentes enquanto esta numa pagina vai ter sempre as memas variaveis...

Repara que consegues fazer isto

<?php
for ($i=0;$i<100;$i++){?>
<a href="link_<? echo $i; ?>">Link <? echo $i; ?>< /a>
<?php 
}
?>

Aqui consegues ver que independente dos blocos consegues passar as variavais e continuar o codigo anterior....

Agradeço a correcção aos dois.

Como disse, pensava que era assim, pois quando tento aceder à variavel php no inicio do html ela é imprimida.

Se tentar aceder à mesma variavel mais para o final do html ela já não é imprimida. Foi esta situação que me levou a concluir isso.

Neste caso a duvida está desfeita.

Então o facto de não conseguir imprimir a mesma variável na segunda situação descrita, terá a ver com outra qualquer situação.

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.