pereirls 0 Denunciar post Postado Março 23, 2016 Boa tarde!! Amigos sou iniciante com php e ajax, e estou desenvolvendo uma aplicação para o meu TCC utilizando o intel XDK. Estou utilizando a seguinte função de login: $( document ).ready(function() { var $server; $server = 'http://localhost/XDK/'; $(document).ready(function(){ $('#errolog').hide(); //Esconde o elemento com id errolog $('#formlogin').submit(function(){ //Ao submeter formulário var usuario=$('#usuario').val(); //Pega valor do campo usuario var senha=$('#senha').val(); //Pega valor do campo senha $.ajax({ //Função AJAX url:"http://localhost/XDK/conecta.php", //Arquivo php type:"post", //Método de envio data: "usuario="+usuario+"&senha="+senha, //Dados success: function (result){ //Sucesso no AJAX if(result!=0){ $('#teste').show(); activate_page("#home"); //Redireciona document.form1.teste.value=result; //document.getElementById("#teste").value=result; }else{ $('#errolog').show(); //Informa o erro } } }) return false; //Evita que a página seja atualizada }); }); e no PHP está assim: <?php error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); $serve = mysql_connect('127.0.0.1', 'root', ''); if(!$serve){ echo 'erro';} $db = mysql_select_db('bancodoarmais', $serve); $usuario=$_POST['usuario']; //Pegando dados passados por AJAX $senha=$_POST['senha']; $sql="select id, usuario, senha from usuario where usuario='".$usuario."' and senha='".($senha)."'"; $resultados = mysql_query($sql)or die (mysql_error()); $array=mysql_fetch_array ($resultados); $id = $array['id']; $usuario = $array['usuario']; $senha = $array['senha']; if ($id != ''){ print $id; } else { print 0; } Este código está funcionando perfeitamente para o login do usuário. Porém eu necessito utilizar a variavel de ID para outras funções no meu conecta.php (todas elas ficam no mesmo arquivo), quando chamo esta variável em outra função ela vem vazia. Alguém sabe o que pode estar ocorrendo? Ex. de função: if($_GET['acao'] == 'listacampanhas'){ $SQL = "SELECT * FROM campanhasusuario where idusuario ='$id'"; $re = mysql_query($SQL, $serve); $num = mysql_num_rows($re); if($num > 0){ while($Linha = mysql_fetch_object($re)){ echo "<div class='list-block'> <ul> <li class='item-content'> <div class='item-inner'> <div class='item-title'>Nome Campanha: {$Linha->nomecampanha}<p><p>Qtd Atual/Solicitada: {$Linha->qtdatual}/{$Linha->qtdsolicitada}<p><p>Tipo Sanguineo: {$Linha->idsangue}</div> </div> </li> </div>"; } } else{ echo 'nenhuma campanha cadastrada'; } } Caso esteja algo errado me perdoem, é meu primeiro tópico em fóruns :) Compartilhar este post Link para o post Compartilhar em outros sites
Augusto Moreira 0 Denunciar post Postado Março 23, 2016 Então, a dúvida não está muito clara, mas pelo que entendi é mais ou menos isso? function recebe($id)//Aqui está a função para o qual você deseja passar o ID { echo "Aqui está o id: $id";//Um echo apenas para mostrar que o ID foi repassado } $id = 1; //Imagine que este ID veio do BD recebe($id);//Enviando o ID para a funcao recebe Compartilhar este post Link para o post Compartilhar em outros sites
pereirls 0 Denunciar post Postado Março 23, 2016 Opa obrigado pela atençao.... o problema é o seguinte, a funçao que faz o login esta ok funcionando perfeitamente. o que eu preciso é usar a variavel retornada $ID nas outras funçoes do meu código. Quando eu chamo como nesse exemplo if($_GET['acao'] == 'listacampanhas'){ $SQL = "SELECT * FROM campanhasusuario where idusuario ='$id'"; ela retorna vazia Compartilhar este post Link para o post Compartilhar em outros sites
Augusto Moreira 0 Denunciar post Postado Março 24, 2016 O problema é que não está buscando dados no Banco de Dados? Caso seja isto, experimente: //Isso é para transformar em um int caso seja pego uma string $id = (int) $array['id']; e no sql: //Colocando o $id entre chaves para não ser transformado em string $SQL = "SELECT * FROM campanhasusuario where idusuario = {$id}"; Compartilhar este post Link para o post Compartilhar em outros sites
DSerma 19 Denunciar post Postado Março 24, 2016 As outras funções são chamadas logo após o login, na mesma requisição?Caso a resposta seja negativa, então você deve trabalhar com sessions. Transforme o ID em uma session, assim você poderá resgatá-la em qualquer outra parte da sua aplicação. Uma rápida pesquisa sobre sessions te ensinará a como fazer. Compartilhar este post Link para o post Compartilhar em outros sites
pereirls 0 Denunciar post Postado Março 24, 2016 As outras funções são chamadas logo após o login, na mesma requisição?Caso a resposta seja negativa, então você deve trabalhar com sessions. Sim todas estão abaixo da função de login do php. O problema é que não está buscando dados no Banco de Dados? Não porque a função traz o ID do usuário corretamente. vou tentar explicar melhor <?php error_reporting (E_ALL & ~ E_NOTICE & ~ E_DEPRECATED); $serve = mysql_connect('127.0.0.1', 'root', ''); if(!$serve){ echo 'erro';} $db = mysql_select_db('bancodoarmais', $serve); $usuario=$_POST['usuario']; //Pegando dados passados por AJAX $senha=$_POST['senha']; $sql="select id, usuario, senha from usuario where usuario='".$usuario."' and senha='".($senha)."'"; $resultados = mysql_query($sql)or die (mysql_error()); $array=mysql_fetch_array ($resultados); $id = $array['id']; $usuario = $array['usuario']; $senha = $array['senha']; if ($id != ''){ print $id; } // até este if a variável possui valor else { print 0; } if($_GET['acao']=='inclusao'){ $nomepessoa = $_GET['nomepessoa']; $nomecampanha = $_GET['nomecampanha']; $finalidade = $_GET['finalidade']; $qtdsolicitada = $_GET['qtdsolicitada']; $idsangue = $_GET['idsangue']; $qtdatual = 0; $idstatuscampanha = 1; $idbancos = $_GET['idbancos']; $SQL = "INSERT INTO campanhasusuario (nomepessoa, nomecampanha, finalidade, qtdsolicitada, idsangue, qtdatual, idstatuscampanha, idbancos) VALUES ('$nomepessoa', '$nomecampanha', '$finalidade', '$qtdsolicitada', '$idsangue', '$qtdatual', '$idstatuscampanha', '$idbancos')"; $re = mysql_query($SQL, $serve); } if($_GET['acao']=='inclusaous'){ $nome = $_GET['nome']; $datnascimento = $_GET['datnascimento']; $idade = $_GET['idade']; $sexo = $_GET['sexo']; $peso = $_GET['peso']; $telefone = $_GET['telefone']; $email = $_GET['email']; $usuario = $_GET['usuario']; $senha = $_GET['senha']; $ultimadoacao = $_GET['ultimadoacao']; $SQL = "INSERT INTO usuario (nome, datnascimento, idade, sexo, peso, telefone, email, usuario, senha, ultimadoacao) VALUES ('$nome', '$datnascimento', '$idade', '$sexo', '$peso', '$telefone', '$email', '$usuario', '$senha', '$ultimadoacao')"; $re = mysql_query($SQL, $serve); } if($_GET['acao'] == 'listacampanhas'){ //$SQL = "SELECT * FROM campanhasusuario"; $id=9; $SQL = "SELECT * FROM campanhasusuario where idusuario ='$id'"; $re = mysql_query($SQL, $serve); $num = mysql_num_rows($re); if($num > 0){ while($Linha = mysql_fetch_object($re)){ echo "<div class='list-block'> <ul> <li class='item-content'> <div class='item-inner'> <div class='item-title'>Nome Campanha: {$Linha->nomecampanha}<p><p>Qtd Atual/Solicitada: {$Linha->qtdatual}/{$Linha->qtdsolicitada}<p><p>Tipo Sanguineo: {$Linha->idsangue}</div> </div> </li> </div>"; } } else{ echo 'nenhuma campanha cadastrada'; } } if($_GET['acao'] == 'criarcampanhas'){ echo "<div class='list-block'> <ul> <li class='widget uib_w_18' data-uib='framework7/input' data-ver='0'> <div class='item-content'> <div class='item-inner'> <div class='item-title label'>Nome</div> <div class='item-input'> <input type='text' id='nomepessoa' name='nomepessoa'> </div> </div> </div> </li> <li class='widget uib_w_19' data-uib='framework7/input' data-ver='0'> <div class='item-content'> <div class='item-inner'> <div class='item-title label'>Nome Campanha</div> <div class='item-input'> <input type='text' id='nomecampanha' name='nomecampanha'> </div> </div> </div> </li> <li class='align-top widget uib_w_24 d-margins' data-uib='framework7/select' data-ver='0'> <div class='item-content'> <div class='item-inner'> <div class='item-title label'>Tipo sanguíneo</div> <div class='item-input'> <select id='idsangue' name='idsangue'>"; $SQL = "SELECT * FROM sangues"; $re = mysql_query($SQL, $serve); $num = mysql_num_rows($re); if($num > 0){ while($Linha = mysql_fetch_object($re)){ echo "<option >{$Linha->descricao}</option>";} } echo" </select> </div> </div> </div> </li> <li class='align-top widget uib_w_24 d-margins' data-uib='framework7/select' data-ver='0'> <div class='item-content'> <div class='item-inner'> <div class='item-title label'>Hemocentros</div> <div class='item-input'> <select id='idbancos' name='idbancos'> <option>1</option> <option>2</option> </select> </div> </div> </div> </li> <li class='widget uib_w_220 d-margins' data-uib='framework7/input' data-ver='0'> <div class='item-content'> <div class='item-inner'> <div class='item-title label'>Quantidade Solicitada</div> <div class='item-input'> <input type='text' id='qtdsolicitada' name='qtdsolicitada'> </div> </div> </div> </li> <li class='widget uib_w_27 d-margins' data-uib='framework7/input' data-ver='0'> <div class='item-content'> <div class='item-inner'> <div class='item-title label'>Comentário</div> <div class='item-input'> <input type='text' id='finalidade' name='finalidade'> </div> </div> </div> </li> </ul> </div>"; } ?> Até o if que testa o login a variável tem valor, após isso quando chamo esta variável em outro ponto do php ela não possui mais valor Compartilhar este post Link para o post Compartilhar em outros sites
DSerma 19 Denunciar post Postado Março 24, 2016 Acho que você não entendeu a minha pergunta. Quando perguntei "As outras funções são chamadas logo após o login, na mesma requisição?", quis dizer se as outras funções são chamadas, ou seja, se você as executa logo após a função de login. Que elas estão abaixo, sim, eu sei, mas, preciso saber se você as EXECUTA logo após executar o login, ou se executa apenas o login, vai para alguma outra página, e depois executa outra função.Pelo que vi, você faz as condicionais das funções baseado em dados passados via GET, e não vejo após o login nenhuma chamada ou redirecionamento via GET para nenhuma outra função, logo, você deverá usar sessions, como eu havia falado anteriormente. Compartilhar este post Link para o post Compartilhar em outros sites
pereirls 0 Denunciar post Postado Março 24, 2016 Ah sim, após o login o usuário é direcionado a outra tela, a função JS é executada quando essa nova tela é chamada. Já tentei fazer sessão mas o resultar é o mesmo, a variável perde o valor (como sou leigo pode ser que eu esteja fazendo algo errado hehehehehe). Compartilhar este post Link para o post Compartilhar em outros sites
DSerma 19 Denunciar post Postado Março 24, 2016 Como você usou a session? Compartilhar este post Link para o post Compartilhar em outros sites
pereirls 0 Denunciar post Postado Março 24, 2016 assim... $serve = mysql_connect('127.0.0.1', 'root', ''); if(!$serve){ echo 'erro';} $db = mysql_select_db('bancodoarmais', $serve); $usuario=$_POST['usuario']; //Pegando dados passados por AJAX $senha=$_POST['senha']; $sql="select id, usuario, senha from usuario where usuario='".$usuario."' and senha='".($senha)."'"; $resultados = mysql_query($sql)or die (mysql_error()); $array=mysql_fetch_array ($resultados); $id = $array['id']; if ($id != ''){ print $id; session_start(); $_SESSION['id']=$array['id']; } // até este if a variável possui valor else { print 0; } Compartilhar este post Link para o post Compartilhar em outros sites
DSerma 19 Denunciar post Postado Março 24, 2016 Para se trabalhar com sessions no PHP, você deve informar ao servidor que irá fazer isso.Deve-se iniciar as sessões com o comando session_start(); Coloque isso na primeira linha da sua página, e a sessão funcionará. Compartilhar este post Link para o post Compartilhar em outros sites
pereirls 0 Denunciar post Postado Março 24, 2016 Na página php ou no html? opa ja sei é no php, apos o almoço irei tentar Compartilhar este post Link para o post Compartilhar em outros sites
pereirls 0 Denunciar post Postado Março 24, 2016 Pow cara !!!! FUNCIONOUUUUU !!!! Obrigado mesmo estávamos empacados nisso hehehehe, Coloquei a session no começo do php e foi Compartilhar este post Link para o post Compartilhar em outros sites