Autore Topic: Valore di restituzione query php su database MySql  (Letto 3152 volte)

Offline volley.sil

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows xp, e windows 7
Valore di restituzione query php su database MySql
« il: 11 Febbraio 2012, 01:23:23 CET »
0
Ciao a tutti, ho un piccolo problema devo interrogare un database su mysql tramite query su pagina php ma non riesco a capire a cosa mi restituisce la pagina php dopo l'esecuzione della query. Dovrebbe restituirmi la variabile result ma non riesco a capirne il valore. Il valore di result mi servirebbe per capire se l'utente che sta cercando di loggarsi si è già registrato, cioè le sue credenziali (username e password) corrispondono a quelle presenti nella tabella utenti registrati del mio database. Qualcuno saprebbe dirmi come posso fare questo controllo o come interpretare il valore di result da pagina java???

Posto il codice della pagina di connessione al server e pagina php con query.
Grazie a tutti in anticipo.

Pagina di queryLogin.java
Codice (Java): [Seleziona]
package com.CsrForum.android;
import com.CsrForum.android.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
//in teoria ci andrebbe extend ListActivity ma ci da errore quando la lanciamo
public class queryLogin extends Activity {
    /** Called when the activity is first created. */
    TextView txtQuery;
@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.list_item);
 
 //credenziali per il login
 String str_usernamelogin=getIntent().getExtras().getString("com.CsrForum.android.UsernameLogin");
 String str_pwdlogin=getIntent().getExtras().getString("com.CsrForum.android.PasswordLogin");
//Toast.makeText(getBaseContext(), var_appoggioregistrati ,Toast.LENGTH_LONG).show();
        txtQuery=(TextView)findViewById(R.id.Text1);
       
        String result=ConnessioneDbLogin.send(str_usernamelogin, str_pwdlogin);
     
       txtQuery.setText(result);
       if (result != null){
       Intent connessioneLoginIntent = new Intent (queryLogin.this, CsrForumActivityLogin.class);
       startActivity(connessioneLoginIntent);
     
       }
        //Intent ListaCorsiIntent = new Intent (queryLogin.this, ListaCorsi.class);
        //startActivity(ListaCorsiIntent);  
     
     
    }
   
}

Pagina ConnessioneDb.java

Codice (Java): [Seleziona]
package com.CsrForum.android;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.util.Log;
import android.widget.Toast;

public class ConnessioneDbLogin {
       

/////////// Public method to send Query ///////////
public static String send(String str_usernamelogin, String str_pwdlogin) {

String result = null;
InputStream is = null;

 
  //the query to send
  List<NameValuePair> querySend = new ArrayList<NameValuePair>(2);
 
  //querySend.add(new BasicNameValuePair("querySend",query));
  querySend.add(new BasicNameValuePair("usernamelogin",str_usernamelogin));
  querySend.add(new BasicNameValuePair("pwdlogin",str_pwdlogin));
  //http post
  try{
       
    HttpClient httpclient = new DefaultHttpClient();
   
    //ci va l'ip pubblico del proprio computer trovato tramite www.whatismyip.com
    HttpPost httppost = new HttpPost("http://87.21.244.240/prova5.php");

    httppost.setEntity(new UrlEncodedFormEntity(querySend));
 
    HttpResponse response = httpclient.execute(httppost);
 
    HttpEntity entity = response.getEntity();
 
    is = entity.getContent();
 
  }catch(Exception e){
    Log.e("log_tag", "Error in http connection "+e.toString());
  }

  //convert response to string
  try{
    BufferedReader reader = new BufferedReader(
               new InputStreamReader(is,"iso-8859-1"),8);
    StringBuilder sb = new StringBuilder();
    String line = null;
      while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
      }
    is.close();
    result=sb.toString();

  }catch(Exception e){
    Log.e("log_tag", "Error converting result: "+e.toString());
  }

  Log.i("SendQUERY", result);
 
  return result;
  }
}


pagina.php
Codice (PHP): [Seleziona]
<?php
//variabili per la connessione al database
$nomehost= "localhost";
$nomeuser= "root";
$password= "mwd";
$nomedb= "utentiforum";
//connessione
$connessione = mysql_connect($nomehost,$nomeuser,$password)or die ("Errore nella connessione. Verificare i parametri nel file prova.php".mysql_error());
print("Connessione al server riuscita: ");
mysql_select_db($nomedb,$connessione)or die ("Errore nella selezione del database. Verificare i parametri nel file prova.php");
//preleviamo la query passataci dall’applicazione
$username=$_REQUEST['usernamelogin'];
$pwd=$_REQUEST['pwdlogin'];
$result = mysql_query("SELECT utentiregistrati.nome , utentiregistrati.cognome from utentiregistrati WHERE username='$username' AND password='$pwd'") or die(mysql_error("Errore!"));
while($e=mysql_fetch_assoc($result)){
echo $e["nome"];
print(" ");
echo $e["cognome"];
}
if ($e==''){
$result=null;
}
mysql_close($connessione);
?>
La mia app tratta un forum.
Un utente registrato o loggato può accedere alla lista degli argomenti (Corsi) altrimenti viene rispedito alla pagina di Login se si stava Loggando.
« Ultima modifica: 12 Febbraio 2012, 16:15:36 CET da volley.sil »

Offline Auron

  • Utente junior
  • **
  • Post: 104
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Motorola Milestone Android 2.2.1
  • Sistema operativo:
    Windows
Re:Valore di restituzione query php su database MySql
« Risposta #1 il: 12 Febbraio 2012, 14:23:34 CET »
0
Hai duplicato l'activity e non hai messo la classe ConnessioneDb.java

Fai un EDIT del tuo post e correggi in modo che si capisca come lavora la tua App.

P.S. Non si capisce quale classe invia gli Extra contenuti nell'Intent.
« Ultima modifica: 12 Febbraio 2012, 14:25:13 CET da Auron »
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;-)

Offline gfkat

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Re:Valore di restituzione query php su database MySql
« Risposta #2 il: 16 Febbraio 2012, 23:07:32 CET »
0
Cosa ti scrive sul txtQuery?

inserendo questo codice nel ConnessioneDb.java:

Codice (Java): [Seleziona]
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                StringBuilder sb = new StringBuilder();

                String line = null;
                try {
                        while ((line = reader.readLine()) != null) {
                                sb.append(line + "\n");
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                } finally {
                        try {
                                is.close();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
                return sb.toString();

Dovrebbe restituirti una stringa comprensibile.

Offline volley.sil

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows xp, e windows 7
Re:Valore di restituzione query php su database MySql
« Risposta #3 il: 21 Febbraio 2012, 10:35:10 CET »
0
alla fine abbiamo provato a cambiare.
connessione e passaggio dei parametri username e password:

Codice (Java): [Seleziona]
public boolean ConnessioneDbLogin(String str_usernamelogin, String str_pwdlogin) {
                         HttpClient httpclient = new DefaultHttpClient();
                         final int TIMEOUT_MILLISEC=10000;
                         HttpConnectionParams.setConnectionTimeout(httpclient.getParams(),TIMEOUT_MILLISEC );
                         HttpResponse response;
                         JSONObject json = new JSONObject();
                         try{
                         
                    //ci va l'ip pubblico del proprio computer trovato tramite www.whatismyip.com
                    HttpPost httppost = new HttpPost("http://93.42.230.226/provajson4.php");
                    json.put("username", str_usernamelogin);
                    json.put("pwd", str_pwdlogin);
                   
                    StringEntity se=new StringEntity(json.toString());
                    se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
                    httppost.setEntity(se);
                    response=httpclient.execute(httppost);
                    InputStream in = response.getEntity().getContent();
                    String returnString = convertStreamToString(in);
                    JSONObject returnJson=new JSONObject(returnString);
                    String result=returnJson.getString("result");
                           if(result.equals("success")){
                                   return true;
                           }else{
                                   return false;
                           }
                          }catch(Exception e){
                           e.printStackTrace();
                           return false;
                          }
                        }
               
        private String convertStreamToString(InputStream is) throws IOException{
                if(is != null){
                        Writer writer = new StringWriter();
                        char [] buffer = new char[1024];
                        try{
                            Reader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                            int n;
                           
                            while ((n = reader.read(buffer)) != -1) {
                                writer.write(buffer,0,n);
                              }
                        }
                        finally{
                                is.close();
                        }
                           
                        return writer.toString();
                }else{
                        return "";
                }
        }
  }

per quanto riguarda il php, abbiamo due pagine:
Codice (PHP): [Seleziona]
<?php

include_once '_utility2.php';

$obj = getJsonFromRequest(false);

$order = getJsonAttribute($obj, 'order', 'asc');

$mysqli = connessioneDB();

$query = "SELECT * FROM utentiregistrati WHERE username='$obj' order by nome " . $order;

$result2 = $mysqli->query($query);

$resp = array();
if($result2->num_rows > 0) {
        if ($row = $result2->fetch_array(MYSQLI_ASSOC))  {
                $elem = array();
                $elem['nome'] = $row['nome'];
               
                $elem['cognome'] = $row['cognome'];
                $elem['username'] = $row['username'];
                $elem['password'] = $row['password'];
                array_push($resp, $elem);
                $result="success";
        }  
}
else{
        $result="InvalidUserPass";
}
$sendJson['result']=$result;
echo(json_encode($sendJson));

$mysqli->close();

printJsonMessage(true, '', $resp);
?>
e la pagina utility2:
Codice (PHP): [Seleziona]
<?php
include_once '_config.php';

function connessioneDB() {
        $mysqli = new mysqli(DB_NOME_HOST, DB_USERNAME, DB_PASSWORD, DB_NOME_DATABASE);
        if (mysqli_connect_errno()) {  
                printJsonMessage(false, 'errore in fase di connessione al db');
        }

        return $mysqli;
}

function printJsonMessage($esito, $messaggio, $params = null) {
        $resp = array();
        $resp['esito'] = $esito;
        $resp['messaggio'] = $messaggio;
        $resp['params'] = $params;
        $json = json_encode($resp);
        echo $json;
        exit();
}

function getJsonFromRequest($check = true) {
        $json = @$_POST['json'];
        if ($json == '') {
                $json = @$_GET['json'];
                if ($json == '') {
                        if ($check) {
                                printJsonMessage(false, 'dati non presenti');
                        }
                        else {
                                return null;
                        }
                }
        }

        $obj = json_decode($json);
        if ($obj == null) {
                if ($check) {
                        printJsonMessage(false, 'errore in fase di decodifica');

                        }
                else {
                        return null;
                }
        }
        return $obj;
}

function getJsonAttribute($obj, $key, $def = '') {
        if ($obj == null) {
                return $def;
        }
        $val = $obj->{$key};
        if ($val == null || $val == '') {
                return $def;   
        }
        return $val;
}
?>
il problema è che la query restituisce sempre false. sicuramente c'è qualcosa di sbagliato del passaggio dei parametri. Qualcuno sa come risolvere la cosa?