[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт не правильно отрабатывает.
Азмадан
Доброго времени суток уважаемые програмисты. Начал учить PHP по ходу написания интересующих меня скриптов и сталкнулся со следующей проблемой.
Скрипт почти правильно отрабатывает только вот не могу поправить одну проблему.
Если к скрипту новостей обратится через http://localhost/ он выдаёт белую страницу и номера страниц, а если обратится по адресу http://localhost/?page=0 то всё нормально отображается.
Помогите пожалуйсто ниже приважу код скрипта.
PHP
<?php
include 
"config.php";
/* Get SQL records */
if ($_GET['id']=='') {
    // Count the number of pages we actually have
    $sql = mysql_query("SELECT count(1) as totalPages FROM news");
    $record = mysql_fetch_array($sql);
    $totalPages = $record['totalPages'] / $itemsPerPage;
    
    
// Show the actual records and pagination
    if($_GET['page'] =='') {
        $pageNumber = $_GET['page'];
        $pageNumber = 0;
    }
    else {
        $pageNumber $_GET['page'];
        $pageNumber1 = ceil( $pageNumber * $itemsPerPage);
        $sql = mysql_query("SELECT * FROM news LIMIT $pageNumber1, " . $itemsPerPage);
        while ($record = mysql_fetch_array($sql)) {
            print "<div class=\"menu_box1\">";
            print "<div class=\"menu_title\"><strong>".$record['title']."</strong></div>";
            print "<div class=\"menu_box\">".$record['news_short']."</div>";
            print "<div class=\"menu_title\">
            <table width=\"100%\" border=\"0\">
            <tr>
            <td><div align=\"left\">Автор: "
.$record['n_author']."</div></td>
            <td><div align=\"right\"><a href=?id="
.$record['id'].">подробнее</a></div></td>
            </tr>
            </table>
            </div>"
;
            print "</div><br>";
        }
    }
    echo "<div align=\"center\">";
    for($i = 0; $i <= $totalPages; $i++){
        echo "<a href=?page=".$i.">".$i ."</a> ";
    }
    echo "</div>";
    //Clearing of the memory occupied with results of inquiry
    mysql_free_result($sql);

    //Closing MySQL connection
    mysql_close($link);
}
 
else 
{
    $id = $_GET['id'];
    $sql2 = mysql_query("SELECT * FROM news WHERE id='".$id."'");
    if (mysql_num_rows($sql2) == 1) {
        $r = mysql_fetch_array($sql2);
        print "<div class=\"menu_box1\">";
        print "<div class=\"menu_title\"><strong>".$r['title']."</strong></div>";
        print "<div class=\"menu_box\">".$r['news_full']."</div>";
        print "<div class=\"menu_title\">".$r['n_author']."<br>Просмотров: ".$r['views']."</div>";
        print "</div><br>";
        mysql_query("UPDATE news SET views=views+1 WHERE id='".$id."'");
    }
}


интклюдятся только настройки для конекта к базе данных.

Заранее примного благодарен.



Спустя 18 минут, 37 секунд (1.07.2009 - 07:57) twin написал(а):
Цитата
а если обратится по адресу http://localhost/?page=0 то всё нормально отображается.

А если так:
Цитата
http://localhost/?page=1
?
Не нормально он отображает, просто новостей еще мало и по этому так кажется. Проблема тут:
PHP
if($_GET['page'] =='') {
        $pageNumber = $_GET['page'];
        $pageNumber = 0;
    }
Дословно можно перевести:
Если $_GET['page'] пуста, то $pageNumber будет присвоено значение $_GET['page'] (то есть тоже пустота), и тут же $pageNumber будет присвоен 0. А если $_GET['page'] не пуста, то есть содержит хотя бы 0, то включится блок отображения. Который будет всегда показывать строки от 0 до $itemsPerPage, какое бы ты значение не присвоил $_GET['page'].
Делай выводы.

Спустя 13 минут, 15 секунд (1.07.2009 - 08:10) Азмадан написал(а):
Спосибо всё поправилось и нормально работает.

Спустя 30 минут, 14 секунд (1.07.2009 - 08:41) PandoraBox2007 написал(а):
поправка для самозащиты
PHP
$_GET['page'] = intval($_GET['page']);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.