Bueno, lo primero muchas gracias a los tres
Aun asi no acabo de pillarle el truco a la validación, disculpadme.
En principio adapte el javascript que me recomendaisteis. (no lo voy a poner pos su excesiva longitud) . Concretamente este
http://www.forosdelweb.com/f13/faqs-javascript-105325-post325615/
que me genera 7 controles list :
añoinicial, mesinicial, diainicial,añofinal,mesfinal, diafinal y añobuque.
Hasta ahi todo correcto.
Pero lo que no se es como validar del lado del servidor. Es decir , si ya tengo en memoria estas 7 variables como hago para que en codigo php se validen. A modo de curiosidad me he creado una funcion (perdon a los puristas del lenguaje), que hace lo que yo quiero, pero no se como meterla en el script.
Os recuerdo el predicado de la select resumido:
Código PHP:
INSERT INTO tablareceptora (campo1 ... campon)
SELECT campo1 ... campon FROM tablaorigen
WHERE (CONDICIONES PREVIAS ) AND (tablaorigen.campo BETWEEN $fechainicial AND $fechafinal)
Lo que hace esta select es hacer una insercion de datos siempre que el rango de fechas sea el de la clausula WHERE . De modo que el año del buque debe ser o bien el añoinicial o bien el final
La funcion de testeo es esta
Código PHP:
<?
function chequeo_fecha ($fechainicio,$fechafin,$an)
{
// Array Fechas Iniciales
$m_fechas_0=array(substr($fechainicio,0,4),substr($fechainicio,4,2),substr($fechainicio,6,2),"Fecha inicio");
// Array Fechas Finales
$m_fechas_1=array(substr($fechafin,0,4),substr($fechafin,4,2),substr($fechafin,6,2),"Fecha fin");
// Array compuesto de fechas iniciales y fechas finales
$m_fechas=array($m_fechas_0,$m_fechas_1);
// Array de comprobacion dia mes
$comp_dm=array(0,0);
// Chequeo fechas iniciales y finales
for ( $i=0; $i<2 ;$i++ ) {
$var= checkdate( $m_fechas[$i][1], $m_fechas[$i][2],$m_fechas[$i][0]);
if (!$var) // si la fecha esta mal construida
$comp_dm[$i]= 0 ; // mal
else
$comp_dm[$i]= 1 ; // bien
}
if ($an== $m_fechas[0][0] || $an== $m_fechas[1][0]) // Compruebo año del buque
$comp_a= 1 ; // bien
else
$comp_a= 0 ; //mal
// ******BUCLE COPROBACIÓN*****
if ( $comp_a== 1 && $comp_dm[0] == 1 && $comp_dm[1] == 1 ){
// Comprobamos años
if ($m_fechas[0][0] > $m_fechas[1][0]) {
$resp= "INCORRECTO" ;
return $resp;
exit();
}
// Igual año y comparamos mes
if ($m_fechas[0][0] == $m_fechas[1][0] && $m_fechas[0][1] > $m_fechas[1][1]) {
$resp= "INCORRECTO" ;
return $resp;
exit();
}
// Igual mes y comparamos día
if( $m_fechas[0][1] == $m_fechas[1][1] && $m_fechas[0][2] > $m_fechas[1][2]){
$resp= "INCORRECTO" ;
return $resp;
exit();
}
$resp= "CORRECTO" ;
return $resp;
exit();
}
else
$resp= "INCORRECTO" ;
return $resp;
}
?>
Bueno, gracias de antemano por vuestra paciencia y ayuda.
Saludos , terrakeo