2013-03-08 62 views
0

我创建了一个Android应用程序,该应用程序使用服务器上的PHP文件与MySQL数据库交互。 我创建了一个final string EXTRA_SOLDE,意图发送给其他活动以显示结果。使用Android管理MySQL数据库

一切都很好,但在其他活动中,TextView是空白的,就好像没有任何内容发送一样。请帮忙。

这是我的PHP文件:

<?php 
unset($_GET); 

if(isset($_POST['username'])) { 

    echo '<?xml version="1.0"?>'."\n"; 
    echo "<login>\n"; 

    // host doit être remplacé par le serveur de la base de données. 
    // user représente le nom d'utilisateur de la base de données. 
    // pass est le mot de passe pour accéder à cette base de données avec cette 
// utilisateur. 
    $con = mysql_connect("mysql6.000webhost.com","",""); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("a1287023_auth",$con); 

    if(get_magic_quotes_gpc()) { 
     $login = stripslashes($_POST['username']); 
    } else { 
     $login = $_POST['username']; 
    } 

    unset($_POST); 

    $kid = login($login); 
    if($kid == -1) { 
     error(3); 
    } else { 
     printf(' <user id="%d"/>'."\n",$kid); 
    } 

    echo "</login>"; 
} 

function error($ec) { 
    printf(' <error value="%d"/>'."\n".'</login>',$ec); 
    die(); 
} 

function login($login) { 
    $select = " 
     SELECT epargne 
     FROM auth_table 
     WHERE user_id = '$login' 
     "; 
    $fixedlogin = mysql_real_escape_string($login); 
    $query = sprintf($select, $fixedlogin); 
    $result = mysql_query($query); 
    if(mysql_num_rows($result) != 1) { return -1; }  
    $row = mysql_fetch_row($result); 
    return $row[0]; 
    return $row[1]; 
} 

?> 

这是我的活动,调用服务器上设置的PHP文件。

public void onClick(View v){ 
    Intent intent = getIntent(); 

    if (intent != null) { 
     String valeur=intent.getStringExtra(EXTRA_USER); 
     doLogin(valeur); 
    } 
    } 
});}  

private void doLogin(final String login) { 
    // Création d'un thread 
    Thread t = new Thread() 
    { 
     public void run() 
     { 
      Looper.prepare(); 
      // On se connecte au serveur afin de communiquer avec le PHP 
      DefaultHttpClient client = new DefaultHttpClient(); 
      HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000); 

      HttpResponse response; 
      HttpEntity entity; 

      try 
      { 
       // On établit un lien avec le script PHP 
       HttpPost post = new HttpPost(UPDATE_URL); 

       List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 

       nvps.add(new BasicNameValuePair("username", login)); 

       post.setHeader("Content-Type", "application/x-www-form-urlencoded"); 
       // On passe les paramètres login et password qui vont être récupérés 
       // par le script PHP en post 
       post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 
       // On récupère le résultat du script 
       response = client.execute(post); 

       entity = response.getEntity(); 

       InputStream is = entity.getContent(); 
       // On appelle une fonction définie plus bas pour traduire la réponse 
       read(is); 
       is.close(); 

       if (entity != null) 
        entity.consumeContent(); 
      } 
      catch (Exception e) 
      { 
       progressDialog.dismiss(); 
       createDialog("Error", "Connexion Impossible"); 
      } 
      Looper.loop(); 
     } 
    }; 
    t.start(); 
} 

private void read(InputStream in) 
{ 
    // On traduit le résultat d'un flux 
    SAXParserFactory spf = SAXParserFactory.newInstance(); 

    SAXParser sp; 

    try 
    { 
     sp = spf.newSAXParser(); 
     XMLReader xr = sp.getXMLReader(); 
     // Cette classe est définie plus bas 
     LoginContentHandler uch = new LoginContentHandler(); 

     xr.setContentHandler(uch); 

     xr.parse(new InputSource(in)); 

    } 
    catch (ParserConfigurationException e) 
    { 

    } 
    catch (SAXException e) 
    { 

    } 
    catch (IOException e) 
    { 
    } 

} 

class LoginContentHandler extends DefaultHandler 
{ 
    // Classe traitant le message de retour du script PHP 
    private boolean in_loginTag = false; 
    private int userID; 
    private String money ; 
    private boolean error_occured = false; 

    public void startElement(String n, String l, String q, Attributes a) 

    throws SAXException 
    { 
     if (l == "login") 
      in_loginTag = true; 
     if (l == "error") 
     { 
      progressDialog.dismiss(); 
      switch (Integer.parseInt(a.getValue("value"))) 
      { 
       case 1: 
        createDialog("Error", "Couldn't connect to Database"); 
        break; 
       case 2: 
        createDialog("Error", "Error in Database: Table missing"); 
        break; 
       case 3: 
        createDialog("Error", "Invalid username and/or password"); 
        break; 
      } 
      error_occured = true; 
     } 

     if (l == "user" && in_loginTag && a.getValue("id") != "") 
      // Dans le cas où tout se passe bien on récupère l'ID de l'utilisateur 
      userID = Integer.parseInt(a.getValue("id")); 
     money = String.valueOf(userID) ; 

    } 

    public void endElement(String n, String l, String q) throws SAXException 
    { 
     // on renvoie l'id si tout est ok 
     if (l == "login") 
     { 
      in_loginTag = false; 

      if (!error_occured) 
      { 
       progressDialog.dismiss(); 
       Intent i = new Intent(Budget.this,Epargne.class); 
       i.putExtra(EXTRA_SOLDE,money); 

       startActivity(i); 

      } 
     } 
    } 

    public void characters(char ch[], int start, int length) 
    { 
    } 

    public void startDocument() throws SAXException 
    { 
    } 

    public void endDocument() throws SAXException 
    { 
    } 

} 

} 
+1

您应该有删除SQL用户名/密码... – crazylpfan 2013-03-08 22:28:17

回答

0

简单初学者使用的用户为根本,没有密码! 在您的PHP文件中使用无密码! 并设置你的PhpmyAdmin设置为root!

PHP -file * define('DB_SERVER', "localhost"); // db server define('DB_USER', "root"); // db user define('DB_PASSWORD', ""); // db password (mention your db password here) define('DB_DATABASE', "diplom"); // database name*

+0

我刚刚删除的密码,当我在这里写的。 – DRYRA 2013-03-26 21:16:29