2015-08-28 9 views
-1

У меня есть страница index.php. Функция этой страницы - бесконечная прокрутка с использованием AJAX, PHP и MySQL. Верхняя часть содержит коды PHP MySQL, а внизу - JavaScript.
Я хочу напечатать общее количество строк в центре страницы, но каждый раз, когда я пытаюсь, он показывает ошибку «неопределенной переменной».
Я думаю, что при загрузке страницы общее число переменных пытается сначала печатать, а затем выполняется запрос PHP, поэтому он показывает «неопределенная переменная», но когда я помещаю общее число переменных внутри кодировок PHP, существует без проблем.
Как я могу предотвратить это?Как исправить неопределенную переменную в php?

Моего index.php является

//my php part here 
<?php 

if(isset($_POST["anotherID"])){ 
require_once("config.php"); 

$limit = (intval($_POST['limit']) != 0) ? $_POST['limit'] : 10; 
$offset = (intval($_POST['offset']) != 0) ? $_POST['offset'] : 0; 
$id = $_POST["anotherID"]; 
$query = $id; 
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM x where title like '%xx%' ORDER BY rand() LIMIT $limit OFFSET $offset"; 

try { 
$stmt = $DB->prepare($sql); 
$stmt->execute(); 
$results = $stmt->fetchAll(); 

$row_object = $DB->prepare("Select Found_Rows() as rowcount"); 
$row_object->execute(); 
$roww_object =$row_object->fetchobject(); 
$actual_row_count = $roww_object->rowcount; 


} catch (Exception $ex) { 
echo $ex->getMessage(); 
} 
if (count($results) > 0) { 
foreach ($results as $res) { 
echo'something'; 
} 
} 
$count = $actual_row_count; 
exit; 
} 
?> 

//my html part here 

<html> 
    //some html codes 

    <?php echo $count; ?> 

//some html codes here 

//my java scripts here 

<script type="text/javascript"> 
    var busy = false; 
    var limit = 6 
    var offset = 0; 
    var anotherID = 5 


    function displayRecords(lim, off) { 
    $.ajax({ 
     type: "POST", 
     async: false, 
     data: "limit=" + lim + "&offset="+ off+"&anotherID="+anotherID, 
     cache: false, 
     beforeSend: function() { 
     $("#loader_message").html("").hide(); 
     $('#loader_image').show(); 
     }, 
     success: function(html) { 
     $("#results").append(html); 
     $('#loader_image').hide(); 
     if (html == "") { 
      $("#loader_message").html('<button class="btn btn-default btn-block" type="button">No more records.</button>').show() 
     } else { 
      $("#loader_message").html('<button class="btn btn-default btn-block" type="button"><div id="loader_image"><img src="loader.gif" alt="" width="24" height="24">Loading please wait...</button>').show(); 
     } 
     window.busy = false; 


     } 
    }); 
    } 

    $(document).ready(function() { 
    // start to load the first set of data 
    if (busy == false) { 
     busy = true; 
     // start to load the first set of data 
     displayRecords(limit, offset); 
    } 


    $(window).scroll(function() { 
     // make sure u give the container id of the data to be loaded in. 
     if ($(window).scrollTop() + $(window).height() > $("#results").height() && !busy) { 
     busy = true; 
     offset = limit + offset; 

     // this is optional just to delay the loading of data 
     setTimeout(function() { displayRecords(limit, offset); }, 500); 

     // you can remove the above code and can use directly this function 
     // displayRecords(limit, offset); 

     } 
    }); 

    }); 

</script> 
//some html codes her 

</html> 

Я знаю, когда страница загружается, то HTML часть первой загрузки, а затем мой JQuery стимулирует PHP часть, а затем появляются мои результаты.
Как я могу это исправить?
Почему $count всегда показывает «неопределенная переменная»?

Заранее спасибо.

+2

Если ', если (Исеть ($ _ POST [ "anotherID"])) {' ложно, $ граф будет неопределенным. Если какой-либо оператор в блоке 'try {' генерирует исключение, $ count будет неопределенным, потому что $ actual_row_count будет неопределенным. Попытайтесь выяснить, где это происходит. – raduation

+0

, но мне нужно значение $ count – ahgh

+0

@ahgh Но точное значение чего? Вы не получаете удостоверение личности или что-то еще, и что вы хотите точно подсчитать? –

ответ

0

Вы получаете ошибку undefined $count, потому что $count определяется только внутри инструкции if.
Если пункт if не применяется $count не определен.

Добавить else пункт в if и инициализировать $count=0;, и он решит вашу проблему.

Пример:

.... 
$count = $actual_row_count; 
exit; 
} 
else $count = 0; 
?> 
+0

, но мне нужно точное значение $ count – ahgh

+0

Но если вы никогда не инициализировали значение $ count, не должно быть равным нулю для начала? – Amarnasan

+0

@ Aararnasan нет, он должен быть неопределенным, но я думаю, что основная проблема в запросе OP больше, чем просто инициализация. –

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