C'est tout simplement faux :
$from = htmlspecialchars(stripslashes(mysql_real_escape_string($_POST['from'])));
Si from
est censé être un entier, utilisez simplement :
$from = (int) $_POST['from'];
Je vois également que ce numéro provient d'un identifiant dans le code HTML et que les identifiants ne peuvent pas commencer par un numéro.
Modifier : Un problème supplémentaire est que vous ne sélectionnez pas l'ID dans votre requête SQL si from
existe et même si vous le faisiez, cette approche peut entraîner des problèmes à l'avenir lorsque vous supprimez des enregistrements et que vos identifiants ne sont plus séquentiels.
Concernant le premier problème, je peux le résoudre en changeant Firebug :
if($(window).scrollTop() + $(window).height() == $(document).height()) {
à :
if( ($(window).scrollTop() + $(window).height()) > ($(document).height() - 10) ) {
Modification 2 : Pour résoudre votre problème d'ID non séquentiel, le plus simple serait de calculer from
en javascript en utilisant quelque chose comme :
dataStr = "from=" + $(".n").length; // just count the number of elements you are showing already