За последние 24 часа нас посетил 32991 программист и 1821 робот. Сейчас ищут 882 программиста ...

Как сделать автонумерацию

Тема в разделе "Вопросы от блондинок", создана пользователем greenzlat, 5 ноя 2008.

  1. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    У меня ест балица. В ней 3 поля: id, pole1, pole2
    Вывожу в таблицу
    Код: Выделить всё
    Код (Text):
    1. do {printf
    ну и т.д. но при сортировки получается так:
    |№|pole1|pole2|
    | 2|ааааа|рррр|
    | 1|sddsfs|sdfsf|
    | 4|ааdfb|ррdf|
    | 3|аsdаа|рfhр|


    Как же сделать чтоб № был по порядку?? Но сортировка мне нужна не по ID а по pole1! Надо чтоб нумерация шла автоматически
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. $i = 0;
    2. while ($row = mysql_fetch_assoc($res)) {
    3.     print ++$i . '|' . $row['pole1'];
    4. }
     
  3. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Код (Text):
    1. $result = mysql_query ("SELECT * FROM a  ORDER BY author ASC",$db);
    2. $myrow = mysql_fetch_array ($result);
    3.  
    4. printf (" <table align='center' cellpadding='0' cellspacing='0' '>
    5. <tr>
    6.             <td width='32' height='22'>№</td>
    7.             <td width='345'>Автор</td>
    8.             <td width='90'>Количество песен</td>
    9.             <td width='90'>Количество GPT</td>
    10.           </tr>
    11. ");
    12. do {
    13. printf ("  
    14.           <tr>
    15.             <td align='center'>??????????</td>
    16.             <td>&nbsp;%s</td>
    17.             <td align='center'><strong>%s</strong></td>
    18.             <td align='center'><strong>%s</strong></td>
    19.           </tr>",
    20. $myrow["silka"],$myrow["kol_pesen"],$myrow["kol_gpt"]);
    21.    }
    22.    while ($myrow = mysql_fetch_array ($result));
    23.    printf ("</table>");

    Вот вместо ????????? надо чтоб нумерация шла!! Че то не врубаюсь как организовать!
     
  4. Sephiroth_Lukaw

    Sephiroth_Lukaw Активный пользователь

    С нами с:
    26 апр 2008
    Сообщения:
    62
    Симпатии:
    0
    Код (Text):
    1.  
    2. $i = 0;
    3.    while ($myrow = mysql_fetch_array ($result)) {
    4.    $i++;
    5.   printf ("  
    6.           <tr>
    7.             <td align='center'>%s</td>
    8.             <td> %s</td>
    9.             <td align='center'><strong>%s</strong></td>
    10.             <td align='center'><strong>%s</strong></td>
    11.           </tr>",
    12. $i, $myrow["silka"],$myrow["kol_pesen"],$myrow["kol_gpt"]);
    13.    }
    14. print "</table>";
     
  5. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    Код (Text):
    1.  
    2. $i = 0;
    3. ...
    4. <td align='center'>%d</td>
    5. ...
    6. ", ++$i, $myrow["silka"],$myrow["kol_pesen"],$myrow["kol_gpt"]);
     
  6. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Код (Text):
    1. $result = mysql_query ("SELECT id,author,kol_pesen,kol_gpt,kol_not,silka FROM a  ORDER BY author ASC LIMIT $start, $num  ",$db);
    2. $myrow = mysql_fetch_array ($result);
    3.  
    4. printf (" <table align='center' cellpadding='0' cellspacing='0' class='tablica_bukwi'>
    5. <tr class='tablica_bukwi_jach'>
    6.             <td width='32' height='22'>№</td>
    7.             <td width='345'>Автор</td>
    8.             <td width='90'>Количество песен</td>
    9.             <td width='90'>Количество GPT</td>
    10.           </tr>
    11. ");
    12. do {
    13.  
    14. $i = 0;
    15.    while ($myrow = mysql_fetch_array ($result)) {
    16.    $i++;
    17.    
    18. printf ("  
    19.           <tr class='cwet_text_tabl'>
    20.             <td align='center'>%s</td>
    21.             <td>&nbsp;%s</td>
    22.             <td align='center'><strong>%s</strong></td>
    23.             <td align='center'><strong>%s</strong></td>
    24.           </tr>",
    25. $i, $myrow["silka"],$myrow["kol_pesen"],$myrow["kol_gpt"]);
    26.    }
    27.    while ($myrow = mysql_fetch_array ($result));
    28.    printf ("</table>");
    Все так сделал и выдает ошисинтаксическую ошибку:

    Parse error: syntax error, unexpected $end in Z:\home\test.ru\www\a\a.php on line 101

    а 101 строка уже пустая она идет после тега
    Код (Text):
    1. </html>
     
  7. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    похоже у тебя где-то закрывающей фигурной скобки на хватает.
     
  8. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Да действительно не хватало }!
    Но теперь возникла другая проблема. У меня весь этот вывод заключен в постраничный вывод и на каждой странице нумерация опять начинается с 1. А как же сделать она продолжалась?

    Вот код страницы:
    Код (Text):
    1.           <?php
    2.         $result77 = mysql_query("SELECT str FROM options", $db);
    3. $myrow77 = mysql_fetch_array($result77);
    4. $num = $myrow77["str"];
    5. @$page = $_GET['page'];
    6. $result00 = mysql_query("SELECT COUNT(*) FROM a ");
    7. $temp = mysql_fetch_array($result00);
    8. $posts = $temp[0];
    9. $total = (($posts - 1) / $num) + 1;
    10. $total =  intval($total);
    11. $page = intval($page);
    12. if(empty($page) or $page < 0) $page = 1;
    13.   if($page > $total) $page = $total;
    14. $start = $page * $num - $num;
    15.  
    16. $result = mysql_query ("SELECT id,author,kol_pesen,kol_gpt,kol_not,silka FROM a  ORDER BY author ASC LIMIT $start, $num  ",$db);
    17. $myrow = mysql_fetch_array ($result);
    18.  
    19. printf (" <table align='center' cellpadding='0' cellspacing='0' class='tablica_bukwi'>
    20. <tr class='tablica_bukwi_jach'>
    21.             <td width='32' height='22'>№</td>
    22.             <td width='345'>Автор</td>
    23.             <td width='90'>Количество песен</td>
    24.             <td width='90'>Количество GPT</td>
    25.           </tr>
    26. ");
    27. do {
    28. $i = 0;
    29.    while ($myrow = mysql_fetch_array ($result)) {
    30.    $i++;
    31.    
    32. printf ("    
    33.           <tr class='cwet_text_tabl'>
    34.             <td align='center'>%s</td>
    35.             <td> %s</td>
    36.             <td align='center'><strong>%s</strong></td>
    37.             <td align='center'><strong>%s</strong></td>
    38.           </tr>",
    39. $i, $myrow["silka"],$myrow["kol_pesen"],$myrow["kol_gpt"]);
    40.    } }
    41.    while ($myrow = mysql_fetch_array ($result));
    42.    printf ("</table>");
    43.  
    44. if ($page != 1) $pervpage = '<a href=a.php?'.$cat.'&page=1>Первая</a> | <a href=a.php?'.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
    45. if ($page != $total) $nextpage = ' | <a href=a.php?'.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=a.php?'.$cat.'&page=' .$total. '>Последняя</a>';
    46. if($page - 5 > 0) $page5left = ' <a href=a.php?'.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
    47. if($page - 4 > 0) $page4left = ' <a href=a.php?'.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
    48. if($page - 3 > 0) $page3left = ' <a href=a.php?'.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
    49. if($page - 2 > 0) $page2left = ' <a href=a.php?'.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
    50. if($page - 1 > 0) $page1left = '<a href=a.php?'.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
    51. if($page + 5 <= $total) $page5right = ' | <a href=a.php?'.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
    52. if($page + 4 <= $total) $page4right = ' | <a href=a.php?'.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
    53. if($page + 3 <= $total) $page3right = ' | <a href=a.php?'.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
    54. if($page + 2 <= $total) $page2right = ' | <a href=a.php?'.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
    55. if($page + 1 <= $total) $page1right = ' | <a href=a.php?'.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
    56. if ($total > 1)
    57. {
    58. Error_Reporting(E_ALL & ~E_NOTICE);
    59. echo "<div class=\"pstrnav\">";
    60. echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
    61. echo "</div>";
    62. }
    63. ?> 
     
  9. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Как-нибудь так:

    $i = $page > 1 ? $page * результатов_на_страницу : 0;

    P.S. Ужасный код.
     
  10. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    А что есть лучше??
     
  11. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Конечно же можно написать код лучше, если изучать php не по Попову.
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  13. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
     
  14. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    greenzlat
    Я тебе показал как это сделать. Ты попробовал? Что не получилось?
     
  15. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    это невозможно, ещё месяц назад были единичные случии появления поповоучеников, а теперь каждый день!
     
  16. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Mr.M.I.T.
    Просто необходимо принять срочные меры по сокращению числа этих самых "недоучеников".
     
  17. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Код (Text):
    1. $i = 0;
    2. $i = $page > 1 ?$page *10 : 0;
    3.    while ($myrow = mysql_fetch_array ($result)) {
    4.    $i++;
    Сделал вот так.
    Вывод идет по 20 записей из БД на страницу. Но при переходе с 1 на 2 страницу из базы в 21 строку таблицы вписывается 22 строка из базы то есть теряется запись, точнее он ее пропускает почему то. И при переходе с 2 на 3 страницу последняя была 40 запись а на 3 странице появляется 31 почему нумерация не продолжается 41, 42, 43, и т.д.??
     
  18. dAllonE

    dAllonE Guest

  19. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Ну не судите строго!!! Подскажите!??
     
  20. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    $i = 0; ненужно

    Тогда почему ты * на 10 а не на 20 ?
     
  21. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Подумай своей головой, или в курсах было сказано, если что то не получается, то не в кое случае не пытайтесь самостоятельно решить проблему, лучше пускай её решить кто-нибудь за Вас. ??? :) Так вот, тут такое только за деньги.
     
  22. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Код (Text):
    1. do {
    2. $i = $page > 1 ?$page *20 : 0;
    3.    while ($myrow = mysql_fetch_array ($result)) {
    4.    $i++;
    Потому что если вот так сделать, то на 1 странице выводит 20 записей с 1 по 20, а на второй с 41 по 60!!!
     
  23. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Ладно, понятно что сам не додумается, последний раз помогаю Поповским ученикам.
    $i = $start;
    Дальше придётся самому.

    Ответ всё время был перед твоими глазами, $start = $page * $num - $num;. Пытался подвести тебя к нему, но понял что бесполезно. В общем, нельзя научится программировать за 33 часа 22 минуты... Особенно если вообще не думать.
     
  24. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    По-моему только в школе училки, которые никогда в жизни не программили, говорят писать do {} while
     
  25. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Это то я понял!! А почему у меня при переходе с одной страницы на другую теряется один порядковый номер??