+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Datum wird nicht übernommen

  1. #1
    Neu an Board
    Registriert seit
    05.11.2016
    Beiträge
    8
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Datum wird nicht übernommen

    Hallo,

    Ich habe auf der Startseite einen Buchungsbanner, wenn der Kunde Daten eingibt sollen diese an die Software,
    welche unter index.php/buchen integriert ist, übergeben werden.

    Dies funktioniert soweit (Parameter-Übergabe funktioniert), allerdings gibt es zwei Fehler, welche ich nicht finde:

    1. Es wird nie das ausgewählte Datum für die Anreise übergeben sondern immer das aktuelle Datum.

    2. Es wird nie das ausgewählte Datum für die Abreise übergeben sondern immer 2 Tage nach Anreise-Datum.


    Die Format-Umwandlung funktioniert auch, um das zu testen habe ich ein einfaches alert() eingebaut.

    http://neu.casa-daenzo.de/

    Zum Testen:
    Nach Klick auf Check am Ende der URL -0 anhängen.

    Die betreffenden Zeilen befindet sich bei den Parametern WBS_ARRIV und WBS_DEPART also zeile 150 und 167, dort muss der Fehler stecken (vermute ich).

    Meine JavaScript-Kenntnisse sind auf einem hohen Level, aber leider sieht es mit PHP nicht so aus.

    Würde mich sehr freuen, wenn mir jms weiter helfen kann.


    Hier die betreffende PHP-Datei:

    PHP-Code:
    <?php
    defined
    ('_JEXEC') or die;

    JHtml::_('behavior.framework');
    $config JFactory::getConfig();
    $solidresUtilities SRFactory::get('solidres.utilities.utilities');
    $tzoffset $config->get('offset');
    $timezone = new DateTimeZone($tzoffset);
    $dateCheckIn JDate::getInstance();
    $dateCheckOut JDate::getInstance();
    $solidresConfig JComponentHelper::getParams('com_solidres');
    $minDaysBookInAdvance $solidresConfig->get('min_days_book_in_advance'0);
    $maxDaysBookInAdvance $solidresConfig->get('max_days_book_in_advance'0);
    $minLengthOfStay $solidresConfig->get('min_length_of_stay'1);
    $datePickerMonthNum $solidresConfig->get('datepicker_month_number'3);
    $weekStartDay $solidresConfig->get('week_start_day'1);
    //$dateFormat = $solidresConfig->get('date_format', 'd-m-Y');
    $dateFormat 'd-m-Y';
    $jsDateFormat $solidresUtilities::convertDateFormatPattern($dateFormat);
    $roomsOccupancyOptionsCount count($roomsOccupancyOptions);
    $maxRooms $params->get('max_room_number'10);
    $max*****$params->get('max_*****_number'10);
    $maxChildren $params->get('max_child_number'10);

    // These variables are used to set the defaultDate of datepicker
    $defaultCheckinDate = isset($checkin) ? JDate::getInstance($checkin$timezone)->format('Y-m-d'true) : '';
    $defaultCheckoutDate = isset($checkout) ? JDate::getInstance($checkout$timezone)->format('Y-m-d'true) : '';
    if (!empty(
    $defaultCheckinDate)) :
        
    $defaultCheckinDateArray explode('-'$defaultCheckinDate);
        
    $defaultCheckinDateArray[1] -= 1// month in javascript is less than 1 in compare with month in PHP
    endif;

    if (!empty(
    $defaultCheckoutDate)) :
        
    $defaultCheckoutDateArray explode('-'$defaultCheckoutDate);
        
    $defaultCheckoutDateArray[1] -= 1// month in javascript is less than 1 in compare with month in PHP
    endif;

    $doc JFactory::getDocument();
    JHtml::_('script'SRURI_MEDIA.'/assets/js/datePicker/localization/jquery.ui.datepicker-'.JFactory::getLanguage()->getTag().'.js'falsefalse);
    $doc->addScriptDeclaration('
        Solidres.jQuery(function($) {
            var minLengthOfStay = '
    .$minLengthOfStay.';
            var checkout = $(".checkout_datepicker_inline_module").datepicker({
                minDate : "+' 
    . ( $minDaysBookInAdvance $minLengthOfStay ). '",
                numberOfMonths : '
    .$datePickerMonthNum.',
                showButtonPanel : true,
                dateFormat : "'
    .$jsDateFormat.'",
                firstDay: '
    .$weekStartDay.',
                ' 
    . (isset($checkout) ? 'defaultDate: new Date(' implode(',' $defaultCheckoutDateArray) .'),' '') . '
                onSelect: function() {
                    $("#sr-checkavailability-form input[name=\'checkout\']").val($.datepicker.formatDate("yy-mm-dd", $(this).datepicker("getDate")));
                    $("#sr-checkavailability-form .checkout_module").text($.datepicker.formatDate("'
    .$jsDateFormat.'", $(this).datepicker("getDate")));
                    $("#sr-checkavailability-form .checkout_datepicker_inline_module").slideToggle();
                    $("#sr-checkavailability-form .checkin_module").removeClass("disabledCalendar");
                }
            });
            var checkin = $("#sr-checkavailability-form .checkin_datepicker_inline_module").datepicker({
                minDate : "+' 
    .  $minDaysBookInAdvance 'd",
                '
    .($maxDaysBookInAdvance 'maxDate: "+'. ($maxDaysBookInAdvance) . '",' '' ).'
                numberOfMonths : '
    .$datePickerMonthNum.',
                showButtonPanel : true,
                dateFormat : "'
    .$jsDateFormat.'",
                '
    . (isset($checkin) ? 'defaultDate: new Date(' implode(',' $defaultCheckinDateArray) .'),' '') . '
                onSelect : function() {
                    var currentSelectedDate = $(this).datepicker("getDate");
                    var checkoutMinDate = $(this).datepicker("getDate", "+1d");
                    checkoutMinDate.setDate(checkoutMinDate.getDate() + minLengthOfStay);
                    checkout.datepicker( "option", "minDate", checkoutMinDate );
                    checkout.datepicker( "setDate", checkoutMinDate);

                    $("#sr-checkavailability-form input[name=\'checkin\']").val($.datepicker.formatDate("yy-mm-dd", currentSelectedDate));
                    $("#sr-checkavailability-form input[name=\'checkout\']").val($.datepicker.formatDate("yy-mm-dd", checkoutMinDate));

                    $("#sr-checkavailability-form .checkin_module").text($.datepicker.formatDate("'
    .$jsDateFormat.'", currentSelectedDate));
                    $("#sr-checkavailability-form .checkout_module").text($.datepicker.formatDate("'
    .$jsDateFormat.'", checkoutMinDate));
                    $("#sr-checkavailability-form .checkin_datepicker_inline_module").slideToggle();
                    $("#sr-checkavailability-form .checkout_module").removeClass("disabledCalendar");
                },
                firstDay: '
    .$weekStartDay.'
            });
            $("#sr-checkavailability-form .ui-datepicker").addClass("notranslate");
            $("#sr-checkavailability-form .checkin_module").click(function() {
                if (!$(this).hasClass("disabledCalendar")) {
                    $("#sr-checkavailability-form .checkin_datepicker_inline_module").slideToggle("slow", function() {
                        if ($(this).is(":hidden")) {
                            $("#sr-checkavailability-form .checkout_module").removeClass("disabledCalendar");
                        } else {
                            $("#sr-checkavailability-form .checkout_module").addClass("disabledCalendar");
                        }
                    });
                }
            });
        
            $("#sr-checkavailability-form .checkout_module").click(function() {
                if (!$(this).hasClass("disabledCalendar")) {
                    $("#sr-checkavailability-form .checkout_datepicker_inline_module").slideToggle("slow", function() {
                        if ($(this).is(":hidden")) {
                            $("#sr-checkavailability-form .checkin_module").removeClass("disabledCalendar");
                        } else {
                            $("#sr-checkavailability-form .checkin_module").addClass("disabledCalendar");
                        }
                    });
                }
            });

            $(".room_quantity").change(function() {
                var curQuantity = $(this).val();
                $(".room_num_row").each(function( index ) {
                    var index2 = index + 1;
                    if (index2 <= curQuantity) {
                        $("#room_num_row_" + index2).show();
                        $("#room_num_row_" + index2 + " select").removeAttr("disabled");
                    } else {
                        $("#room_num_row_" + index2).hide();
                        $("#room_num_row_" + index2 + " select").attr("disabled", "disabled");
                    }
                });
            });

            if ($(".room_quantity").val() > 0) {
                $(".room_quantity").trigger("change");
            }
        });
    '
    );
    ?>

    <form id="sr-checkavailability-form" action="<?php echo JRoute::_('index.php/buchen'false)?>" method="GET" class="form-stacked sr-validate">
        <fieldset>
            <div class="gk-sr-arrival-data">
                <div class="gk-sr-check-date">
                    <label>
                        <?php echo JText::_('TPL_GK_LANG_SR_SEARCH_CHECKIN_DATE')?>
                    </label>
                    <div class="checkin_module datefield">
                        <?php echo isset($checkin) ?
                            
    JDate::getInstance($checkin$timezone)->format($dateFormattrue) :
                            
    $dateCheckIn->add(new DateInterval('P'.($minDaysBookInAdvance).'D'))->setTimezone($timezone)->format($dateFormattrue?>
                    </div>
                    <div class="checkin_datepicker_inline_module datepicker_inline" style="display: none"></div>
                    <?php // this field must always be "Y-m-d" as it is used internally only ?>
                    <input type="hidden" id="anreise" name="WBS_ARRIV" value="<?php echo isset($checkin) ?
                        
    JDate::getInstance($checkin$timezone)->format('Y-m-d'true) :
                        
    $dateCheckIn->add(new DateInterval('P'.($minDaysBookInAdvance).'D'))->setTimezone($timezone)->format('Y-m-d'true?>" />
                </div>
                
                <div class="gk-sr-check-date">
                    <label>
                        <?php echo JText::_('TPL_GK_LANG_SR_SEARCH_CHECKOUT_DATE')?>
                    </label>
                    <div class="checkout_module datefield">
                        <?php echo isset($checkout) ?
                            
    JDate::getInstance($checkout$timezone)->format($dateFormattrue) :
                            
    $dateCheckOut->add(new DateInterval('P'.($minDaysBookInAdvance $minLengthOfStay).'D'))->setTimezone($timezone)->format($dateFormattrue)
                        
    ?>
                    </div>
                    <div class="checkout_datepicker_inline_module datepicker_inline" style="display: none"></div>
                    <?php // this field must always be "Y-m-d" as it is used internally only ?>
                    <input type="hidden" id="abreise" name="WBS_DEPART" value="<?php echo isset($checkout) ?
                        
    JDate::getInstance($checkout$timezone)->format('Y-m-d'true) :
                        
    $dateCheckOut->add(new DateInterval('P'.($minDaysBookInAdvance $minLengthOfStay).'D'))->setTimezone($timezone)->format('Y-m-d'true?>" />
                </div>
        
                <?php if ($params->get('enable_room_quantity_option'0)) : ?>
                <div class="gk-sr-check-rooms">
                    <label><?php echo JText::_('SR_SEARCH_ROOMS'?></label>
                    <select class="span12 room_quantity" name="">
                        <?php for ($room_num 1$room_num <= $maxRooms$room_num ++) : ?>
                            <option <?php echo $room_num == $roomsOccupancyOptionsCount 'selected' '' ?> value="<?php echo $room_num  ?>"><?php echo $room_num  ?></option>
                        <?php endfor ?>
                    </select>
                </div>
                <?php endif; ?>
            </div>
            
            <?php if ($params->get('enable_room_quantity_option'0)) : ?>
                <?php for ($room_num 1$room_num <= $maxRooms$room_num ++) : ?>
                <div class="row-fluid room-list">
                    <div class="room_num_row" id="room_num_row_<?php echo $room_num ?>" style="<?php echo $room_num 'display: none' '' ?>">
                        <dl>
                            <dd>
                                <label><?php echo JText::_('SR_SEARCH_ROOM_*****S'?></label>
                                <select <?php echo $room_num 'disabled''' ?> class="span12" name="WBS_OCC">
                                    <?php
                                    
    for ($a 1$a <= $max*****s$a ++) :
                                        
    $selected '';
                                        if (isset(
    $roomsOccupancyOptions[$room_num]['*****s'])
                                            &&
                                            (
    $a == $roomsOccupancyOptions[$room_num]['*****s'])
                                        ) :
                                            
    $selected 'selected';
                                        endif;
                                        
    ?>
                                        <option <?php echo $selected ?> value="<?php echo $a ?>"><?php echo $a ?></option>
                                    <?php
                                    
    endfor
                                    
    ?>
                                </select>
                            </dd>
                            <dd>
                                <label><?php echo JText::_('SR_SEARCH_ROOM_CHILDREN'?></label>
                                <select <?php echo $room_num 'disabled''' ?> class="span12" name="">
                                    <?php
                                    
    for ($c 0$c <= $maxChildren$c ++) :
                                        
    $selected '';
                                        if (isset(
    $roomsOccupancyOptions[$room_num]['children'])
                                            &&
                                            
    $c == $roomsOccupancyOptions[$room_num]['children']
                                        ) :
                                            
    $selected 'selected';
                                        endif;
                                        
    ?>
                                        <option <?php echo $selected ?> value="<?php echo $c ?>"><?php echo $c ?></option>
                                    <?php
                                    
    endfor
                                    
    ?>
                                </select>
                            </dd>
                        </dl>
                    </div>
                </div>
                <?php endfor; ?>
            <?php endif; ?>
            
            <div>
                <div class="action">
                    <button class="btn" type="submit"><?php echo JText::_('SR_SEARCH')?></button>
                </div>
            </div>
        </fieldset>

    </form>


    **********
    var anreise = document.getElementById('anreise'),
        abreise = document.getElementById('abreise');
        
        alert(anreise.value + " " + abreise.value);
    </script>
    Geändert von vsenol (04.12.2016 um 15:59 Uhr)

  2. #2
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    5.622
    Bedankte sich
    123
    Erhielt 2.108 Danksagungen
    in 1.997 Beiträgen

    Standard

    Das inputfeld z.B. anreise wird auf der Seite nicht durch das Javascript gesetzt, sondern behält das alte Datum.
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Support via PN - Tipps & Tricks - JPlugger

  3. Erhielt Danksagungen von:


  4. #3
    Wohnt hier Avatar von Re:Later
    Registriert seit
    21.04.2014
    Ort
    Berlin
    Beiträge
    4.432
    Bedankte sich
    119
    Erhielt 1.742 Danksagungen
    in 1.544 Beiträgen

    Standard

    Man wählt ein Datum, aber die versteckten INPUT-Felder werden nicht aktualisiert.

    Bsp. 20.12.2016

    Code:
    <div class="gk-sr-check-date">
     <label>
      Check-in </label>
    
    
    <div class="checkin_module datefield">20-12-2016</div>
    
    
    <div class="checkin_datepicker_inline_module datepicker_inline hasDatepicker" style="display: none;" id="dp1480868526844">
    ...
    </div>
     
     
     <input id="anreise" name="WBS_ARRIV" value="2016-12-04" type="hidden">
    
    
    </div>
    Ich find da nix, was auf ein onChange des datefields oder ähnlich reagieren soll und die INPUTs aktualisiert.
    Joomlafachmann: https://www.ghsvs.de

  5. Erhielt Danksagungen von:


  6. #4
    Neu an Board
    Registriert seit
    05.11.2016
    Beiträge
    8
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Danke erstmal, aber ich muss wissen warum das so ist, also hier nochmal der betreffende Code eingegrenzt:


    PHP-Code:
    <div class="checkin_datepicker_inline_module datepicker_inline" style="display: none"></div>
                    <?php // this field must always be "Y-m-d" as it is used internally only ?>
                    <input type="hidden" id="anreise" name="WBS_ARRIV" value="<?php echo isset($checkin) ?
                        
    JDate::getInstance($checkin$timezone)->format('Y-m-d'true) :
                        
    $dateCheckIn->add(new DateInterval('P'.($minDaysBookInAdvance).'D'))->setTimezone($timezone)->format('Y-m-d'true?>" />
    Der conditional Operator wird benutzt und wenn ein Wert gesetzt wurde, dann diesen, andernfalls das aktuelle Datum übernehmen, oder übersehe ich etwas?

  7. #5
    Neu an Board
    Registriert seit
    05.11.2016
    Beiträge
    8
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    ja mir leuchtet es auch ein, dass müsste ich dann mit Javascript machen, nur sollte ich das in diser default-PHP machen oder wo?

  8. #6
    Gehört zum Inventar
    Registriert seit
    06.03.2013
    Ort
    /dev/random
    Beiträge
    5.622
    Bedankte sich
    123
    Erhielt 2.108 Danksagungen
    in 1.997 Beiträgen

    Standard

    Hänge das mal deiner Ausgabe an, direkt nach </form>
    Code:
    <script type="text/javascript">
    (function ($) {
      $(document).ready(function() {
    
         $('#sr-checkavailability-form').submit(function( e ) {
              $('#anreise').val($('.checkin_module.datefield').text());
              $('#abreise').val($('.checkout_module.datefield').text());
         });
    
      });
    })(jQuery);
    </script>
    Geändert von FINWICK (04.12.2016 um 17:46 Uhr)
    Gruß FINWICK
    ↶ Danke Button nutzen, wenn es geholfen hat - Kein Support via PN - Tipps & Tricks - JPlugger

  9. Erhielt Danksagungen von:


  10. #7
    Neu an Board
    Registriert seit
    05.11.2016
    Beiträge
    8
    Bedankte sich
    5
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Danke für eure Hilfe bis hierhin,

    die JavaScript-Logik ist auch schon in der gleichen Datei drin.

    Ich habe einen Fehler schonmal gefunden, und zwar musste ich die PHP-Variablen entsprechend meiner name-Attribute ändern.

    Jetzt klappt es, aber leider nur fast :(

    Also irgendwie wird zwar das Abreisedatum übernommen aber nicht das Anreisedatum.

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein