Foros del Web » Programando para Internet » Android »

Devolver error en consulta PHP a base de datos

Estas en el tema de Devolver error en consulta PHP a base de datos en el foro de Android en Foros del Web. Hola! Estoy empezando a programar un poco en Android. De momento he creado una sencilla aplicación desde donde puedes "iniciar sesión" y "registrarse" No se ...
  #1 (permalink)  
Antiguo 18/06/2012, 08:10
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Devolver error en consulta PHP a base de datos

Hola!

Estoy empezando a programar un poco en Android. De momento he creado una sencilla aplicación desde donde puedes "iniciar sesión" y "registrarse"

No se como hacer para que, al registrarse, si ese usuario ya existe en la base de datos, devuelva un error a la aplicación android en forma de toast o algo sencillo
Al igual que ese error, tambien me gustaria poder reproducir otros...

Aqui les dejo el codigo java y el php:
Código PHP:
<?
$nick 
$_POST['Nick'];
$email $_POST['Email'];
$pass md5($_POST['Pass']);


$link mysql_connect('host''usuario...''pass');
if (!
$link) {
    die(
'No pudo conectar: ' mysql_error());
}

mysql_select_db("base de datos");


$pais "España";
$cumpledia '01';
$cumplemes '01';
$cumpleano '2012';
$fechanacimiento "$cumpleano-$cumplemes-$cumpledia";
$fecharegistro date("Y-m-d H:i:s");
$validacion "no";
$level "2";
$baneo "no";
$ipregistro $_SERVER['REMOTE_ADDR'];

mysql_query(sprintf("INSERT INTO usuarios (nick,email,pass,level,pais,fechanacimiento,fecharegistro,ipregistro,validacion,baneo) values 
('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"
,
mysql_real_escape_string($nick),
mysql_real_escape_string($email),
mysql_real_escape_string($pass),
mysql_real_escape_string($level),
mysql_real_escape_string($pais),
mysql_real_escape_string($fechanacimiento),
mysql_real_escape_string($fecharegistro),
mysql_real_escape_string($ipregistro),
mysql_real_escape_string($validacion),
mysql_real_escape_string($baneo)));
?>
Código PHP:
registrar.setOnClickListener(new OnClickListener() {
            public 
void onClick(View v) {

ArrayList<Stringparametros = new ArrayList<String>();
parametros.add("Nick");
parametros.add(nick.getText().toString());
parametros.add("Email");
parametros.add(email.getText().toString());
parametros.add("Pass");
parametros.add(pass.getText().toString());
parametros.add("Nacimiento");
parametros.add(nacimiento.toString());



    
Post post = new Post();
    
JSONArray datos post.getServerData(parametros,
                                                   
"http://web/registroandroid.php");


   
Toast.makeText(getBaseContext(),
                                                  
"¡Has sido registrado correctamente! Ya puedes iniciar sesión"Toast.LENGTH_SHORT)
                                                                        .
show();
   
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
        
        
startActivity(intent);
            }
            }); 
  #2 (permalink)  
Antiguo 18/06/2012, 11:39
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Devolver error en consulta PHP a base de datos

Debes generar una respuesta desde el código php, por ejemplo:

Código PHP:

    
if($e=mysql_fetch_assoc($q)) {
            
$output[]=array("user" => "true");
    } else {
          
$output[]=array("user" => "false");
    }


    print(
json_encode($output)); 
y desde tu código en android lees con AsyncTask y actúas según el valor de "user"

Aquí tienes un ejemplo:

http://www.helloandroid.com/tutorial...mysql-database
  #3 (permalink)  
Antiguo 18/06/2012, 14:50
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Devolver error en consulta PHP a base de datos

Cita:
Iniciado por cucuru Ver Mensaje
Debes generar una respuesta desde el código php, por ejemplo:

Código PHP:

    
if($e=mysql_fetch_assoc($q)) {
            
$output[]=array("user" => "true");
    } else {
          
$output[]=array("user" => "false");
    }


    print(
json_encode($output)); 
y desde tu código en android lees con AsyncTask y actúas según el valor de "user"

Aquí tienes un ejemplo:

http://www.helloandroid.com/tutorial...mysql-database
Jejeje... lo veo algo complicado...

Vamos a poner el ejemplo que yo quiero realizar. A continuación te pongo el código PHP de ejemplo para detectar campos vacios...
Código PHP:
// Ejemplo de "if"
if (($nick == '') or ($email == '') or ($pass == '')){
// Retornariamos error de Campos vacios a android...

$output[]=array("user" => "campovacio");
print(
json_encode($output))

}else{
// Si no pues continuariamos con el registro...

mysql_query(sprintf("INSERT INTO usuarios (nick,email,pass,level,pais,fechanacimiento,fecharegistro,ipregistro,validacion,baneo) values 
('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')"
,
mysql_real_escape_string($nick),
mysql_real_escape_string($email),
mysql_real_escape_string($pass),
mysql_real_escape_string($level),
mysql_real_escape_string($pais),
mysql_real_escape_string($fechanacimiento),
mysql_real_escape_string($fecharegistro),
mysql_real_escape_string($ipregistro),
mysql_real_escape_string($validacion),
mysql_real_escape_string($baneo)));
}
?> 
¿Estaría bien enviando ese output?
Luego me faltaria la parte de leerlo en android... que eso si que no se como hacerlo jejejeje...
Te dejo el código, lo he retocado un poco...
Código PHP:
try {


    
Post post = new Post();
    
JSONArray datos post.getServerData(parametros,
                                                   
"http://web.com/registroandroid.php");


   
Toast.makeText(getBaseContext(),
                                                  
"¡Has sido registrado correctamente! Ya puedes iniciar sesión"Toast.LENGTH_SHORT)
                                                                        .
show();
   
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
        
        
startActivity(intent);
} catch (
Exception e) {
    
Toast.makeText(getBaseContext(),
                                                   
"Error al conectar con el servidor. ",
                                                   
Toast.LENGTH_SHORT).show();

Ahi abria que añadirle antes de mostrar el Toast de "usuario registrado" un IF en caso de que no se hubiera registrado por un fallo y mostrarlo.
Muchas gracias!
  #4 (permalink)  
Antiguo 19/06/2012, 00:36
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Devolver error en consulta PHP a base de datos

Pues aunque suene complicado... es la forma de hacerlo, tienes que devolver el output y leerlo como te he puesto en el enlace, no hay otra manera...

Intentalo con el ejemplo que pone en el enlace o busca en google ejemplos de httpresponse, es complicado la primera vez, pero luego te darás cuenta que sólo tienes que tocar el JSON y que es bastante sencillo una vez lo entiendes.

Saludos
  #5 (permalink)  
Antiguo 19/06/2012, 05:16
 
Fecha de Ingreso: enero-2011
Mensajes: 59
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: Devolver error en consulta PHP a base de datos

Gracias por tu ayuda

Al final ya lo he resuelto, aunque de otra forma, tomando los valores del output:
Código PHP:
if (($nick == '') or ($email == '') or ($pass == '')){
$output[]=array("error" => "2");
}else{
// Insert a la tabla...
$output[]=array("error" => "2");

Código PHP:
try {


    
Post post = new Post();
    
JSONArray datos post.getServerData(parametros,
                                                   
"http://web.com/registroandroid.php");
    
    
JSONObject json_data datos.getJSONObject(0);
    
int error json_data.getInt("error");
    
    switch (
error){
    case 
1:
        
Toast.makeText(getBaseContext(),
                
"¡Has sido registrado correctamente! Ya puedes iniciar sesión"Toast.LENGTH_SHORT)
                                      .
show();
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);

startActivity(intent);
        
        break;
        
    case 
2:
        
Toast.makeText(getBaseContext(),
                
"Rellena todos los campos"Toast.LENGTH_SHORT)
                                      .
show();
        break;
    }

   

} catch (
Exception e) {
    
Toast.makeText(getBaseContext(),
                                                   
"Error al conectar con el servidor. ",
                                                   
Toast.LENGTH_SHORT).show();

Y ahora ya puedo continuar mostrando otros errores a la hora de comprobar...
Muchas gracias!!

Etiquetas: devolver, java, php, apps
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.