-1

次の関数はページをロードし続け、問題が見つかりません。

値は次のとおりです。

$per_page = 10;  
$soort = 2;  
$query = "SELECT id, name, email, status FROM users WHERE company_id = " . $id . " AND status != 3";  
$array = array("#", "Naam", "E-mail", "Status", "Tools");  

$id$_GETURL にあります。

コード:

public function table($per_page, $soort, $query, $array)
{
    // elke soort table moet hier een table if() hebben. 
    // standaart value's
    $i = 0;
    $countx = count($array);
    $x = 1;

    // checkt of de td nummer even of oneven is zodat het een andere style krijgt.
    function get()
    {
        // de naam van de $_GET
        $prefix = "p";
        return $prefix;
    }

    function evencheck($number)
    {
        if (is_int($number / 2))
        {
            return'col1';
        }
        else
        {
            return'col2';
        }
    }

    if ($result = $this->db->query($query))
    {
        if ($result->num_rows != 0)
        {
            $total_results = $result->num_rows;
            // Kijken hoeveel pagina's er moeten komen voor de pagination.
            $total_pages = ceil($total_results / $per_page);

            if (isset($_GET[get()]) && is_numeric($_GET[get()]))
            {
                $show_page = $_GET[get()];

                // make sure the $show_page value is valid
                if ($show_page > 0 && $show_page <= $total_pages)
                {
                    $start = ($show_page - 1) * $per_page;
                    $end = $start + $per_page;
                }
                else
                {
                    // error - show first set of results
                    $start = 0;
                    $end = $per_page;
                }
            }
            else
            {
                // if page isn't set, show first set of results
                $start = 0;
                $end = $per_page;
            }

            // display pagination
            // display data in table
            echo "<table>";
            echo "<tr class='headtr'>";
            // maakt de head van de table via een array die is mee gegeven aan de function.
            foreach ($array as $headtable)
            {
                echo "<td class='headtd'><b>" . $headtable . "<b></td>";
            }
            echo "</tr>";

            echo "<tr>";


            // Ik zie zelf nog geen andere oplossing dan dit. 
            // Vooral omdat de tables zo veel van elkaar verschillen.
            $result->data_seek($i);
            $row = $result->fetch_row();
            $count = count($row);
            if ($soort == 1)
            {
                //logs
                // stemt de while af met de array input, dus -1 omdat de array begint met 0.
                $x = $count - 1;
                while ($i <= $x)
                {
                    echo "<td class='" . evencheck($i) . "'>" . $row[$i] . "</td>";
                    $i++;
                }
            }
            if ($soort == 2)
            {
                //users/bedrijven (ADMIN module) 
                $rLog = $this->rights('admin/log');
                $rEdit = $this->rights('admin/bedrijven/gebruikers/bewerken');
                $rLogin = $this->rights('admin/bedrijven/gebruikers/inloggen');
                $rDelete = $this->rights('admin/bedrijven/gebruikers/verwijderen');

                // Een extra TD voor de tools achter bij de table.
                $x = $count;

                while ($i <= $x)
                {
                    if ($i == $total_results)
                    {
                        break;
                    }
                    $result->data_seek($i);
                    $row = $result->fetch_row();
                    echo "<tr>";




                    echo "<td class='" . evencheck($i) . "'>" . $row[0] . "</td>";

                    echo "<td class='" . evencheck($i) . "'>" . $row[1] . "</td>";
                    echo "<td class='" . evencheck($i) . "'>" . $row[2] . "</td>";
                    echo "<td class='" . evencheck($i) . "'>" . ($row[3] == 1 ? 'Actief' : 'Geblokkeerd') . "</td>";
                    //tools td.
                    echo "<td id='tools' class='" . evencheck($i) . "'>" . ($rLog ? '<a href="/admin/log/' . $row[0] . '">' . LOG . '</a>' : '') . '
                    ' . ($rEdit ? '<a href="/admin/bedrijven/gebruikers/bewerken/' . $row[0] . '">' . EDIT . '</a>' : '') . '
                    ' . ($rLogin ? '<a href="javascript:;" onClick="sure(\'Wilt u een verzoek versturen naar ' . htmlentities($row[1]) . ' voor ondersteuning?\', \'/admin/bedrijven/gebruikers/inloggen/' . $row[0] . '\');">' . LOGIN . '</a>' : '') . '
                    ' . ($rDelete ? '<a href="javascript:;" onClick="sure(\'Weet u zeker dat u de gebruiker ' . htmlentities($row[1]) . ' wilt verwijderen?\', \'/admin/bedrijven/gebruikers/verwijderen/' . $row[0] . '\');">' . DEL . '</a>' : '')
                    . "</td>";
                    echo "</tr>";
                }
                //paginstion er aan plakken
                $this->pagination($per_page, $total_results, $total_pages, $countx);
            }
        }
        else
        {
            echo "No results to display!";
        }
    }
    else
    {
        echo "Er is iets fout gegaan!<br>" . $db->error;
    }
}

Firebug 経由のコンソール:

Firebug 経由のコンソール

ページネーション機能に問題がないことはすでに確認済みです。

4

1 に答える 1

4

無限whileループがあります:

while ($i <= $x) { ... }

$i++次のように、while ループの終了前に追加するのを忘れていると思います。

while ($i <= $x) {
    // Your code here

    $i++;
}
于 2013-06-20T10:30:46.990 に答える