Por favor favor usa las etiquetas de código GeSHi (tienes una lista para elegir el tipo de lenguaje). Modifica para ponerlas.
Tu lo que quieres es obtener, en php, solo los dias de trabajo o dias normales.
También te diré que no necesitas usar tantas comillas... Las comillas dobles ( " " ) solo son necesarias para que php interprete las barras invertidas ( \ ) y puedas imprimir códigos ASCII y otros carácteres especiales como nuevas lineas ( \n ), etc. Para simple texto con las normales es suficiente, tal solo cierralas y pones la variable.
$sql='UPDATE tbldias
SET dc_fecha_noti = ' . $fecha_noti . ',
dc_fecha_venci_noti = ' . $fecha_venci_noti . '
WHERE dc_num_accion = ' . $num_accion;
PHP no puede saber que dias son festivos (solo puede saber cual es Sabado y cual Domingo). Necesitarás crear una función con un array que contenga todos los dias festivos y que devuelva solo los que estén entre la fecha indicada y la fecha final (aunque si no son muchos no hace falta filtrarlos). No necesitas poner el año:
// $startDate sería $fecha_noti y $days los dias a sumar (por si los pides en el formulario)
function getWorkingDays($startDate, $days) {
// aquí tendrías que poner todos los dias festivos menos los sabados y domingos.
// o si son muchos crear una funcion que devuelva solo los necesarios...
// (por ejemplo 10 dias festivos a partir de la fecha indicada, dependiendo de $days)
'New Year\'s Day' => '01-01'
'Trivia Day' => '01-04'
'National Bird Day' => '01-05'
);
$weekend = array('Sun' => '','Sat' => ''); $date = new DateTime($startDate); // recuerda solo mes y dia
$nextDay = clone $date;
$i = 0;
while ($i < $days) {
$nextDay->add('P1D');
if (isset($holidays[$nextDay->format('m-d')])) continue; if (isset($weekend[$nextDay->format('D')])) continue; $nextDates[] = $nextDay->format('Y-m-d');
$i++;
}
return $nextDates;
}
Así lo harías en la página PHP:
require_once('conexion.php');
require_once('functions.php'); // si tienes un archivo para las funciones pon la función de arriba, o crealo
// si el formulario no está en esta página quita el isset() dejando solo el filter_input();
$num_accion = isset ( $_POST['num_accion'] ) ?
filter_input ( INPUT_POST
, 'num_accion' , FILTER_SANITIZE_STRING
) : NULL; $fecha_noti = isset ( $_POST['fecha_noti'] ) ?
filter_input ( INPUT_POST
, 'fecha_noti' , FILTER_SANITIZE_STRING
) : NULL; $days = isset( $_POST['days'] ) ?
(int
) $_POST['days'] : 10; // los que quieras poner por defecto
$fecha_venci_noti = getWorkingDays($fecha_noti, $days);
?>
// Aqui puede ir el formulario HTML
<form></form>