AJAX
$.post("__URL__", {__VARIABLES__}, function(resp){
// Exito
});
Intl.NumberFormat("es-ES").format(precio*cantidad)
//------------------------------------------------------------------------------------------------
/* $('#input_login_email').blur(function(){
var email = $('#input_login_email').val();
var invalid_email_feedback = $('#invalid_email_feedback');
$.post("https://servingtec.cl/satpro/ajaxs/validate_user", {email: email}, function(resp) {
console.log('Resp Ajax', resp);
if (resp == 1) {
invalid_email_feedback.addClass('d-none');
$('#input_login_email').css('border','1px solid #008000');
}else if(resp == 0){
$('#input_login_email').css('border','1px solid #df4242');
invalid_email_feedback.removeClass('d-none');
}
});
}); */
//------------------------------------------------------------------------------------------------
/* $('#input_login_pass').on('keyup', function(){
inp = $('#input_login_pass');
if (inp.val().length >= 6 && $('#invalid_email_feedback').hasClass('d-none') && $('#input_login_email').val().length > 0) {
$('#login_submit_btn').attr('disabled', false).removeClass('disabled');
$('#invalid_pass').removeClass('d-none');
}else{
$('#login_submit_btn').attr('disabled', true).addClass('disabled');
}
}); */
//------------------------------------------------------------------------------------------------
/* $('#register_name').blur(function(){
var name = $('#register_name');
if (name.val().length < 6) {
$('#invalid_name').html('Nombre invalido. Minimo 6 caracteres');
}else{
$('#invalid_name').html('');
}
}); */
//------------------------------------------------------------------------------------------------
/* $('#register_email').blur(function(){
var name = $('#register_email');
if (name.val().length < 6) {
$('#invalid_email').html('Correo invalido');
}else{
$('#invalid_email').html('');
}
}); */
//------------------------------------------------------------------------------------------------
/* $('#register_password').blur(function(){
var name = $('#register_email');
if (name.val().length < 6) {
$('#invalid_email').html('Correo invalido');
}else{
$('#invalid_email').html('');
}
}); */
//------------------------------------------------------------------------------------------------
if ($key != 'iddevice') {
$tableName = $data['iddevice'] . "_" . $key;
$this->db->query("SHOW TABLES LIKE :tableName");
$this->db->bind(":tableName", $tableName);
$this->db->execute();
if (!$this->db->rowCount()) { // Tabla NO existe -> CREARLA
$this->db->query("CREATE TABLE IF NOT EXISTS `:tableName` (
`id` INT NOT NULL AUTO_INCREMENT ,
`ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`val` VARCHAR(50) NOT NULL ,
PRIMARY KEY (`id`)) ENGINE = MyISAM CHARSET=utf8 COLLATE utf8_general_ci");
$this->db->bind(":tableName", $tableName);
try {
$this->db->execute();
} catch (PDOException $e) {
return $e->getMessage();
}
}
}
//------------------------------------------------------------------------------------------------
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
DELETE FROM table_name WHERE some_column = some_value
SELECT column_name(s) FROM table_name
$this->db->query("SELECT * FROM table_name WHERE algunCampo = :placeholder");
$this->db->bind(":placeholder", $variable);
return $this->db->single(); resultSet(), execute()
Usos del FOR
for (item in list) print(item) // Iterate over items in a list
for (item in 'b'..'g') print(item) // Range of characters in an alphabet
for (item in 1..5) print(item) // Range of numbers
for (item in 5 downTo 1) print(item) // Going backward
for (item in 3..6 step 2) print(item) // Prints: 35
1.- Nuevo paquete: model
dentro de ese paquete crear nueva clase de datos: data class NOMBRE_CLASE(val nombreVariable: TipoVariable, etc, etc)
2.- Nuevo paquete: data
dentro de ese paquete crear nueva clase: Datasource
dentro de esa clase crear funcion loadData(): List { return listOf() }
3.- Nuevo paquete: adapter
dentro de ese paquete crear nueva clase: ItemAdapter que herede de RecylerView.Adapter(){}
dentro de esa clase crear sub-clase: ItemViewHolder(private val view: View): RecyclerView.ViewHolder(view){ }
private fun searchByName(query: String){
CoroutineScope(Dispatchers.IO).launch {
val call = Retrofit
.Builder()
.baseUrl(BASEURL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(APIService::class.java)
.getRecipeByName(query)
val resultado = call.body()
runOnUiThread{
if(call.isSuccessful){
val nombreRecetas = resultado?.recetas ?: emptyList()