Estoy generando un sistema de carga de datos AJAX al hacer scroll, tal como lo hace facebook.
Pero lo que sucede es que no funciona como yo espero, aunque el codigo lo veo muy bien escrito y con la logica correspondiente.
Este es el codigo de index.php:
<?php //Crear Variables para conexion Noticias Principales $ host = "localhost"; $ user = "kautivai_EditorDeNoticias"; $ pw = "0927410654marvin"; $ dataBase1 = "kautivai_DatosDeNoticias"; $ conexion = mysqli_connect($ host, $ user, $ pw, $ dataBase1) or die("Problemas al conectar con base de datos 'kautivai_DatosDeNoticias'"); $ obtener_filas = mysqli_query($ conexion, "SELECT * FROM Noticia1"); $ numero_de_fila = mysqli_num_rows($ obtener_filas); // Ejecutas las consulta $ result = mysqli_query($ conexion, "SELECT * FROM Noticia1 WHERE ID = '$ numero_de_fila'") or die("Error al realizar consulta: ".mysqli_error($ conexion)); while($ final = mysqli_fetch_array($ result)){ ?> <script type="text/javascript"> <?php echo "var Numero = ".$ numero_de_fila.";"; ?> console.log(Numero); let acum = -1; let acumulador = () => { acum++ console.log(acum); } var pagina = 7; var regulador = Numero - pagina; $ (document).ready(function() { // Carga inicial cargardatos(); }); function cargardatos(){ // Petición AJAX acumulador(); if (acum >= Numero) { console.log("error") } else { $ ("#loader").html("<img src='imagenes/loading.gif' style='width:135px; height:100px;'>"); $ .get("datos.php?Numero="+Numero+"®ulador="+regulador, function(data){ if (data != "") { $ (".mensaje:last").after(data); } $ ('#loader').empty(); } ); } } $ (window).scroll(function(){ if ($ (window).scrollTop() == $ (document).height() - $ (window).height()){ pagina += 10; cargardatos(); } }); </script> <div id="ForLoadMore1"> <div class="mensaje"></div> </div> <div id="loader"></div>
Este codigo lo que hace es mostrarme informacion traida de la base de datos, cargandola en el div class=”mensaje”, pasando variables por $ .get, las cuales son Numero y regulador, Numero envia el numero de filas actuales en la tabla y regulador envia el resultado de (Numero – pagina), pagina obtiene el valor “7” porque quiero que cargue los datos a partir de la fila 8.. estos datos son enviados hacia el archivo datos.php, cuyo codigo es el siguiente:
<?php //Crear Variables para conexion Noticias Principales $ host = "localhost"; $ user = "kautivai_EditorDeNoticias"; $ pw = "0927410654marvin"; $ dataBase1 = "kautivai_DatosDeNoticias"; $ Numero = $ _GET['Numero']; $ regulador = $ _GET['regulador']; $ principio = $ Numero - $ regulador; $ conexion = mysqli_connect($ host, $ user, $ pw, $ dataBase1) or die ("no se ha podido conectar"); $ result = mysqli_query($ conexion, "SELECT * FROM Noticia1 ORDER BY 'ID' DESC LIMIT {$ principio},10"); while($ final = mysqli_fetch_array($ result)){ echo " <div class='mensaje'> <div class=\"not7\"><div class=\"fotosMain3\" id=\"foto18\"><img src='".$ final['RutaImagen']."' class='PORTADAS1'></div><div class=\"TextoDerecha\"><h3 id=\"Etiqueta16\" style=\"color: #10A2E5; font-family: 'Raleway', sans-serif; font-size: 12px; line-height: 10px; margin-top: 10px; margin-bottom: 10px;\">".$ final['Etiqueta']."</h3><hr class=\"barrasNuevas\" size=\"1px\" width=\"100%\" noshade=\"noshade\" style=\"margin: 10px auto; opacity: 0.3;\"><h1 class=\"titulosMain3\" id=\"Titulo19\">".$ final['Titulo']."</h1><h1 class=\"Subtitulos\" id=\"Subtitulo15\">".$ final['Subtitulo']."</h1><p style=\"color: #2E2E2E; font-family: Arial; font-size: 11px; margin-top: 10px;\">Por: <span style=\"color: #1279a8;\">".$ final['Autor']."<span style=\"color: #2E2E2E;\">|</span></span> <span>".$ final['Fecha']."</span></p><p class=\"main3Textos\" id=\"main3Textos-12\">".substr($ final['Texto'], 0, 300)."...</p></div></div>
?>
Este codigo lo que hace es recibir las variables $ Numero y $ regulador, marcando los limites en la consulta sql. Por ejemplo: Tengo 30 filas en mi tabla, asi que : $ Numero = 30 $ principio = $ Numero – $ regulador $ principio = 30 – (var numero – var pagina) $ principio = 30 – (30 – 7) $ principio = 30 – 23 $ principio = 7
Por lo tanto el principio de mi limite DESCENDIENTE sera 8(como se cuenta desde el 0, pues el 7 sera la fila 8) y traera 10 filas, las que por logica deberian ser 22 hasta la 13 (10 filas en forma descendente)
Sin embargo, el codigo no lo hace de esa manera. Me trae filas en forma ascendente y mezcladas..!
Alguien podria ayudarme?? Por favor