web-dev-qa-db-fra.com

Calculer la date de fin en fonction de la date de début et de la durée

Mon objectif est de calculer et afficher la date de fin en fonction du sélecteur de date par début et de doprdown pour choisir le nombre de semaines.

Jquery datetimepicker http://xdsoft.net/jqplugins/datetimepicker/ pour sélectionner la date de début et la liste déroulante pour sélectionner le nombre de semaines.

J'utilise les codes ci-dessous pour obtenir le résultat de la date de fin mais cela ne fonctionne pas:

  week_number_id.on('change', function(e) {
var selectvalue = $(this).val();
//Display 'loading' status in the target select list
date_result_id.html('<i class="uk-icon-spinner uk-icon-spin"></i>');
if (selectvalue == '') 
{
    date_result_id.html(initial_date_result_html);
} 
else 
{
    //Make AJAX request, using the selected value as the GET
    $.ajax({
        url: 'index.php',
        data:'option=com_mycom&task=getmydateHTML&dvalue='+selectvalue,
        success: function(output) {
            date_result_id.html(output);
            updateSelect(date_result_id.val());
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status +  ' ' + thrownError);
        }
    });
}
});

et sur le code php:

  public function getmydateHTML() {
  $jinput = JFactory::getApplication()->input;
  $db = JFactory::getDbo();
  $query = $db->getQuery(true);         
  $dt = $jinput->get ('dvalue');
  $choosendate = $jinput->get ('start_date');       
  $newdate = strtotime("+". $dt . "week", $choosendate);
  echo   date('M d, Y', $newdate);     
 exit; // this will stop Joomla processing, and not output template modules   etc.
   }

Mais après que le résultat du calcul affiche la date commençant le 01 janvier 1970, le nombre de semaines augmente correctement mais le code ne peut pas obtenir la date de début.

1
allogos

Votre script n'envoie pas le paramètre 'start_date' nulle part, il est donc paramétré par défaut sur 01.01.1970. Ajoutez le paramètre 'start_date' aux données $ .ajax ou ajoutez la valeur par défaut à $ jinput-> get ('start_date', some_default_val).

BTW. - exit; n'est pas une bonne pratique, il existe de meilleures méthodes: https://stackoverflow.com/a/13479338/2877359

1
Krossfire

Comme indiqué dans la réponse précédente, le paramètre start_date N'est pas envoyé via le champ data.

Dans tous les cas, je ne sais pas pourquoi interroge le serveur pour cette tâche simple - vous pouvez le faire du côté du client. Voir this SO answer à ce sujet.

0
itoctopus