Используйте только первое слово, выведенное из MySQL, с заглавной буквы.

Я хочу, чтобы каждая буква первого слова, представленного MySQL и PHP, была заглавной, а остальные слова - строчными. Как это могло быть достигнуто?

Оно хранится в базе данных с заглавной только первой буквой, поэтому реальная хитрость заключается в том, чтобы остальные слова сохранялись в нижнем регистре.

Вот код, извлекающий слова из базы данных на сегодняшний день:

<?php

$query0  = "SELECT LCASE(ord) FROM `keywords` ORDER BY RAND()";
$result0 = mysql_query($query0);

while($row0 = mysql_fetch_array($result0, MYSQL_ASSOC))
{
$keyword = $row0['LCASE(ord)'];

echo "$keyword, ";

}
?>

person Christian L    schedule 21.03.2012    source источник
comment
Если он хранится в базе данных с заглавной буквы первого слова, почему бы просто не вернуться из базы данных...?   -  person hackartist    schedule 21.03.2012


Ответы (7)


Если я чего-то не понимаю...

<?
$count = 0;
while($row0 = mysql_fetch_array($result0, MYSQL_ASSOC))
{
    if ($count == 0) {
        $keyword = ucfirst($row0['LCASE(ord)']); // this will capitalize just the first letter
        $keyword = strtoupper($row0['LCASE(ord)']); // this will make the first word in all CAPS (choose which one you want)
    }
    else
        $keyword = strtolower($row0['LCASE(ord)']);

    echo "$keyword, ";
    $count++;

}
?>
person Jason    schedule 21.03.2012

Если я вас правильно понял, используйте метод php ucfirst($string)

person ioums    schedule 21.03.2012
comment
Проблема в том, что при этом будет заглавной первая буква каждого слова, а не только первая буква в первом напечатанном слове. Только одно слово для каждой записи в таблице mysql. - person Christian L; 21.03.2012

Я не понимаю, зачем вам это нужно, но это лучше сделать с помощью PHP:

$query0  = "SELECT ord FROM `keywords` ORDER BY RAND()";
$result0 = mysql_query($query0);

while($row0 = mysql_fetch_array($result0, MYSQL_ASSOC))
{
$keyword = ucfirst(strtolower($row0['ord']));

echo "$keyword, ";

}

ucfirst: первая буква в верхнем регистре
strtolower: вся строка в нижнем регистре

person benesch    schedule 21.03.2012
comment
Проблема в том, что при этом будет заглавной первая буква каждого слова, а не только первая буква в первом напечатанном слове. Только одно слово для каждой записи в таблице mysql. - person Christian L; 21.03.2012

Если данные хранятся в базе данных с заглавной буквы (как вы этого хотите?), почему вы намеренно пишете их в нижнем регистре в своем запросе?

Если я совсем запутался, вам нужна функция ucfirst:

echo ucfirst($keyword);

Редактировать

$index = strpos($word, ' ');
echo ucfirst(substr($word,0,$index)) . substr($word, $index);
person Collin Green    schedule 21.03.2012
comment
Проблема в том, что при этом будет заглавной первая буква каждого слова, а не только первая буква в первом напечатанном слове. Только одно слово для каждой записи в таблице mysql. - person Christian L; 21.03.2012

Попробуйте использовать псевдоним LCASE(ord) следующим образом:

<?php

$query0  = "SELECT LCASE(ord) LCaseValue FROM `keywords` ORDER BY RAND()";
$result0 = mysql_query($query0);

while($row0 = mysql_fetch_array($result0, MYSQL_ASSOC))
{
    $keyword = $row0['LCaseValue'];
    echo "$keyword, ";
}
?>
person RolandoMySQLDBA    schedule 21.03.2012

вы можете использовать

ucwords(-yourdata-);

это будет записывать каждое слово данных.

person Rick    schedule 23.05.2012

person    schedule
comment
Проблема в том, что при этом будет заглавной первая буква каждого слова, а не только первая буква в первом напечатанном слове. Только одно слово для каждой записи в таблице mysql. - person Christian L; 21.03.2012
comment
Было бы ненужным продолжать увеличивать $i. Так что поместите это в if, чтобы это произошло один раз. - person kasavbere; 21.03.2012