Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pereirls

Problemas com Função AJAX+PHP

Recommended Posts

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

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

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

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

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

 

 

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

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

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


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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.