За последние 24 часа нас посетили 16775 программистов и 1679 роботов. Сейчас ищут 858 программистов ...

Вывод категорий по алфавиту с заголовками

Тема в разделе "PHP для новичков", создана пользователем middle, 16 июн 2012.

  1. middle

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

    С нами с:
    1 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте, возникла следующая проблемка, нужно сделать вывод категорий из БД по алфавиту так, что-бы перед каждой новой буквой выводился заголовок, например перед словами на букву "А", выводился заголовок с буквой "A", перед "Б", заголовок с "Б" и т.д.

    Думаю можно сделать цикл, который будет проверять первую букву слова и выводить её перед ним, но тогда вывод будет перед каждым словом, как сделать, чтобы он выводил этот заголовок только тогда, когда первая буква слова меняется?

    Спасибо.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    запомни предыдущую и сравни с текущей. если не равно - выводи.
     
  3. middle

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

    С нами с:
    1 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    Возникла проблемка с опеределением первой буквы, подскажите как её выбрать, не могу найти подходящую функцию

    Например, как из переменной $row['title'] выбрать первую букву?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а как вы искали, что не нашли? какие пробовали, что они не подошли?
     
  5. middle

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

    С нами с:
    1 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    $t = $r_subcat['title']{0};
    echo $t;

    Вывело.

    А как запомнить предыдущую?
    Код (PHP):
    1. do {
    2. $t = $r_subcat['title']{0};
    3. if (!empty($r_subcat['id'])) {
    4.     $subcat .= "<h3>$t</h3>";
    5.     $subcat .= "<div>$r_subcat[title]</div>";
    6.                              }
    7. } while($r_subcat = @mysql_fetch_assoc($res_subcat));
    8.  
    Вот сам цикл.[/code]
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  7. middle

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

    С нами с:
    1 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    А как выбрать предыдущее значение? Если я заведу её в цикле, он внесет в нее тоже самое значение, а если выбирать первую букву перед циклом, то она не будет меняться.
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. while($r_subcat = mysql_fetch_assoc($res_subcat)) {
    2. $r_subcat['title']//Ковычки делайте... и не нужно там "@"
    3. } 
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а в самом конце цикла присваивайте этой переменной текущее значение $t и тогда в начале следующего прохода она будет держать в себе предыдущее значение $t, а вы вычислите новое, сравните их и когда они не совпадут - буква сменилась.