Reiniciar autoincremento en mysql

Si tenemos una tabla (nombredelatabla) con la clave autoincremental, con los valores:
1 pepito
2 jaimito
3 equivocado

Si borramos el 3, cuando queramos insertar un valor nos pondrá el 4.

para poder reutilizar el 3, tenemos que modificar la tabla:

Alter table nombredelatabla auto_increment=3

Donde el número es el que queremos que sea el siguiente

Presentar un input text con texto cargado en Android

Para presentar una ventana con una caja de texto y poner un texto por defecto:

private void preguntaTexto(){
AlertDialog.Builder alert = new AlertDialog.Builder(this);

alert.setTitle(getString(R.string.titulosms));
alert.setMessage(getString(R.string.telefonosms));

// Set an EditText view to get user input
final EditText input = new EditText(this);

input.setText("TEXTO_QUE_QUEREMOS CARGAR");
alert.setView(input);

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String textorecuperado= input.getText().toString();
//aqui hacemos lo que queramos con el texto que el usuario ha introducido

});

alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// No hacemos nada
}
});

alert.show();
}

------------------------------------
@Override
public void onAttachedToWindow() {
openOptionsMenu();
};

Evitar fechas 00/00/0000 con mysql

Cuando trabajamos con fechas en mysql se guardan en formato yyyy-mm-dd mientras que normalmente en pantalla las queremos ver en formato dd/mm/YYYY.

Para ellos vamos a ver las consultas necesarias para guardar y recuperar los datos y evitar que nos aparezcan datos 00/00/0000

Cuando recuperamos el valor ponemos en la sql

if(fecha is not null,date_format(fecha,'%d/%m/%Y'),'') as fec

Si llamamos siempre a date_format cuando el valor es null el resultado es 00/00/0000

Y a la hora de guardar solo formateamos la fecha si tiene valor

update la_tabla_que_sea set
 fecha=if ('".$_POST['campo_fecha_web']."'!='',str_to_date('".$_POST['campo_fecha_web']."','%d/%m/%Y'),null)
where id=id_necesario_para_actualizar

Con esto evitamos llamar a str_to_date si el valor está vacio, que es lo que origina que se guarde el 00/00/0000

Imagen de fondo a pantalla completa

Ponemos como estilo:

body {
  background: url(imagen.jpg) center center cover no-repeat fixed;
}
@media only screen and (max-width: 767px) {
  body {
    background-image: url(imagenmaspeque.jpg);
  }
}

Y como código de la pagina:

Todo lo que tengas que poner.

El resultado seria:

Todo lo que tengas que poner

Utilizar marcadores en eclipse

Una vez que estamos en la linea que queremos en el menú Edit->Add bookmark

Selección_002

Le ponemos un nombre al marcador

Selección_003

Vemos que al lado de la linea aparece una barra azul, si dejamos el ratón encima nos indica el nombre del marcador.

Selección_004Selección_007

Para ver los marcadores, hay que activar la vista, en el menú Window->Show->View->Bookmarks ( si no aparece hay que pulsar en Other, y buscarlo manualmente )

Selección_005

La vista de marcadores indica el nombre que le pusimos, el fichero en el que está y la linea

Selección_006

Si queremos eliminarlo pulsamos botón derecho sobre el marcador y elegimos “Delete”

Selección_008

PHP y el error al restar fechas después del cambio de hora

partimos de una funcion en PHP que resta dias

function restadias($fecha,$dias){
	list( $dia, $mes, $year ) = split( '/', $fecha );
	//teniendo la fecha tenemos que obtener el lunes y el viernes de esa semana.
	$f=mktime(0 , 0, 0, (int)$mes  , (int)$dia, (int)$year);
	$sumadias=60*60*24*($dias);
	$l=$f-$sumadias;
		$dia1=date('j',$l);
	if ($dia1<10){
		$d="0".$dia1;
	}else{
		$d=$dia1;
	}
	$mes1=date('n',$l);
	if ($mes1<10){
		$m="0".$mes1;
	}else{
		$m=$mes1;
	}
	$year1=date('Y',$l);
	$nf   = $d."/".$m."/".$year1;
	
	return $nf;
}

Si vemos la función, lo que hace es partir la fecha de texto dd/mm/aaaa y obtener el valor en segundos con mktime, luego los días que va a restar los multiplica por el número de segundos del día y hace la resta, el resultado lo formatea otra vez en formato dd/mm/aaaa

Así para el ejemplo:

echo restadias("03/03/2016",1);

El resultado es o debería de ser 02/03/2016

Pero para restadias("28/03/2016",1) cuando debería de darnos el día 27 nos devuelve un fatídico 26/03/2016.


1459123200 - 86400  = 1459036800

Y todo por el cambio de hora, como la función realiza el mktime pasando 0 en horas, minutos y segundos, al restar 86400 segundos según la funcion $dia1=date('j',$l)
Y lo vemos mejor viendo la hora:

date("H",$l);

Donde parte de las 0 y nos devuelve 23.

para solucionarlo, modificamos la función restadias por:

function restadias($fecha,$dias){
	list( $dia, $mes, $year ) = split( '/', $fecha );
	//teniendo la fecha tenemos que obtener el lunes y el viernes de esa semana.
	$f=mktime(12 , 0, 0, (int)$mes  , (int)$dia, (int)$year);
	$sumadias=60*60*24*($dias);
	$l=$f-$sumadias;
		$dia1=date('j',$l);
	if ($dia1<10){
		$d="0".$dia1;
	}else{
		$d=$dia1;
	}
	$mes1=date('n',$l);
	if ($mes1<10){
		$m="0".$mes1;
	}else{
		$m=$mes1;
	}
	$year1=date('Y',$l);
	$nf   = $d."/".$m."/".$year1;
	
	return $nf;
}

Donde hemos puesto como hora las 12, asi nos evitamos el problema del cambio de hora, de 2 a 3 de la mañana.