ФорумПрограммированиеPHP для идиотов → Вопрос по построчной навигации

Вопрос по построчной навигации

  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 12:11

    Так всем спасибо)Предыдушие проблемы решил.
    Теперь буду делать построчную навигацию, как У ВАС В ПРИМЕРЕ!
    Там все более менее понятно,кроме составления sql запроса.У меня выводятся данные вот таким простинким запросом

    $post=mysql_query("SELECT * FROM `posts` ORDER BY id DESC LIMIT 6");
    while ($arr=mysql_fetch_array($post))
    {

    echo &#39;<b>&#39;.$arr[&quot;name&quot;].&#39; в &#39;.&#39;&#39;.$arr[&quot;date&quot;].&#39; сказал:&#39;.&#39;</b>&#39;.&#39;<br/>&#39;.&#39;<i>&#39;.bb_code($arr[&quot;text&quot;]).&#39;</i>&#39;.&#39;<br/>&#39;.&#39;<br/>&#39;;
    }

    тут у меня массив и поэтому мне понятно что такое $arr[&quot;name&quot;] $arr[&quot;text&quot;] $arr[&quot;date&quot;].

    Так вот теперь


    $nums = 10;

    if (isset($_GET[&#39;page&#39;])) {
    $page = intval($_GET[&#39;page&#39;]);
    }
    else {
    $page = 1;
    }

    $query = &quot;SELECT COUNT(*) AS `counter`
    FROM `table`&quot;;
    $sql = mysql_query($query) or die(mysql_error());
    $row = mysql_fetch_assoc($sql);

    $elements = $row[&#39;counter&#39;];

    $pages = ceil($elements/$nums);


    if ($page < 1) {
    $page = 1;
    }
    elseif ($page > $pages) {
    $page = $pages;
    }


    $start = ($page-1)*$nums;

    // когда у нас в таблице нет записей
    if ($start < 0) $start = 0;

    $query = &quot;SELECT *
    FROM `table`
    LIMIT {$start}, {$nums}&quot;;
    $sql = mysql_query($query) or die(mysql_error());

    while ($row = mysql_fetch_assoc($sql)) {
    // здесь выводим наши записи из базы
    }




    // далее нам надо прицепить листалку

    $neighbours = 6;
    $left_neighbour = $page - $neighbours;
    if ($left_neighbour < 1) $left_neighbour = 1;

    $right_neighbour = $page + $neighbours;
    if ($right_neighbour > $pages) $right_neighbour = $pages;

    if ($page > 1) {
    print &#39; <a href=&quot;?page=1&quot;>начало</a> … <a href=&quot;?page=&#39; . ($page-1) . &#39;&quot;>←сюда</a> &#39;;
    }

    for ($i=$left_neighbour; $i<=$right_neighbour; $i++) {
    if ($i != $page) {
    print &#39; <a href=&quot;?page=&#39; . $i . &#39;&quot;>&#39; . $i . &#39;</a> &#39;;
    }
    else {
    // выбранная страница
    print &#39; <b>&#39; . $i . &#39;</b> &#39;;
    }
    }

    if ($page < $pages) {
    print &#39; <a href=&quot;?page=&#39; . ($page+1) . &#39;&quot;>туда→</a> … <a href=&quot;?page=&#39; . $pages . &#39;&quot;>конец</a> &#39;;
    }



    у вас тут…перейду в новый пост
  • Troy

    Сообщения: 2533 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 12:19, спустя 7 минут 23 секунды

    всё , переучиваюсь , раньше делал по 2 отступа теперь как в примере 4 буду {+++11+++} 400 сообщений {+++12+++} ура
  • rider-sx

    Сообщения: 2717 Репутация: N Группа: Адекваты

    Spritz 17 июля 2009 г. 12:19, спустя 13 секунд

    Ы чем проблема то?
  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 12:20, спустя 34 секунды

    У вас тут имеется два запроса

    $query = &quot;SELECT COUNT(*) AS `counter`
               FROM `table`&quot;;



    $query = &quot;SELECT *
               FROM `table`
               LIMIT {$start}, {$nums}&quot;;


    Вопрос:как мне теперь эти запры приспособить к моему скрипту


    Так?
    SELECT COUNT(*) AS `counter`
               FROM `posts`&quot;;

    $query = &quot;SELECT *
               FROM `post`
               LIMIT {$start}, {$nums}&quot;;



    и все??? скрипт будет работь как надо??


    Можно тут вместо
    while ($row = mysql_fetch_assoc($sql)) {
       // здесь выводим наши записи из базы
    }


    mysql_fetch_assoc использовать mysql_fetch_array,чтобы я смог отформатировать вывод как тут

    $post=mysql_query(&quot;SELECT * FROM `posts` ORDER BY id DESC LIMIT 6&quot;);
    while ($arr=mysql_fetch_array($post))
    {
       
       echo &#39;<b>&#39;.$arr[&quot;name&quot;].&#39; в &#39;.&#39;&#39;.$arr[&quot;date&quot;].&#39; сказал:&#39;.&#39;</b>&#39;.&#39;<br/>&#39;.&#39;<i>&#39;.bb_code($arr[&quot;text&quot;]).&#39;</i>&#39;.&#39;<br/>&#39;.&#39;<br/>&#39;;
    }


    вот такие дела,надеюсь вопросы не вызовут вопросов
    .
  • Troy

    Сообщения: 2533 Репутация: N Группа: Джедаи

    Spritz 17 июля 2009 г. 12:21, спустя 53 секунды


    $post=mysql_query(&quot;SELECT * FROM `posts` ORDER BY id DESC LIMIT 6&quot;);
    while ($arr=mysql_fetch_array($post))
    {

    echo &#39;<b>&#39;.$arr[&quot;name&quot;].&#39; в &#39;.&#39;&#39;.$arr[&quot;date&quot;].&#39; сказал:&#39;.&#39;</b>&#39;.&#39;<br/>&#39;.&#39;<i>&#39;.bb_code($arr[&quot;text&quot;]).&#39;</i>&#39;.&#39;<br/>&#39;.&#39;<br/>&#39;;
    }


    пиздец

  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 12:23, спустя 2 минуты 16 секунд

    Вопроса не понял {+++107+++}

    ….
    и все??? скрипт будет работь как надо??
    ….


    да, пробуй


    Можно тут вместо
    while ($row = mysql_fetch_assoc($sql)) {
       // здесь выводим наши записи из базы
    }


    mysql_fetch_assoc использовать mysql_fetch_array,чтобы я смог отформатировать вывод как тут

    $post=mysql_query(&quot;SELECT * FROM `posts` ORDER BY id DESC LIMIT 6&quot;);
    while ($arr=mysql_fetch_array($post))
    {
       
       echo &#39;<b>&#39;.$arr[&quot;name&quot;].&#39; в &#39;.&#39;&#39;.$arr[&quot;date&quot;].&#39; сказал:&#39;.&#39;</b>&#39;.&#39;<br/>&#39;.&#39;<i>&#39;.bb_code($arr[&quot;text&quot;]).&#39;</i>&#39;.&#39;<br/>&#39;.&#39;<br/>&#39;;
    }


    вот такие дела,надеюсь вопросы не вызовут вопросов
    .

    да, можно, делай
    adw/0
  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 12:30, спустя 6 минут 56 секунд



    $post=mysql_query(&quot;SELECT * FROM `posts` ORDER BY id DESC LIMIT 6&quot;);
    while ($arr=mysql_fetch_array($post))
    {

    echo &#39;<b>&#39;.$arr[&quot;name&quot;].&#39; в &#39;.&#39;&#39;.$arr[&quot;date&quot;].&#39; сказал:&#39;.&#39;</b>&#39;.&#39;<br/>&#39;.&#39;<i>&#39;.bb_code($arr[&quot;text&quot;]).&#39;</i>&#39;.&#39;<br/>&#39;.&#39;<br/>&#39;;
    }


    пиздец


    если ты постишь,чтобы набирать посты то лучше не делай этого.Это просьба.Я как умел так и напрограммировал.

    Щас попробую…И переименуйте тему,я сделал ошибку
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 12:33, спустя 2 минуты 51 секунду

    code9,

    mysql_fetch_assoc - вернет ассоциативные массивы
    mysql_fetch_array - вернет и ассоциативный массив и числовой

    так как ты используешь ассоциативные индексы, то тебе всеравно какую из функций выбирать.
    adw/0
  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 12:38, спустя 5 минут 7 секунд

    а что тут такое `counter`

    $query = &quot;SELECT COUNT(*) AS `counter`
               FROM `table`&quot;;
    .
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 12:39, спустя 1 минуту 44 секунды

    code9, AS - сокращение от алиас (псевдоним) {+++30+++}
    COUNT(*) AS `counter`
    то есть тут идет именование
    adw/0
  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 12:56, спустя 16 минут 47 секунд

    ясно. Спасибо,все получилось))Последний на сегодня вопрос не по теме)) Как форматировать вывод(с этим я вожусь уже со дня когда я начал изучать пых).
    О чем я говорю:я,так как не могу это понять ограничиваю длину сообшения так
    $text = substr($_POST[&quot;text&quot;],0,102);


    иначе если в моем скрипте пользователь наберет подряд к примеру 500 символов,то мой табличный &quot;диз&quot; растягивается от одного края монитора к другому.Выглядит это примерно так


    имя:чета
    сообщение:
    павпагпгггггггггггггггггггггггггггггггггггггвспкгшспврсплгвкртсгриыипаугпаысипчрнгапырчиаовтаоваоврворавораовралволвоадвлавдлщкважвджвпдвжпдвж


    А мне нужно,чтобы через опр количество символов был перенос

    имя:чета
    сообщение:
    виалгпгврртплгмтрюкплрмлгкмрлрпгвмрпвкюмлрпвг мрпкшгвр
    кмлврпврмвмврмлгпркгвмрюплгкрвмгмкрвмгрюлмрпмкптвмпк
    кмвкмпвмшрпкмшпркмрврпкгмркшрпгкмрвпклврмвшмркмрвмш
    квкпшвмрвтпмв вмпквщрмвгшкрвмгшпркгмрвпгкрвмпгкрвгмрвг
    мовк

    Помогите))как это сделать
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 13:00, спустя 3 минуты 31 секунду

  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 13:11, спустя 11 минут 9 секунд

    о еее на на буржуйском описание(( может назавешь пару функций по теме?? wordwrap??
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 17 июля 2009 г. 13:20, спустя 9 минут 12 секунд

    code9, не на буржуйском, а на родном PHP. Если нравиться русские аналоги, то тебе 1С нужно.

    Выполни, но не спрашивай что он делает, попробуй сам разобраться.
    wordwrap(&#39;павпагпгггггггггггггггггггггггггггггггггггггвспкгшспврсплгвкртсгриыипаугпаысипчрнгапырчиаовтаоваоврворавораовралволвоадвлавдлщкважвджвпдвжпдвж&#39;, 102, &quot;<br />\n&quot;);
    {+++64+++} Пару? wordwrap, substr, mb_substr, сделать в css - overflow:hidden {+++45+++} code9, можно спросить? Сколько тебе лет и ты не знаком ли с Ермаком случайно?
    adw/0
  • code9

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 17 июля 2009 г. 13:34, спустя 13 минут 31 секунду

    Кто такой Ермак?С форматиование wordwrap разобрался. Почему меня после добавления сообщеня кидает на первую страницу?Тоесть даже если зайти на index.php гостя открывается на первой странице((что делать.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!