简体   繁体   中英

how to fix undefined variable in php?

I have an index.php page. The function of this page is infinite scrolling using AJAX, PHP and MySQL. The top portion contains PHP MySQL codes and bottom contains JavaScript.
I want to print the total number of rows in center of the page, but every time I try it shows "undefined variable" error.
I think when loading the page, the total number of variable tries to print first and then the PHP query takes place, so it shows "undefined variable", but when I put the total number of variable inside the PHP codings, there is no problem.
How can I prevent this?

My index.php is

//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>

I know when a page is loading, the HTML parts are first loaded and then my jQuery stimulates the PHP part and then my results appear.
How can I fix this?
Why does $count always show "undefined variable"?

Thanks in advance.

You get an error of undefined $count because $count is defined only inside the if statement.
When the if clause doesn't apply $count is not defined.

Add an else clause to the if and initialize $count=0; and it will solve your problem.

Example:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM