Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\administrator\admin\schedule.php on line 187

admin/schedule.php

//LOAD CLASS LIST

                $sqlstr = "SELECT * FROM class_list 
                INNER JOIN `group` 
                ON class_list.group_id = `group`.group_id
                INNER JOIN teacher
                ON class_list.teach_id = teacher.teach_id
                INNER JOIN class
                ON class_list.class_id = class.class_id
                WHERE datetime > '".date('Y-m-d H:i:s')."' ORDER BY class_list_id";

                //Create a PS_Pagination object
                $pager = new PS_Pagination($conn,$sqlstr,5,10);

                //The paginate() function returns a mysql result set 
                $result = $pager->paginate();               

                ?>
                <table id="admintable" border="1" cellpadding="2" cellspacing="0" style="width: 900px;">
                    <tr>
                        <th>Next Class List</th><th>Attendance List</th><th>Teacher</th><th>Material</th><th>Short Intro</th><th>datetime</th><th>Post</th>
                    </tr>
                    <?php
                    $i=0;
                    while ($data = mysql_fetch_array($result)){

--------------
Line 187: while ($data = mysql_fetch_array($result)){

How to fix the error?

Recommended Answers

There is an error in your query. Check for errors to see what error MySQL returns first.

Jump to Post

Just check what error is returned. Then you'll know what to fix. Trial and error usually takes a lot longer.

Jump to Post

Use mysql_error()

Jump to Post

All 11 Replies

There is an error in your query. Check for errors to see what error MySQL returns first.

I think the query is correct only if I leave the input schedule empty and trying to show the empty thing by printing empty table then nothing shows up, only one line of error.

The error disappears only if I add the input table, then the error disappears.

I am trying to make the table without any error apepars evenif I delete all the fields.

Just check what error is returned. Then you'll know what to fix. Trial and error usually takes a lot longer.

Well, this is the only error that appears:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\administrator\admin\schedule.php on line 187

--------------------------

Line 187: while ($data = mysql_fetch_array($result)){

Use mysql_error()

The sql error I thought suppose to appears through this object oriented file (since I am using OOP Paging)

ps_pagination.php

<?php
/**
 * PHPSense Pagination Class
 *
 * PHP tutorials and scripts
 *
 * @package     PHPSense
 * @author      Jatinder Singh Thind
 * @copyright   Copyright (c) 2006, Jatinder Singh Thind
 * @link        http://www.phpsense.com
 */

// ------------------------------------------------------------------------


class PS_Pagination {
    var $php_self;
    var $rows_per_page = 10; //Number of records to display per page
    var $total_rows = 0; //Total number of rows returned by the query
    var $links_per_page = 5; //Number of links to display per page
    var $append = ""; //Paremeters to append to pagination links
    var $sql = "";
    var $debug = false;
    var $conn = false;
    var $page = 1;
    var $max_pages = 0;
    var $offset = 0;

    /**
     * Constructor
     *
     * @param resource $connection Mysql connection link
     * @param string $sql SQL query to paginate. Example : SELECT * FROM users
     * @param integer $rows_per_page Number of records to display per page. Defaults to 10
     * @param integer $links_per_page Number of links to display per page. Defaults to 5
     * @param string $append Parameters to be appended to pagination links 
     */

    function PS_Pagination($connection, $sql, $rows_per_page = 10, $links_per_page = 5, $append = "") {
        $this->conn = $connection;
        $this->sql = $sql;
        $this->rows_per_page = (int)$rows_per_page;
        if (intval($links_per_page ) > 0) {
            $this->links_per_page = (int)$links_per_page;
        } else {
            $this->links_per_page = 5;
        }
        $this->append = $append;
        $this->php_self = htmlspecialchars($_SERVER['PHP_SELF'] );
        if (isset($_GET['page'] )) {
            $this->page = intval($_GET['page'] );
        }
    }

    /**
     * Executes the SQL query and initializes internal variables
     *
     * @access public
     * @return resource
     */
    function paginate() {
        //Check for valid mysql connection
        if (! $this->conn || ! is_resource($this->conn )) {
            if ($this->debug)
                echo "MySQL connection missing<br />";
            return false;
        }

        //Find total number of rows
        $all_rs = @mysql_query($this->sql );
        if (! $all_rs) {
            if ($this->debug)
                echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
            return false;
        }
        $this->total_rows = mysql_num_rows($all_rs );
        @mysql_close($all_rs );

        //Return FALSE if no rows found
        if ($this->total_rows == 0) {
            if ($this->debug)
                echo "Query returned zero rows.";
            return FALSE;
        }

        //Max number of pages
        $this->max_pages = ceil($this->total_rows / $this->rows_per_page );
        if ($this->links_per_page > $this->max_pages) {
            $this->links_per_page = $this->max_pages;
        }

        //Check the page value just in case someone is trying to input an aribitrary value
        if ($this->page > $this->max_pages || $this->page <= 0) {
            $this->page = 1;
        }

        //Calculate Offset
        $this->offset = $this->rows_per_page * ($this->page - 1);

        //Fetch the required result set
        $rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}" );
        if (! $rs) {
            if ($this->debug)
                echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
            return false;
        }
        return $rs;
    }

    /**
     * Display the link to the first page
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to 'First'
     * @return string
     */
    function renderFirst($tag = 'First') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page == 1) {
            return "$tag ";
        } else {
            return '<a href="' . $this->php_self . '?page=1&' . $this->append . '">' . $tag . '</a> ';
        }
    }

    /**
     * Display the link to the last page
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to 'Last'
     * @return string
     */
    function renderLast($tag = 'Last') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page == $this->max_pages) {
            return $tag;
        } else {
            return ' <a href="' . $this->php_self . '?page=' . $this->max_pages . '&' . $this->append . '">' . $tag . '</a>';
        }
    }

    /**
     * Display the next link
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to '>>'
     * @return string
     */
    function renderNext($tag = '&gt;&gt;') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page < $this->max_pages) {
            return '<a href="' . $this->php_self . '?page=' . ($this->page + 1) . '&' . $this->append . '">' . $tag . '</a>';
        } else {
            return $tag;
        }
    }

    /**
     * Display the previous link
     *
     * @access public
     * @param string $tag Text string to be displayed as the link. Defaults to '<<'
     * @return string
     */
    function renderPrev($tag = '&lt;&lt;') {
        if ($this->total_rows == 0)
            return FALSE;

        if ($this->page > 1) {
            return ' <a href="' . $this->php_self . '?page=' . ($this->page - 1) . '&' . $this->append . '">' . $tag . '</a>';
        } else {
            return " $tag";
        }
    }

    /**
     * Display the page links
     *
     * @access public
     * @return string
     */
    function renderNav($prefix = '<span class="page_link">', $suffix = '</span>') {
        if ($this->total_rows == 0)
            return FALSE;

        $batch = ceil($this->page / $this->links_per_page );
        $end = $batch * $this->links_per_page;
        if ($end == $this->page) {
            //$end = $end + $this->links_per_page - 1;
        //$end = $end + ceil($this->links_per_page/2);
        }
        if ($end > $this->max_pages) {
            $end = $this->max_pages;
        }
        $start = $end - $this->links_per_page + 1;
        $links = '';

        for($i = $start; $i <= $end; $i ++) {
            if ($i == $this->page) {
                $links .= $prefix . " $i " . $suffix;
            } else {
                $links .= ' ' . $prefix . '<a href="' . $this->php_self . '?page=' . $i . '&' . $this->append . '">' . $i . '</a>' . $suffix . ' ';
            }
        }

        return $links;
    }

    /**
     * Display full pagination navigation
     *
     * @access public
     * @return string
     */
    function renderFullNav() {
        return $this->renderFirst() . '&nbsp;' . $this->renderPrev() . '&nbsp;' . $this->renderNav() . '&nbsp;' . $this->renderNext() . '&nbsp;' . $this->renderLast();
    }

    /**
     * Set debug mode
     *
     * @access public
     * @param bool $debug Set to TRUE to enable debug messages
     * @return void
     */
    function setDebug($debug) {
        $this->debug = $debug;
    }
}
?>

The paginate method returns false if there are no records, yet you do not check if it does.

if ($pager->paginate())
{
    while ($data = mysql_fetch_array($result)) { /**/ }
}
else
{
    // no records or error.
}

I thought you were using/trying to use codeigniter? What happened?

Member Avatar

I thought you were using/trying to use codeigniter? What happened?

He saw the light heh heh. Sorry, carry on...

@pritaes:

I still do not know where to insert the code that you recommends:

The paginate method returns false if there are no records, yet you do not check if it does.

    if ($pager->paginate())
    {
    while ($data = mysql_fetch_array($result)) { /**/ }
    }
    else
    {
    // no records or error.
    }

I did not actually program this myself. I find ready-to-use-script on the internet. It actually works, it just shows error if there the records are empty.

Line 16 of your OP snippet...

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.