2013-04-17 9 views
0

SO в основном у меня есть страница load.php, которая получает переменную позиции и использует ее для отображения 6 результатов из этой позиции из таблицы ... но я вижу, что где-то есть ошибка, потому что ничего не возвращается. ... Можете ли вы, ребята, помочь?Ограничение числа результатов SQL

Вот код:

<?php 


error_reporting(0); 
session_start(); 
include '../upload/connect.php'; 

$start = $_POST['start']; 
$id = $_POST['id']; 

$sql = mysql_query("SELECT * FROM comments WHERE id='".$id."' ORDER by id DESC LIMIT ".$start." , 6 ") or die(mysql_error()); 
while ($display = mysql_fetch_assoc($sql)) 
{ 
    ?> 
    <div id="comments"> 
    <table> 
    <tr> 
    <td rowspan="2"><img src="../pic/logo.png" width="100px" /></td> 
    <td valign="top"><p style="width:700px;font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif;font-size:13px;color:rgba(255,255,255,0.5);">&nbsp;&nbsp;&nbsp;&nbsp;Postat de <?php echo $display['user']; ?> la <?php echo $display['date']; ?> </p></td></td> 
    </tr> 
    <tr> 
    <td width="90%" valign="top"><p style="width:700px;font-family:'Lucida Sans Unicode', 'Lucida Grande', sans-serif;font-size:13px;color:white;">&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $display['comment']; ?></p> 
    </tr> 
    </table> 
    </div> 
    <?php 
} 


?> 

И JQuery:

var st = 6;// start position... 
    var div_height = $("#mighty_holder").height()/2- 50; 
    var doc_scroll = $(document).scrollTop(); 
    function loadthem (k) 
    { 
     $.post('../core/load.php',{start: k , id: <?php echo json_encode($id); ?>}, 
       function(result){ 
        $("#comment_holder").append(result); 
      }); 
    } 

    $(document).scroll(function(){ 
     if ($("#mighty_holder").height()/2- 50 < $(document).scrollTop()) 
     { 
      loadthem(st); 
      st = parseInt(st) + 7; 
     } 
    }); 
+1

Какой SQL-запрос фактически запускается? Вы подтвердили правильность этого утверждения и запустили его вручную? –

+0

этот один '$ sql = mysql_query (" SELECT * FROM comments WHERE id = '". $ Id."' ORDER by id DESC LIMIT ". $ Start.", 6 ") или die (mysql_error());' – southpaw93

+0

Отсутствие замыкающей скобки на 'while()' loop – verbumSapienti

ответ

0

В коде Javascript, инициализации var st = 6 отправить 6 в start. Затем в функции scroll он передается как параметр функции loadthem, в результате чего 6 отправляется как start: k в запросе POST AJAX на страницу PHP. Он восстановлен как $start = $_POST['start'] и вставлен в запрос типа 6, что приводит к LIMIT 6, 6. Который не возвращает результат запроса.

Возможно, вы использовали для инициализации st до 0.

На стороне записки: чтобы предотвратить инъекции SQL Я предлагаю вам выполнить int бросок на обоих $_POST['id'] и $_POST['start'], предполагая, что они должны быть как числовые значения:

$start = (int) $_POST['start']; 
$id = (int) $_POST['id']; 
+0

вещь на моей главной странице. Я уже выхожу из 6 записей из этой таблицы (SQL QUERY) и всякий раз, когда я прокручиваюсь ближе к концу на странице я хочу получить еще 6 результатов с этой страницы, начиная с позиции, которую я последний раз оставил, что означает результат 7 + 6, это то, что я хочу выполнить, инициализируя 'st = 6;' – southpaw93

+0

Согласно документам 'LIMIT 6, 6' совпадает с 'LIMIT 6 OFFSET 6', который будет возвращать до 6 строк, начиная с строки 6. Итак, это должно быть совершенно верно? –

+0

да, но он ничего не вернет, я не понимаю, почему ... Я запустил это в phpmyadmin SQL и отлично работает ... не могу понять, почему он ничего не показывает ... – southpaw93

0

Это ваша ошибка

var st = 6;// start position... 

st должно быть 0. В вашем случае у вас есть LIMIT 6, 6. Я предполагаю, что вы хотите LIMIT 0, 6

+0

да, но что, если я не хочу отображать первые 6 Результаты ? – southpaw93

Смежные вопросы