Ich möchte ein Auto laden auf der Seite mit der Daten aus meiner PostgreSQL-Datenbank. HierAutoload-Seite beim Scrollen mit JQuery und PHP
ist das gewünschte Ergebnis: http://www.sanwebe.com/assets/ajax-load-on-scroll/
Ich glaube Problem ist in dem Javascript-Code von index.php und/oder den audoload_process.php aber ich bin nicht in der Lage, das Problem zu finden .
Ich habe 3 Dateien:
Config.php, die richtig funktioniert:
<?php
$db_username = 'user=myuser';
$db_password = 'password=mytest';
$db_name = 'dbname=test';
$db_host = 'host=localhost';
$items_per_group = 5;
$db = pg_connect($db_host, $db_username, $db_password, $db_name);
?>
Index.php Datei: (I getestet und die PHP Teil davon arbeitet, Ich denke, das Javascript funktioniert nicht).
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js/jquery-1.9.0.min.js"></script>
<?php
include("config.php");
$get_total_rows = 0;
$db = pg_connect("$db_host $db_name $db_username $db_password");
$query = "SELECT * FROM paginate";
$results = pg_query($query);
$get_total_rows = pg_numrows($results);
//break total records into pages
$total_groups= ceil($get_total_rows/$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 = <?=$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>
body,td,th {font-family: Georgia, Times New Roman, Times, serif;font-size: 15px;}
.animation_image {background: #F9FFFF;border: 1px solid #E1FFFF;padding: 10px;width: 500px;margin-right: auto;margin-left: auto;}
#results{width: 500px;margin-right: auto;margin-left: auto;}
#resultst ol{margin: 0px;padding: 0px;}
#results li{margin-top: 20px;border-top: 1px dotted #E1FFFF;padding-top: 20px;}
</style>
</head>
<body>
<ol id="results">
</ol>
<div class="animation_image" style="display:none" align="center"><img src="ajax-loader.gif"></div>
</body>
</html>
autoload_process.php Datei
<?php
include("config.php"); //include config file
if($_POST) //NOT SURE IF THIS WORKS FOR Postgresql or I would need somethingk like if ($_SERVER["REQUEST_METHOD"] == "POST")
{
echo "inside IF" //To see if it gets to here --> It doesn't
//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);
$query = "SELECT id, name, message FROM paginate ORDER BY id ASC LIMIT $position, $items_per_group";
$result = pg_query($query);
$myrow = pg_fetch_assoc($result);
$id = $myrow[id];
$name = $myrow[name];
$message = $myrow[message];
echo '<ul class="page_result">';
while(pg_fetch_assoc($results)){ //fetch values
echo '<li id="item_'.$id.'"><span class="page_name">'.$id.') '.$name.'</span><span class="page_message">'.$message.'</span></li>';
}
echo '</ul>';
pg_close();
}
?>
ERGEBNISSE UND THEMEN
- ich nichts als Ergebnisse, wenn meine Index.php Ausführung
Wenn ich diesen Code zu schreiben, in die Index.php, um zu sehen, ob Informationen abgerufen werden:
$get_total_rows = pg_numrows($results); echo "total number of rows" .$get_total_rows; echo '<br>'; echo '<br>'; //break total records into pages $total_groups= ceil($get_total_rows/$items_per_group); echo "total number of groups" .$total_groups; echo '<br>'; echo '<br>'; while($myrow = pg_fetch_assoc($results)) { $id = $myrow[id]; $name = $myrow[name]; $message = $myrow[message]; echo $id; echo $name; echo $message; echo '<br>'; echo '<br>'; }
Dann bekomme ich (Anzahl der Zeilen = 50 (richtig) Gesamtzahl der Gruppen = 10 (richtig) und alle Datensätze gedruckt, aber wenn ich nach unten scrollen Sie nach unten bekomme ich folgende Fehler (Internal Server Fehler): Das kleine Ladebild erscheint unten auf der Seite. (Ich vermute, dass dies, weil ich bereits alle 50 Aufzeichnungen zeigten, aber es wirkt nicht, wie es anzunehmen.
Jede Hilfe sehr geschätzt würde.
Vielen Dank für Ihren Kommentar. Ein großer Teil des Problems war das Semikolon, das Sie angegeben haben. Jetzt bekomme ich wenigstens ein paar Informationen. Problem: Wenn ich rannte: '$ query =" SELECT ID, Name, Nachricht FROM paginate ORDER BY ID ASC LIMIT $ position, $ items_per_group ";' Ich bekomme diesen Fehler: (Problem mit Abfrage SELECT ID, Name, Nachricht FROM paginate ORDER BY id ASC LIMIT 7, 7 FEHLER: LIMIT #, # Syntax wird nicht unterstützt LINE 1: ... T ID, Name, Nachricht FROM paginate ORDER BY ID ASC LIMIT 7, 7^TIPP: Verwenden Sie separate LIMIT- und OFFSET-Klauseln.) – Sam
aber wenn ich rannte: '$ query =" SELECT ID, Name, Nachricht FROM paginate ORDER BY ID ASC LIMIT $ Position ";' dann funktioniert es, jedoch gibt nur den ersten Rekord Ofen ein vorbei. – Sam
Ich bin nicht vertraut mit der Datenbank, die Sie verwenden, aber eine schnelle Google-Suche zeigt die richtige Syntax für Limit ist (LIMIT X OFFSET N), so '$ query =" SELECT ID, Name, Nachricht von Paginate ORDER BY ID ASC LIMIT $ position OFFSET $ items_per_group ";' – imvain2