Autor | Zpráva | ||
---|---|---|---|
Jan Žák Profil |
#1 · Zasláno: 23. 5. 2015, 17:55:46
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 |
#2 · Zasláno: 23. 5. 2015, 17:57:43
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 |
#3 · Zasláno: 23. 5. 2015, 18:42:35
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 |
#4 · Zasláno: 24. 5. 2015, 08:47:03
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 |
#5 · Zasláno: 24. 5. 2015, 10:00:50
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 |
#6 · Zasláno: 24. 5. 2015, 11:10:13
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 |
#7 · Zasláno: 24. 5. 2015, 11:44:57
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' }); |
||
Časová prodleva: 9 let
|
0