Autor Zpráva
Jan Žák
Profil
Dobrý den všem,

chtěl bych Vás opět požádat o pomoc, jelikož si již nevím rady. Mám dva soubory report.php a autoload_process.php

V report.php mám toto:
<?php
//Count Attempts
$results = mysql_query("SELECT COUNT(*) AS t_records FROM reports") or die ("Unable to select data because: ".mysql_error());
    $total_records = mysql_fetch_object($results);
$total_groups = ceil($total_records->t_records/$items_per_group);
?>
  
<script type="text/javascript">
$(document).ready(function() {
    var track_load = 0; //total loaded record group(s)
    var loading  = false; //to prevents multipal ajax loads
    var total_groups = <?php echo $total_groups; ?>; //total record group(s)
    
    $('#results').load("autoload_process.php", {'group_no':track_load}, function() {track_load++;}); //load first group
    
    $(window).scroll(function() { //detect page scroll
        
        if($(window).scrollTop() + $(window).height() == $(document).height())  //user scrolled to bottom of the page?
        {
            
            if(track_load <= total_groups && loading==false) //there's more data to load
            {
                loading = true; //prevent further ajax loading
                $('.animation_image').show(); //show loading image
                
                //load data from the server using a HTTP POST request
                $.post('autoload_process.php',{'group_no': track_load}, function(data){
                                    
                    $("#results").append(data); //append received data into the element

                    //hide loading image
                    $('.animation_image').hide(); //hide loading image once data is received
                    
                    track_load++; //loaded group increment
                    loading = false; 
                
                }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
                    
                    alert(thrownError); //alert with HTTP error
                    $('.animation_image').hide(); //hide loading image
                    loading = false;
                
                });
                
            }
        }
    });
});
</script>

<style>
.animation_image {background: #F9FFFF;border: 1px solid #E1FFFF;padding: 10px;width: 500px;margin-right: auto;margin-left: auto;}
</style>

<div class="table-overflow">

    <table class="table table-striped table-bordered">
      <thead>
        <tr>
          <th width="150px">Datum</th>
          <th width="150px">Autor</th>            
          <th>Činnost</th>
        </tr>
      </thead>
      <tbody id="results">

      </tbody>
    </table>

    <div class="animation_image" style="display:none" align="center"><img src="ajax-loader.gif"></div>

</div>

V souboru autoload_process.php je toto:

<?php
include "../core/inc/config.php";

if($_POST) {
    //sanitize post value
    $group_number = filter_var($_POST["group_no"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);
    
    //throw HTTP error if group number is not valid
    if(!is_numeric($group_number)){
        header('HTTP/1.1 500 Invalid number!');
        exit();
    }
    
    //get current starting point of records
    $position = ($group_number * $items_per_group);
    
    //Limit our results within a specified range.
  $results = mysql_query("SELECT date, author, report FROM reports ORDER BY date ASC LIMIT $position, $items_per_group");
   
    if ($results) { 
        //output results from database
        
        while($obj = mysql_fetch_object($results)) {
    
      echo '<tr><td>'.$obj->date.'</td><td>'.$obj->author.'</td><td>'.$obj->report.'</td></tr>';

        }
    
    }
    unset($obj);
  mysql_close($db);
}
?>

Na stránce reports by se tedy měli objevit položky z databáze (neobjeví se ale nic, také bez chybových hlášek). Když se pokusím zadat cestu v prohlížeči na soubor autoload_process.php, stránka je prázdná (nevypíše žádnou chybu).

Pokud vezmu mysql kód ze souboru autoload_process.php a vložím ho ručně do druhého souboru, vše funguje, takže v příkazu asi problém není. Ten Javascript má za úkol automaticky objevit nové položky při skrolování na konec stránky (kód není můj).

Bohužel do toho civím už den a nevidím nikdy chybu, pravděpodobně ten Javascript, můžete mě někdo prosím nakopnout jak dál, kde je chyba? Děkuji :)
juriad
Profil
Hádám, že ti v report.php chybí include "../core/inc/config.php";. Zkus si kdyžtak postupně přidávat echo a koukat, co se v prohlížeči vypíše.
Davex
Profil
Jan Žák:
Knihovnu jQuery máš před tím JavaScriptem na stránce připojenou?

Když se pokusím zadat cestu v prohlížeči na soubor autoload_process.php, stránka je prázdná (nevypíše žádnou chybu).
Celkem logicky. Aby něco vrátila, tak musíš POSTem odeslat očekávaná data.
Jan Žák
Profil
Ahoj všem, v reports.php mám připojený config. php jen jsem to sem zapoměl dát, jQuery mám také připojený v header.php a ty cesty jsou v pořádku, protože jené scripty fungují
yFang
Profil
Jan Žák:
A co vrací ten sql dotaz, když ho spustíš přesně tak, jak se spouští při tom requestu, co posíláš?
Jan Žák
Profil
V nyní nevypíše nic, jen prázná stránka. Pokud ten dotaz ale zkopíruji do souboru reports.php a smažu ten Javascript, vše normálně funguje, bez jakýkoliv chyb. Přikládám oba celé soubory + soubor s cestami na konfigy, odkaz vede na Google Drive:https://drive.google.com/file/d/0B5rR_uUh44TmTnBENVFlRXFCdE0/view?usp=sharing
Davex
Profil
Jan Žák:
Tvůj kód nejde samostatně otestovat. Nejrychlejší asi bude, když dáš odkaz přímo na živou ukázku a zapneš vypisování chyb PHP (pokud víš jistě, že chyba není v tom JavaScriptu).
Jan Žák
Profil
Ahoj a děkuji všem za dosavadní ochotu mi pomoci. Dostal jsem se o kus dále. Při přípravě živé ukázky, při zkopírování všech potřebných souborů jinam, jsem zjistil že scripty fungují jak mají! Začal jsem tedy s vylučovací metodou a zjistil jsem že ten vložený Javascript ve stránce reports.php koliduje s něčím v souboru functions.js. Soubor je součástí administrační šablony kterou používám.

functions.js
$(function() {

    //===== Hide/show sidebar =====//

    $('.fullview').click(function(){
        $("body").toggleClass("clean");
        $('#sidebar').toggleClass("hide-sidebar mobile-sidebar");
        $('#content').toggleClass("full-content");
    });

    //===== Time pickers =====//

    $('#defaultValueExample, #time').timepicker({ 'scrollDefaultNow': true });
    
    $('#durationExample').timepicker({
        'minTime': '2:00pm',
        'maxTime': '11:30pm',
        'showDuration': true
    });
    
    $('#onselectExample').timepicker();
    $('#onselectExample').on('changeTime', function() {
        $('#onselectTarget').text($(this).val());
    });
    
    $('#timeformatExample1, #timeformatExample3').timepicker({ 'timeFormat': 'H:i' });
    $('#timeformatExample2, #timeformatExample4').timepicker({ 'timeFormat': 'h:i' });

    //===== Date pickers =====//

    $( ".datepicker" ).datepicker({
        defaultDate: +7,
        showOtherMonths:true,
        autoSize: true,
        dateFormat: 'dd.mm.yy',
    numberOfMonths: 3,
    showCurrentAtPos: 1,    
    firstDay: 1 // Start with Monday
        });
        
  $.datepicker.regional['cs'] = {
    closeText: 'Cerrar',
    prevText: 'Předchozí',
    nextText: 'Další',
    currentText: 'Hoy',
    monthNames: ['Leden','Únor','Březen','Duben','Květen','Červen', 'Červenec','Srpen','Září','Říjen','Listopad','Prosinec'],
    monthNamesShort: ['Le','Ún','Bř','Du','Kv','Čn', 'Čc','Sr','Zá','Ří','Li','Pr'],
    dayNames: ['Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota'],
    dayNamesShort: ['Ne','Po','Út','St','Čt','Pá','So',],
    dayNamesMin: ['Ne','Po','Út','St','Čt','Pá','So'],
    weekHeader: 'Sm',
    dateFormat: 'dd.mm.yy',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ''};
  $.datepicker.setDefaults($.datepicker.regional['cs']);

    $('.inlinepicker').datepicker({
    inline: true,
        showOtherMonths:true
    });

    var dates = $( "#fromDate, #toDate" ).datepicker({
        defaultDate: "+1w",
        changeMonth: false,
        showOtherMonths:true,
        numberOfMonths: 3,
        onSelect: function( selectedDate ) {
            var option = this.id == "fromDate" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });
    
    $( "#datepicker-icon, .navbar-datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "img/icons/date_picker.png",
        buttonImageOnly: true
    });

    //===== Popover =====// 

    $('.popover-test').popover({
        placement: 'left'
    })
    .click(function(e) {
        e.preventDefault()
    });

    //===== Validation engine =====//
    
    $("#validate").validationEngine({promptPosition : "topRight:-122,-5"});

    //===== Elastic textarea =====//
    
    $('.auto').autosize();

    //===== Tooltips =====//

    $('.tip').tooltip();
    $('.focustip').tooltip({'trigger':'focus'});

    //===== Collapsible plugin for main nav =====//
    
    $('.expand').collapsible({
        defaultOpen: 'current,third',
        cookieName: 'navAct',
        cssOpen: 'subOpened',
        cssClose: 'subClosed',
        speed: 200
    });
  
    //===== Form elements styling =====//
    
    $(".ui-datepicker-month, .styled, .dataTables_length select").uniform({ radioClass: 'choice' });
  
});

//===== Tweeve added functions =====//

$(document).ready(function() {

  var InputsWrapper   = $("#InputsWrapperExists");

    $("#InputsWrapperExists").on('change', '.discount',function() {
      var tr = $(this).closest('tr');
      var quantity=tr.find(".quantity").val();
      var percent=tr.find(".discount").val();
      var price=tr.find(".price").val();
      var tprice = price * quantity
      var discountpercent=percent / 100;
      var discountprice=(tprice * discountpercent );
            
      tr.find(".discount_price").val(tprice - discountprice);
      calculateTotals()
    });

    function calculateTotals() {
      var $summands = $('#InputsWrapperExists').find('.discount_price');
      var sum = 0;
        $summands.each(function () {
          var value = Number($(this).val());
            if (!isNaN(value)) sum += value;
        });

    $('#TotalDB').val(sum);
    }        
      
});

$(document).ready(function() {

  var InputsWrapper   = $("#InputsWrapper");

    $("#InputsWrapper").on('change', '.discount',function() {
      var tr = $(this).closest('tr');
      var quantity=tr.find(".quantity").val();
      var percent=tr.find(".discount").val();
      var price=tr.find(".price").val();
      var tprice = price * quantity
      var discountpercent=percent / 100;
      var discountprice=(tprice * discountpercent );
            
      tr.find(".discount_price").val(tprice - discountprice);
      calculateTotals()
  });

  function calculateTotals() {
    var $summands = $('#InputsWrapper').find('.discount_price');
    var sum = 0;
      $summands.each(function () {
        var value = Number($(this).val());
          if (!isNaN(value)) sum += value;
      });

  $('#TotalCart').val(sum);
  }        
      
});

$(document).on("change", ".discount", function() {
  var sum = 0;
    $(".discount_price").each(function(){
      sum += +$(this).val();
    });
    $(".product_total").val(sum);
});

reports.php
<script type="text/javascript">
$(document).ready(function() {
    var track_load = 0; //total loaded record group(s)
    var loading  = false; //to prevents multipal ajax loads
    var total_groups = <?php echo $total_groups; ?>; //total record group(s)
    
    $('#results').load("autoload_process.php", {'group_no':track_load}, function() {track_load++;}); //load first group
    
    $(window).scroll(function() { //detect page scroll
        
        if($(window).scrollTop() + $(window).height() == $(document).height())  //user scrolled to bottom of the page?
        {
            
            if(track_load <= total_groups && loading==false) //there's more data to load
            {
                loading = true; //prevent further ajax loading
                $('.animation_image').show(); //show loading image
                
                //load data from the server using a HTTP POST request
                $.post('autoload_process.php',{'group_no': track_load}, function(data){
                                    
                    $("#results").append(data); //append received data into the element

                    //hide loading image
                    $('.animation_image').hide(); //hide loading image once data is received
                    
                    track_load++; //loaded group increment
                    loading = false; 
                
                }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
                    
                    alert(thrownError); //alert with HTTP error
                    $('.animation_image').hide(); //hide loading image
                    loading = false;
                
                });
                
            }
        }
    });
});
</script>

Zde jsem celkem zmatený, snažím se hledat příčinu ale zatím neúspěšně


Ahoj a děkuji všem za dosavadní ochotu mi pomoci. Dostal jsem se o kus dále. Při přípravě živé ukázky, při zkopírování všech potřebných souborů jinam, jsem zjistil že scripty fungují jak mají! Začal jsem tedy s vylučovací metodou a zjistil jsem že ten vložený Javascript ve stránce reports.php koliduje s něčím v souboru functions.js. Soubor je součástí administrační šablony kterou používám.

functions.js
$(function() {

    //===== Hide/show sidebar =====//

    $('.fullview').click(function(){
        $("body").toggleClass("clean");
        $('#sidebar').toggleClass("hide-sidebar mobile-sidebar");
        $('#content').toggleClass("full-content");
    });

    //===== Time pickers =====//

    $('#defaultValueExample, #time').timepicker({ 'scrollDefaultNow': true });
    
    $('#durationExample').timepicker({
        'minTime': '2:00pm',
        'maxTime': '11:30pm',
        'showDuration': true
    });
    
    $('#onselectExample').timepicker();
    $('#onselectExample').on('changeTime', function() {
        $('#onselectTarget').text($(this).val());
    });
    
    $('#timeformatExample1, #timeformatExample3').timepicker({ 'timeFormat': 'H:i' });
    $('#timeformatExample2, #timeformatExample4').timepicker({ 'timeFormat': 'h:i' });

    //===== Date pickers =====//

    $( ".datepicker" ).datepicker({
        defaultDate: +7,
        showOtherMonths:true,
        autoSize: true,
        dateFormat: 'dd.mm.yy',
    numberOfMonths: 3,
    showCurrentAtPos: 1,    
    firstDay: 1 // Start with Monday
        });
        
  $.datepicker.regional['cs'] = {
    closeText: 'Cerrar',
    prevText: 'Předchozí',
    nextText: 'Další',
    currentText: 'Hoy',
    monthNames: ['Leden','Únor','Březen','Duben','Květen','Červen', 'Červenec','Srpen','Září','Říjen','Listopad','Prosinec'],
    monthNamesShort: ['Le','Ún','Bř','Du','Kv','Čn', 'Čc','Sr','Zá','Ří','Li','Pr'],
    dayNames: ['Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota'],
    dayNamesShort: ['Ne','Po','Út','St','Čt','Pá','So',],
    dayNamesMin: ['Ne','Po','Út','St','Čt','Pá','So'],
    weekHeader: 'Sm',
    dateFormat: 'dd.mm.yy',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ''};
  $.datepicker.setDefaults($.datepicker.regional['cs']);

    $('.inlinepicker').datepicker({
    inline: true,
        showOtherMonths:true
    });

    var dates = $( "#fromDate, #toDate" ).datepicker({
        defaultDate: "+1w",
        changeMonth: false,
        showOtherMonths:true,
        numberOfMonths: 3,
        onSelect: function( selectedDate ) {
            var option = this.id == "fromDate" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });
    
    $( "#datepicker-icon, .navbar-datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "img/icons/date_picker.png",
        buttonImageOnly: true
    });

    //===== Popover =====// 

    $('.popover-test').popover({
        placement: 'left'
    })
    .click(function(e) {
        e.preventDefault()
    });

    //===== Validation engine =====//
    
    $("#validate").validationEngine({promptPosition : "topRight:-122,-5"});

    //===== Elastic textarea =====//
    
    $('.auto').autosize();

    //===== Tooltips =====//

    $('.tip').tooltip();
    $('.focustip').tooltip({'trigger':'focus'});

    //===== Collapsible plugin for main nav =====//
    
    $('.expand').collapsible({
        defaultOpen: 'current,third',
        cookieName: 'navAct',
        cssOpen: 'subOpened',
        cssClose: 'subClosed',
        speed: 200
    });
  
    //===== Form elements styling =====//
    
    $(".ui-datepicker-month, .styled, .dataTables_length select").uniform({ radioClass: 'choice' });
  
});

//===== Tweeve added functions =====//

$(document).ready(function() {

  var InputsWrapper   = $("#InputsWrapperExists");

    $("#InputsWrapperExists").on('change', '.discount',function() {
      var tr = $(this).closest('tr');
      var quantity=tr.find(".quantity").val();
      var percent=tr.find(".discount").val();
      var price=tr.find(".price").val();
      var tprice = price * quantity
      var discountpercent=percent / 100;
      var discountprice=(tprice * discountpercent );
            
      tr.find(".discount_price").val(tprice - discountprice);
      calculateTotals()
    });

    function calculateTotals() {
      var $summands = $('#InputsWrapperExists').find('.discount_price');
      var sum = 0;
        $summands.each(function () {
          var value = Number($(this).val());
            if (!isNaN(value)) sum += value;
        });

    $('#TotalDB').val(sum);
    }        
      
});

$(document).ready(function() {

  var InputsWrapper   = $("#InputsWrapper");

    $("#InputsWrapper").on('change', '.discount',function() {
      var tr = $(this).closest('tr');
      var quantity=tr.find(".quantity").val();
      var percent=tr.find(".discount").val();
      var price=tr.find(".price").val();
      var tprice = price * quantity
      var discountpercent=percent / 100;
      var discountprice=(tprice * discountpercent );
            
      tr.find(".discount_price").val(tprice - discountprice);
      calculateTotals()
  });

  function calculateTotals() {
    var $summands = $('#InputsWrapper').find('.discount_price');
    var sum = 0;
      $summands.each(function () {
        var value = Number($(this).val());
          if (!isNaN(value)) sum += value;
      });

  $('#TotalCart').val(sum);
  }        
      
});

$(document).on("change", ".discount", function() {
  var sum = 0;
    $(".discount_price").each(function(){
      sum += +$(this).val();
    });
    $(".product_total").val(sum);
});

reports.php
<script type="text/javascript">
$(document).ready(function() {
    var track_load = 0; //total loaded record group(s)
    var loading  = false; //to prevents multipal ajax loads
    var total_groups = <?php echo $total_groups; ?>; //total record group(s)
    
    $('#results').load("autoload_process.php", {'group_no':track_load}, function() {track_load++;}); //load first group
    
    $(window).scroll(function() { //detect page scroll
        
        if($(window).scrollTop() + $(window).height() == $(document).height())  //user scrolled to bottom of the page?
        {
            
            if(track_load <= total_groups && loading==false) //there's more data to load
            {
                loading = true; //prevent further ajax loading
                $('.animation_image').show(); //show loading image
                
                //load data from the server using a HTTP POST request
                $.post('autoload_process.php',{'group_no': track_load}, function(data){
                                    
                    $("#results").append(data); //append received data into the element

                    //hide loading image
                    $('.animation_image').hide(); //hide loading image once data is received
                    
                    track_load++; //loaded group increment
                    loading = false; 
                
                }).fail(function(xhr, ajaxOptions, thrownError) { //any errors?
                    
                    alert(thrownError); //alert with HTTP error
                    $('.animation_image').hide(); //hide loading image
                    loading = false;
                
                });
                
            }
        }
    });
});
</script>

Zde jsem celkem zmatený, snažím se hledat příčinu ale zatím neúspěšně


Takže další malý krok kupředu, koliduje to s tímto kódem: $(".ui-datepicker-month, .styled, .dataTables_length select").uniform({ radioClass: 'choice' });

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: