#2 Después de esta caída...muchísimas gracias por tus respuesta, realmente me tranquilizan.
De todos modos te específico sobre esta:
"si me pusiesen un sniffer entre la terminal y la capa bbdd seguro que captarían algunas estructuras de tablas."
¿Estás pidiendo las tablas al MySQL a mano? Mala idea. Tienes que abstraerlo: tu terminal no debe saber de tablas, sólo del modelo que espera (lo que viene en JSON).
Como he dicho, el PHP recibe unos datos por POST desde Android, y la consulta está montada en el PHP, después de realizar las consultas y hacer todo lo que tenga que hacer el PHP devuelve lo que tenga que devolver en JSON.
Véase
PHP
<?php
/*
* Following code will create a new product row
* All product details are read from HTTP Post Request
*/
// array for JSON response
$response = array();
// check for required fields
if (isset($_POST['nombre']) && isset($_POST['cedula']) && isset($_POST['apellido'])) {
$nombre = $_POST['nombre'];
$cedula = $_POST['cedula'];
$apellido = $_POST['apellido'];
$sueldo = $_POST['sueldo'];
// include db connect class
require_once __DIR__ . '/db_connect.php';
// connecting to db
$db = new DB_CONNECT();
// mysql inserting a new row
$result = mysql_query("INSERT INTO empleados(cedula, nombre, apellido, sueldo) VALUES('$cedula', '$nombre', '$apellido', '$sueldo')");
// check if row inserted or not
if ($result) {
// successfully inserted into database
$response["success"] = 1;
$response["message"] = "Empleado successfully created.";
// echoing JSON response
echo json_encode($response);
} else {
// failed to insert row
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
// echoing JSON response
echo json_encode($response);
}
} else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
// echoing JSON response
echo json_encode($response);
}
?>
Android
public class NewEmpladoActivity extends Activity {
// Progress Dialog
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
EditText inputName;
EditText inputApe;
EditText inputCed;
EditText inputSueldo;
// url to create new Empleado Reemplaza la IP de tu equipo o la direccion de tu servidor
// Si tu servidor es tu PC colocar IP Ej: "http://127.97.99.200/taller06oct/..", no colocar "http://localhost/taller06oct/.."
private static String url_create_Empleado = "http://AquiTuServidor/taller06oct/nuevoempleado.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_empleado);
// Edit Text
inputName = (EditText) findViewById(R.id.inputName);
inputCed = (EditText) findViewById(R.id.inputCedula);
inputApe = (EditText) findViewById(R.id.inputApellido);
inputSueldo = (EditText) findViewById(R.id.inputSueldo);
// Create button
Button btnCreateEmpleado = (Button) findViewById(R.id.btnCreateEmpleado);
// button click event
btnCreateEmpleado.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// creating new Empleado in background thread
new CreateNewEmpleado().execute();
}
});
}
/**
* Background Async Task to Create new Empleado
* */
class CreateNewEmpleado extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(NewEmpladoActivity.this);
pDialog.setMessage("Registrando Empleado..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
/**
* Creating Empleado
* */
protected String doInBackground(String... args) {
String name = inputName.getText().toString();
String ape = inputApe.getText().toString();
String cedula = inputCed.getText().toString();
String sueldo = inputSueldo.getText().toString();
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("nombre", name));
params.add(new BasicNameValuePair("apellido", ape));
params.add(new BasicNameValuePair("cedula", cedula));
params.add(new BasicNameValuePair("sueldo", sueldo));
// getting JSON Object
// Note that create Empleado url accepts POST method
JSONObject json = jsonParser.makeHttpRequest(url_create_Empleado,
"POST", params);
// check log cat fro response
Log.d("Create Response", json.toString());
// check for success tag
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully created Empleado
Intent i = new Intent(getApplicationContext(), EmpleadosActivity.class);
startActivity(i);
// closing this screen
finish();
} else {
// failed to create Empleado
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* After completing background task Dismiss the progress dialog
* **/
protected void onPostExecute(String file_url) {
// dismiss the dialog once done
pDialog.dismiss();
}
}
}
Esto lo acabo de encontrar por internet, pero es básicamente lo que me refiero.