Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

14-06-2009 23:47

Olá! Tenho um link, assim:

echo ("<script language='javascript'>window.location.href='CadastrarDadosAnuncianteBanner_Admin.php?TipoAnuncioID=3';</script>");

Nesse link é enviado o valor 3 como TipoAnuncioID. Tentei fazê-lo com input hidden, mas não consegui. Esse valor é recebido por $_GET num if, assim:

if($_GET[TipoAnuncioID] == '3'){ require_once("AcessoCadastrarAnuncianteBannerCentroTopo_Admin.php"); }

Quando a página lincada é aberta, a $_GET está cheia, pois dou echo (echo "$_GET[TipoAnuncioID]";) e retorna o valor enviado. Ocorre que quando dou submit e há erro na validação, a $_GET se esvazia, e tudo o que dependia de $_GET[TipoAnuncioID] == '3' se perde. Se o formulário é enviado sem erro de validação, tal variável não se esvazia. Se troco de $_GET para $_POST ocorre a mesma coisa. Há algum comando com o qual eu possa evitar esse esvaziamento da variável?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

15-06-2009 07:31

Teria que ver a estrutura dessa validação, porque dependendo de como está, daria para passar a variável para ela.

Mostra ai um exemplo simples dessa validação.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

15-06-2009 09:34

O código antes do form é este:

$Teste = $_GET[TipoAnuncioID]; echo "$_GET[TipoAnuncioID]"; if($_GET[TipoAnuncioID] == '3') { require_once("AcessoCadastrarAnuncianteBannerCentroTopo_Admin.php"); } else { if($_GET[TipoAnuncioID] == '4') { require_once("AcessoCadastrarAnuncianteBannerFixoLateralDireita_Admin.php"); } } //seleciona geral tabela clientes, orientado pelo id do cliente na sessão $q1 = "select * from ztab_clientes where codigo_clienteID = '$_SESSION[codigo_clienteID]' "; $r1 = mysql_query($q1) or die(mysql_error()); $a1 = mysql_fetch_array($r1); if($_POST[Submit]) { $errN = 0; // Total de erros $errT = ""; // Texto dos erros $errS = "style=\"background-color:#FFFF99\" "; // Formatação do campo com erro if(empty($_POST[NomeAnunciante])){$errN++; $errSC[NomeAnunciante] = $errS; $errT .= "O campo \"Nome de anunciante\" &eacute; obrigat&oacute;rio!";} else { if (!preg_match("/^[_a-z0-9-áàâãÁÀÂÃéêÉÊíÍóôÓÔúÚçÇ ]+(\[_a-z0-9-áàâãÁÀÂÃéêÉÊíÍóôÓÔúÚçÇ ]+)*$/i", $_POST[NomeAnunciante])) {$errN++; $errSC[NomeAnunciante] = $errS; $errT .= "Campo \"Nome de anunciante\": use letra (com/sem acento), número, \"-\" e \"_\"!";} } // if(empty($_POST[Password])){$errN++; $errSC[Password] = $errS; $errT .= "O campo \"Senha de anunciante\" &eacute; obrigat&oacute;rio!";} elseif((strlen($_POST[Password]) > 7) or (strlen($_POST[Password]) < 7)){$errN++; $errSC[Password] = $errS; $errT .= "O campo \"Senha de anunciante\" deve conter 7 (sete) caracteres!";} else { if (!preg_match("/^[a-z0-9]+(\[a-z0-9]+)*$/i", $_POST[Password])) {$errN++; $errSC[Password] = $errS; $errT .= "Campo \"Senha de anunciante\": use letras (sem acento) e/ou números!";} } // if(empty($_POST[Password2])){$errN++; $errSC[Password2] = $errS; $errT .= "O campo \"Repita a senha de anunciante\" &eacute; obrigat&oacute;rio!";} elseif((strlen($_POST[Password2]) > 7) or (strlen($_POST[Password2]) < 7)){$errN++; $errSC[Password2] = $errS; $errT .= "O campo \"Repita a senha de anunciante\" deve conter 7 (sete) caracteres!";} else { if($_POST[Password] != $_POST[Password2]){$errN++; $errSC[Password2] = $errS; $errT .= "As senhas digitadas n&atilde;o s&atilde;o id&ecirc;nticas!"; } } //Se não tiver erro, executa a ação do form. Se houve erro, exibe a mensagem de erro. if($errN == "0") { $q2 = "insert into ztab_anunciantesbanners set (...)"; mysql_query($q2); if(mysql_error()) { $MensagemErroCodigoClienteCadastrado .= "J&aacute; existe um anunciante cadastrado com o c&oacute;digo de cliente&nbsp;$a1[codigo_clienteID].&nbsp;Se esse código de cliente pertence a quem pretende ser cadastrado como anunciante, informe a administração do site."; } else { $last = mysql_insert_id(); echo ("<script language='javascript'>window.location.href='ConfereCadastrarAnuncianteBanner_Admin.php?id=$last and ztab_anunciantesbanners.codigo_clienteID = $a1[codigo_clienteID]';</script>"); exit(); } } else { $MensagemErroValidacaoFormulario .= "Há&nbsp;$errN&nbsp;erro(s) no preenchimento do formulário. Veja abaixo:$errT "; } } // fecha if($_POST[Submit]);

Eu tirei a formatação das mensagens, para diminuir o volume. Tentei colocar tudo dentro de um while, fiz outras tentativas, mas foi em vão. A variável continua a se esvaziar quando submeto o formulário e ocorre a validação. Se submeto o formulário sem que ocorra erro na validação, o conteúdo da variável não se esvazia e é enviado para o bd.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

15-06-2009 09:38

Ao invés de

$Teste = $_GET[TipoAnuncioID];
echo "$_GET[TipoAnuncioID]";

usa

$Teste = $_GET['TipoAnuncioID'];
echo $_GET['TipoAnuncioID'];

Agora, o que não está claro é onde está o form, de onde a pessoa vem e para onde vai, e esse código ai, é qual página?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

15-06-2009 10:23

Vem de uma entrada numa session. Fiz uma espécie de um login onde se tem de digitar o código do cliente e o seu e-mail. Estou fazendo isso no painel de controle. Cadastrados os dados, é chamada uma página de conferência desses dados. É que eu gostaria de usar o mesmo form para cadastrar usuários diferentes, ou seja, um de banner no topo (TipoAnuncioID == '3'), outro de banner lateral(TipoAnuncioID == '3'). Depois do cadastro inicial, eu faço a mesma distinção, usando o que está registrado no bd no campo TipoAnuncioID, mas daí não tem problema, pois os dados do bd não desaparecem como o que está em $_GET[TipoAnuncioID] da página de cadastro quando do erro na validação do form. Eu estou fazendo um arquivo para cadastrar cada anunciante, e os outros arquivos depois do cadastro serão comuns. Acho que não vou conseguir impedir o esvaziamento de $_GET[TipoAnuncioID] na página de cadastro.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

15-06-2009 10:32

Acho que agora ficou um pouco mais claro, então, a pessoa chega a um formulário, na página do formulário chega por GET o valor, no caso, esse valor deve estar em um input hidden, para ser trabalhado na página do submit.

<input type="hidden" name="valor" value="<?=$_GET['TipoAnuncioID'];?>">

Na validação você trabalha com o $valor

Não sei se o erro da validação é mostrado na mesma página do form, se sim, você precisa que o input hidden acima mantenha o valor enviado, correto?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

15-06-2009 10:51

O erro da validação é mostrado na página do form. Eu coloco esta variável dentro do form: $MensagemErroValidacaoFormulario, e o erro nela contido aparece entre as tabelas do form. Só que não estou conseguindo enviar o valor por input hidden. Está indo assim, conforme coloquei acima:
echo ("<script language='javascript'>window.location.href='CadastrarDadosAnuncianteBanner_Admin.php?TipoAnuncioID=3';</script>");

Como eu converteria isso colocando input hidden? O que eu preciso é manter o valor enviado, como você disse.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

15-06-2009 10:55

Aliás, no meu post antes deste ficou errado. É isto um de banner no topo (TipoAnuncioID == '3'), outro de banner lateral(TipoAnuncioID == '4'). Os dois valores estavam iguais.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

15-06-2009 11:06

Mas, antes do usuário enviar o form, o valor passado já pode estar em um input hidden? tipo, o usuário chegou na página, e já manda o valor para um hidden, dá para fazer isso no seu caso?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

15-06-2009 11:14

Não sei se compreendi bem o que você perguntou. Há um arquivo anterior ao arquivo de cadastro, em que o usuário escolhe que tipo de anunciante pretende cadastrar, entre anunciante de banner topo (TipoAnuncioID == '3') e anunciante de banner lateral (TipoAnuncioID == '4'). É esse valor de uma ou de outra opção que vai ser recebido por $_GET na página de cadastro, e que não está sendo mantido quando submeto o formulário e acusa erro, e se mantém e é enviado quando submeto o formulário e não é acusado erro na validação.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

15-06-2009 12:14

Tenta o seguinte:

<form action="" method="POST">
<input type="text" name="TipoAnuncioID" value="<?=isset($_GET['TipoAnuncioID']) ? $_GET['TipoAnuncioID'] : $_POST['TipoAnuncioID'];?>">
<input type="submit">
</form>

Cria outra página e tenta acessar a página com o script acima passando o TipoAnuncioID

Você vai notar que vai vir o input preenchido, depois, submete o formulário, vai ver que o valor do post será mantido.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

15-06-2009 13:58

Eu entendi o seu código. Uma dúvida: se eu deixar o input como text, vai aparecer o campo de inserção (acredito que você deixou assim para eu testar). No caso de meu código, eu colocarei o input como hidden. É isso?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

15-06-2009 14:08

Isso mesmo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 09:01

Pensei numa coisa e vou tentar. Criei uma tabela no bd com as opções de tipos de anúncios, que contem os campos TipoAnuncioID e TipoAnuncioNome. Vou criar uma arquivo em que farei um select para enviar o TipoAnuncioID através de um input, aliás como você me sugeriu. O anunciante possui um campo TipoAnuncioID. Como falei, fiz uma session para se entrar num ambiente de cadastro. O TipoAnuncioID enviado pela página de escolha será confrontado com o TipoAnuncioID do anunciante. Se diferente, haverá mensagem dizendo que o anunciante não se refere ao tipo de anúncio. Se igual, inseridos outros dados do anunciante, entra-se no ambiente de cadastro, no qual valerá o TipoAnuncioID do anunciante que está na session. Está correto meu raciocínio?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

16-06-2009 09:11

Sim, parece estar OK :wink
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 11:17

Criei o campo select conforme disse, mas acho que não estou sabendo enviar o valor selecionado. Estou tentando com input hidden, mas acho que o valor não está indo. Na página de entrada da session dei um echo em $_GET[TipoAnuncioID] e está vazio. Quando usado esse select para inserção no banco de dados em outro arquivo, é dado um explode, e, no caso, os elementos da $_POST vão para seus campos, no caso TipoAnuncioID e TipoAnuncioNome. No que prentendo fazer, a $_POST conterá apenas o TipoAnuncioID. Dê uma olhada, por favor:

//início seleção do tipo de anúncio $q1 = "select * from ztab_tiposanunciosbanners order by TipoAnuncioNome"; $r1 = mysql_query($q1) or die(mysql_error()); if(mysql_num_rows($r1) > '0') { $SelectTipoAnuncio = "<select name=\"SelectTipoAnuncio\"><option value=\"\">Selecione</option>"; while($a1 = mysql_fetch_array($r1)) { $SelectTipoAnuncio .= "<option value=\"$a1[TipoAnuncioID]\">$a1[TipoAnuncioID] - $a1[TipoAnuncioNome]</option>"; } $SelectTipoAnuncio .= "</select>"; } //fim seleção do tipo de anúncio ?> <input type="hidden" name="teste" value="$_POST[SelectTipoAnuncio]">

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

16-06-2009 11:28

Você tentou imprimir uma variável PHP no HTML
<input type="hidden" name="teste" value="$_POST[SelectTipoAnuncio]">

Vê ai, está depois do fechamento do ?>

Teria que ser

<input type="hidden" name="teste" value="<?=$_POST['SelectTipoAnuncio'];?>">

Isso supondo que tenha o campo SelectTipoAnuncio com valor selecionado na hora do submit usando o método POST
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 11:36

É que está tudo dentro de uma variável php. O imput está assim: <input type=\"hidden\" name=\"valor\" value=\"$_POST[SelectTipoAnuncio]\">
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

16-06-2009 11:50

O select acima parece está ok, tem o name e o value correto. Agora você tem que verificar a estrutura HTML, se está indo o valor para o select, deveria estar também no input, a não ser que sua estrutura esteja errada, posta um link até essa estrutura.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 12:51

Eis o código sem o html:
<? //início seleção do tipo de anúncio $q1 = "select * from ztab_tiposanunciosbanners order by TipoAnuncioNome"; //$q1 = "select * from ztab_tiposanunciosbanners order by TipoAnuncioID"; $r1 = mysql_query($q1) or die(mysql_error()); if(mysql_num_rows($r1) > '0') { $TipoAnuncio = "<select name=\"TipoAnuncio\"><option value=\"\">Selecione</option>"; while($a1 = mysql_fetch_array($r1)) { $TipoAnuncio .= "<option value=\"$a1[TipoAnuncioID]\">$a1[TipoAnuncioID] - $a1[TipoAnuncioNome]</option>"; } $TipoAnuncio .= "</select>"; } //fim seleção do tipo de anúncio if($_POST[submit]) { if(empty($_POST[TipoAnuncio])) //if($_POST[SelectTipoAnuncio] == "") { $MensagemErro .= "Selecione o tipo de anúncio!"; } else { if(isset($_POST[TipoAnuncio])){ echo ("<script language='javascript'>window.location.href='EntrarCadastrarBanner_Admin.php';</script>"); exit(); }}} //action=\"SelectTipoAnuncioBanner_Admin.php\" $Cadastro .= "<form method=\"post\" name=\"form\" action=\"SelectTipoAnuncioBanner_Admin.php\"> $MensagemErro $TipoAnuncio "; $Teste = $_POST[TipoAnuncio]; //<input type=\"hidden\" name=\"valor\" value=\"$_POST[TipoAnuncio]\"> $Cadastro .= " <input type=\"hidden\" name=\"valor\" value=\"$Teste\"> <input type=\"image\" name=\"submit\" value=\"ENVIAR\"> </form> "; ?> <?=$Cadastro?>

Mudei o nome das variáveis do campo select e da que abrange o código para não dar conflito.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 13:14

Cara, creio ser melhor passar o valor de TipoAnuncioID da forma antiga, com este select, pois o valor está indo:
<select onchange=\"location.href = this.value;\" name=\"right\"> <option value=\"\">Selecione o tipo de anúncio que você deseja publicar</option> <option value=\"../../banneraeromodelo/EntrarCadastrarBanner_Admin.php?TipoAnuncioID=1\">&nbsp;&#8226;&nbsp;Anúncio de banner centro topo</option> <option value=\"../../banneraeromodelo/EntrarCadastrarBanner_Admin.php?TipoAnuncioID=2\">&nbsp;&#8226;&nbsp;Anúncio de banner fixo lateral direita</option> </select>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

16-06-2009 14:21

Se está indo por select, faça dessa forma
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 15:30

O problema que está ocorrendo conforme o título deste post. Eu coloquei isso na página de entrada da session:
//PEGA O TIPO SELECIONADO $TipoAnuncioID = $_GET["TipoAnuncioID"]; switch($TipoAnuncioID) { case 1: echo "um"; break; case 2: echo "dois"; break; default: echo "Nenhuma opção selecionada"; break; }//FECHA SWITCH

Está funcionando. Se é mandado o valor 1, aparece a palavra "um" quando surge o formulário de entrada. Se é mandado o valor 2, aparece a palavra "dois". Entretanto, se dou submit no formulário de entrada da session, aparece a frase "Nenhuma opção selecionada".
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17583
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

problema variável esvaziando php

16-06-2009 15:54

Esse form submetido, usa o método POST? Se sim, como está enviando então o TipoAnuncioID ?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1254
Sexo: Masculino

problema variável esvaziando php

16-06-2009 16:13

É este select que postei lá atrás (apague depois, por favor):

...

E agora que percebi. O código está apenas com a tag de fechamento do form, e sem a tag de abertura do mesmo. Mas o valor está indo. Acho que estou chegando no plano D, ou I (de idiota; já estou me sentindo meio tal). Vou tentar mais um pouco nesse código, e vou procurar fazer de outra forma. É do peru.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado