Fox Hz 0 Denunciar post Postado Fevereiro 22, 2011 Olá pessoal, Estou com uma dúvida simples, mas está causando uma dor de cabeça. Estou desenvolvendo um sistema básico usando como base o PHP. Até ai tudo bem, ele funciona normalmente. Porém mesmo funcionado de acordo com a programação ele emite o erro "Notice: Undefined Variable". Sei que o erro deve-se a setar uma variável vazia antes de ser utilizada, mas vejamos o exemplo: <?php session_start(); $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>.:: Bem Vindo ao Pegasus Rent a Car - Adicionais ::.</title> </head> <body> <center> <table border='1'> <form action="detalhecarro.php" method="POST"> <tr> <td>Air Bag</td> <td><input type="checkbox" name="airbag"></td> </tr> <tr> <td>Ar Condicionado</td> <td><input type="checkbox" name="ar"></td> </tr> <tr> <td>Freios ABS</td> <td><input type="checkbox" name="freios"></td> </tr> <tr> <td>Trio Elétrico</td> <td><input type="checkbox" name="trio"></td> </tr> <tr> <td><center><input type="submit" value="Confirmar"></td> <td><center><input type="reset" value="Limpar"></td> </tr> </form> </table> </body> </html> Os erros estão entre as sessões, que, como foi dito, o PHP emite a mensagem pelo fato da variável estar vazia. Porém o cliente ainda não especificou tal informação até o momento, tanto que se dermos procedimento até o final tudo funciona normalmente. A questão é: está fora está correta? posso deixar o Notice sem algum problema? Como resolver? Agradeço desde já obrigado, Compartilhar este post Link para o post Compartilhar em outros sites
JCMais 75 Denunciar post Postado Fevereiro 22, 2011 Isto acontece porque você está definindo um valor que não existe a variavel. Você pode resolver de duas forams, ocultando os erros E_NOTICE: ini_set('error_reporting', E_ALL^E_NOTICE); Ou então, verificar se a variavel já está presente, o que é o recomendado: if(isset($_POST['categoria']){ $_SESSION['categoria'] = $_POST['categoria'] } uma forma mais prática seria: foreach($_POST as $chave => $valor){ if(isset($_POST[$chave]){ $_SESSION[$chave] = $valor } } ;) Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 22, 2011 Uma outra forma, seria adicionar um hidden field no form, assim só criaria as sessions após o envio do form OU usar um if($_POST), abaixo como ficaria... <?php session_start(); if(isset($_POST['go']) == 1) { $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; } ?> <form action="detalhecarro.php" method="POST"> <input type="hidden" name="go" value="1" /> </form> <?php session_start(); if($_POST) { $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; } ?> Dependendo do que tu for usar, basta apenas o foreach que o JCMAIS citou acima, mas lembre-se de inserir um if($_POST) antes dele, caso contrario ele carrega de primeira o foreach :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Fevereiro 22, 2011 <?php session_start(); if($_POST) { $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; } ?> Dependendo do que tu for usar, basta apenas o foreach que o JCMAIS citou acima, mas lembre-se de inserir um if($_POST) antes dele, caso contrario ele carrega de primeira o foreach :thumbsup: pode usar tambem if (!empty($_POST)){ $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; } Compartilhar este post Link para o post Compartilhar em outros sites
Fox Hz 0 Denunciar post Postado Fevereiro 23, 2011 Olá, Usei como base o exemplo do nosso colega abaixo: <?php session_start(); if(isset($_POST['go']) == 1) { $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; } ?> <form action="detalhecarro.php" method="POST"> <input type="hidden" name="go" value="1" /> </form> Até então resolveu o erro das variáveis vazias que apresentavam o erro do "Undefined Variable". Porém, a ultima parte do procedimento, seria onde ele puxava todos os dados do cliente via $SESSION, e agora não está puxando devido ao código para corrigir "Undefined Variable". Estou tentando resolver, segue abaixo: <?php session_start(); $_SESSION['nome']=$_POST['nome']; $_SESSION['cpf']=$_POST['cpf']; $_SESSION['rg']=$_POST['rg']; $_SESSION['telefone']=$_POST['telefone']; $_SESSION['celular']=$_POST['celular']; $_SESSION['email']=$_POST['email']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>.:: Bem Vindo ao Pegasus Rent a Car - Confirmar ::.</title> </head> <body> <center> <?php $localretirada=$_SESSION['localretirada']; $localdevolucao=$_SESSION['localdevolucao']; $dataretirada=$_SESSION['dataretirada']; $horario1=$_SESSION['horario1']; $datadevolucao=$_SESSION['datadevolucao']; $horario2=$_SESSION['horario2']; $categoria=$_SESSION['categoria']; $veiculo=$_SESSION['veiculo']; $airbag=$_SESSION['airbag']; $arcondicionado=$_SESSION['arcondicionado']; $freios=$_SESSION['freios']; $trio=$_SESSION['trioeletrico']; $airbag=$_SESSION['airbag']; $arcondicionado=$_SESSION['arcondicionado']; $freios=$_SESSION['freios']; $trioeletrico=$_SESSION['trioeletrico']; $basica=$_SESSION['basica']; $basicap=$_SESSION['basicap']; $premium=$_SESSION['premium']; $premiump=$_SESSION['premiump']; $abebes=$_SESSION['abebes']; $acrianca=$_SESSION['acrianca']; $condutor=$_SESSION['condutor']; $gps=$_SESSION['gps']; $avista=$_SESSION['avista']; $cartao=$_SESSION['cartao']; $boleto=$_SESSION['boleto']; $nome=$_SESSION['nome']; $cpf=$_SESSION['cpf']; $rg=$_SESSION['rg']; $telefone=$_SESSION['telefone']; $celular=$_SESSION['celular']; $email=$_SESSION['email']; echo "<table border='1'> <form action='dadosretirada5.php' method='POST'> <tr> <td>Local de Retirada</td> <td>$localretirada</td> </tr> <tr> <td>Data</td> <td>$dataretirada</td> </tr> <tr> <td>Horário</td> <td>$horario1</td> </tr> <tr> <td>Local de Entrega</td> <td>$localdevolucao</td> </tr> <tr> <td>Data</td> <td>$dataretirada</td> </tr> <tr> <td>Horário</td> <td>$horario2</td> </tr> <tr> <td>Veículo</td> <td>$veiculo</td> </tr> <tr> <td>Detalhes</td> <td>Airbag: $airbag<br>Ar Condicionado: $arcondicionado<br> Freios ABS: $freios<br> Trio Elétrico: $trio</td> </tr> <tr> <td>Proteção</td> <td>[Dados dos Proteção]</td> </tr> <tr> <td>Acessórios</td> <td>Assento para Bebes: $abebes<br> Assento para Crianças: $acrianca<br> Condutor Adicional: $condutor<br> Navergador GPS: $gps<br></td> </tr> <tr> <td>Pagamento</td> <td>$avista</td> </tr> <tr> <td>Termos de Contrato</td> <td><input type='checkbox' name='termos'></td> </tr> <tr> <td><center><input type='submit' value='Confirmar'></td> </tr> </table>" ?> </body> </html> Acho que tem muita coisa ai que não era para nem existir, hehe. Podem me auxiliar com isso por favor? Desde já sou grato a todos que estão me ajudando, muito obrigado. Até, Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Fiori 2 Denunciar post Postado Fevereiro 23, 2011 $localretirada=$_SESSION['localretirada']; $localdevolucao=$_SESSION['localdevolucao']; $dataretirada=$_SESSION['dataretirada']; $horario1=$_SESSION['horario1']; $datadevolucao=$_SESSION['datadevolucao']; $horario2=$_SESSION['horario2']; $categoria=$_SESSION['categoria']; $veiculo=$_SESSION['veiculo']; $airbag=$_SESSION['airbag']; $arcondicionado=$_SESSION['arcondicionado']; $freios=$_SESSION['freios']; $trio=$_SESSION['trioeletrico']; $airbag=$_SESSION['airbag']; $arcondicionado=$_SESSION['arcondicionado']; $freios=$_SESSION['freios']; $trioeletrico=$_SESSION['trioeletrico']; $basica=$_SESSION['basica']; $basicap=$_SESSION['basicap']; $premium=$_SESSION['premium']; $premiump=$_SESSION['premiump']; $abebes=$_SESSION['abebes']; $acrianca=$_SESSION['acrianca']; $condutor=$_SESSION['condutor']; $gps=$_SESSION['gps']; $avista=$_SESSION['avista']; $cartao=$_SESSION['cartao']; $boleto=$_SESSION['boleto']; $nome=$_SESSION['nome']; $cpf=$_SESSION['cpf']; $rg=$_SESSION['rg']; $telefone=$_SESSION['telefone']; $celular=$_SESSION['celular']; $email=$_SESSION['email']; Tudo isso ai você pode trocar por apenas esta linha utilizando o conceito de variaveis variaveis foreach ($_SESSION as $key => $value){$$key = $value;} Compartilhar este post Link para o post Compartilhar em outros sites
Fox Hz 0 Denunciar post Postado Fevereiro 23, 2011 Tudo isso ai você pode trocar por apenas esta linha utilizando o conceito de variaveis variaveis foreach ($_SESSION as $key => $value){$$key = $value;} Posso substituir todas essas sessões com esta linha de comando? Ok, vou tentar aqui colega. Obrigado, Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Fevereiro 23, 2011 Tudo isso ai você pode trocar por apenas esta linha utilizando o conceito de variaveis variaveis foreach ($_SESSION as $key => $value){$key = $value;} Posso substituir todas essas sessões com esta linha de comando? Ok, vou tentar aqui colega. Obrigado, Inclusive os posts voce pode capturar e jogar na session do mesmo jeito foreach ($_POST as $key => $value){$_SESSION[$key] = $value;} Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 23, 2011 Kra você adicionou este campo no formulário ?! <input type="hidden" name="go" value="1" /> Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Fevereiro 23, 2011 Kra você adicionou este campo no formulário ?! <input type="hidden" name="go" value="1" /> Só para pegar os dados do formulario e gravar na session? é mais facil verificar se chegou os posts e converter tudo... if (!empty($_POST)){ foreach ($_POST as $key => $value){$_SESSION[$key] = $value;} } Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 23, 2011 + desta forma ele fica restrito há criar o nome da session igual ao nome do campo/var :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
alcaidedigital 57 Denunciar post Postado Fevereiro 23, 2011 + desta forma ele fica restrito há criar o nome da session igual ao nome do campo/var :thumbsup: Mais é isso que ele quer não? Veja o primeiro post Olá pessoal, Estou com uma dúvida simples, mas está causando uma dor de cabeça. Estou desenvolvendo um sistema básico usando como base o PHP. Até ai tudo bem, ele funciona normalmente. Porém mesmo funcionado de acordo com a programação ele emite o erro "Notice: Undefined Variable". Sei que o erro deve-se a setar uma variável vazia antes de ser utilizada, mas vejamos o exemplo: <?php session_start(); $_SESSION['categoria']=$_POST['categoria']; $_SESSION['veiculo']=$_POST['veiculo']; $_SESSION['airbag']=$_POST['airbag']; $_SESSION['arcondicionado']=$_POST['ar']; $_SESSION['freios']=$_POST['freios']; $_SESSION['trioeletrico']=$_POST['trio']; ?> E ainda vai ser bem melhor para poder se organizar... imagina o post com um nome e a session com outro e tals... o que ele pode fazer tambme é adicionar prefixo... if (!empty($_POST)){ foreach ($_POST as $key => $value){$_SESSION['PrefixoQualquer_' . $key] = $value;} } Compartilhar este post Link para o post Compartilhar em outros sites
Fox Hz 0 Denunciar post Postado Fevereiro 24, 2011 Olá pessoal, Então, eu segui as dicas de todos mas o problema ainda continua. Alegando que a variável se encontra vazia, e quando você preenche o campo o erro não aparece. Bom, talvez esteja fazendo algo errado, não tenho certeza. Peço que por favor, expliquem de uma forma simples, sem muitos termos técnicos, já que não sou tão bom quanto vocês. Agradeço a participação de cada um, muito obrigado. Até, Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 Adiciona isto no começo do código: <?php session_start(); //Verifica se existe as variaveis $_POST if($_POST) { $_SESSION['nome']=$_POST['nome']; $_SESSION['cpf']=$_POST['cpf']; $_SESSION['rg']=$_POST['rg']; $_SESSION['telefone']=$_POST['telefone']; $_SESSION['celular']=$_POST['celular']; $_SESSION['email']=$_POST['email']; } ?> //Restante do teu código Depois que você fazer isto, faça o teste e cole o erro do notice inteiro a linha indica no erro. Compartilhar este post Link para o post Compartilhar em outros sites
Fox Hz 0 Denunciar post Postado Fevereiro 25, 2011 Aqui estão os erros colega: Notice: Undefined index: nome in C:\wamp\www\detalhes.php on line 15 Notice: Undefined index: cpf in C:\wamp\www\detalhes.php on line 16 Notice: Undefined index: rg in C:\wamp\www\detalhes.php on line 17 Notice: Undefined index: telefone in C:\wamp\www\detalhes.php on line 18 Notice: Undefined index: celular in C:\wamp\www\detalhes.php on line 19 Notice: Undefined index: email in C:\wamp\www\detalhes.php on line 20 Se houvesse os campos preenchidos para mandar os dados a SESSION eles não dariam erro. Pois é isto que pretendo fazer, quando o usuário não preencher um dado, ele não apresentar como variável vazia, sendo que alguns dados são opcionais. Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 você quer criar uma validação ? Se o usuario nao preencher o campo ele não gera a session !? Compartilhar este post Link para o post Compartilhar em outros sites
Fox Hz 0 Denunciar post Postado Fevereiro 25, 2011 Se o cliente não preencher o campo ou chechbox, quero que não apareça o erro de "Notice: Undefined Variable" apenas isso. Algo simples, que não dou jeito. :( Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 No caso então você teria que validar os dados antes de criar as sessions if($_POST) { // Faça para todos os campos p/ você entender como vai funcionar if($_POST['valor'] != "") { $_SESSION['valor'] = $_POST['valor']; } } Compartilhar este post Link para o post Compartilhar em outros sites
Fox Hz 0 Denunciar post Postado Fevereiro 25, 2011 Como posso fazer a validação se não há variáveis além das $SESSION's? No caso, teria que criar outra variável especifica para o campo? $usuario=$_POST['usuario'] -> Desta forma? Obrigado, Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 Kra, você recebe esse valor como ? Não é atraves do $_POST ?! Explica o passo-a-passo do funcionamento disso, pq $_POST['usuario'] é a variavel referente ao valor do campo do formulario USUARIO, se não estiver nada digitado neste campo qnd você clicar em ENVIAR nao vai entrar nenhum valor na session mesmo Compartilhar este post Link para o post Compartilhar em outros sites